django-orchestra-test/orchestra/apps/domains/api.py

39 lines
1.1 KiB
Python

from rest_framework import viewsets
from rest_framework.decorators import link
from rest_framework.response import Response
from orchestra.api import router
from orchestra.apps.accounts.api import AccountApiMixin
from . import settings
from .models import Domain
from .serializers import DomainSerializer
class DomainViewSet(AccountApiMixin, viewsets.ModelViewSet):
model = Domain
serializer_class = DomainSerializer
filter_fields = ('name',)
def get_queryset(self):
qs = super(DomainViewSet, self).get_queryset()
return qs.prefetch_related('records')
@link()
def view_zone(self, request, pk=None):
domain = self.get_object()
return Response({
'zone': domain.render_zone()
})
def metadata(self, request):
ret = super(DomainViewSet, self).metadata(request)
names = ['DOMAINS_DEFAULT_A', 'DOMAINS_DEFAULT_MX', 'DOMAINS_DEFAULT_NS']
ret['settings'] = {
name.lower(): getattr(settings, name, None) for name in names
}
return ret
router.register(r'domains', DomainViewSet)