68 lines
1.9 KiB
Python
68 lines
1.9 KiB
Python
from django.shortcuts import render
|
|
from .models import TLD, RootZone
|
|
from rest_framework import serializers, viewsets
|
|
from django.db.models import Q
|
|
|
|
|
|
# Create your views here.
|
|
|
|
# REST API !
|
|
class TLDSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = TLD
|
|
fields = '__all__'
|
|
|
|
|
|
class TLDViewSet(viewsets.ModelViewSet):
|
|
queryset = TLD.objects.all()
|
|
serializer_class = TLDSerializer
|
|
http_method_names = ['get', 'head']
|
|
|
|
def get_queryset(self):
|
|
queryset = TLD.objects.all().order_by('tld')
|
|
query_params = self.request.query_params.copy()
|
|
|
|
# Remove 'format' from query_params
|
|
query_params.pop('format', None)
|
|
query_params.pop('page', None)
|
|
|
|
# Construct filters dynamically
|
|
filters = Q()
|
|
for key, value in query_params.items():
|
|
field_lookup = f"{key}__exact" # Assuming exact match for simplicity
|
|
filters &= Q(**{field_lookup: value})
|
|
|
|
# Apply filters to queryset
|
|
queryset = queryset.filter(filters)
|
|
return queryset
|
|
|
|
|
|
class RootZoneSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = RootZone
|
|
fields = '__all__'
|
|
|
|
|
|
class RootZoneViewSet(viewsets.ModelViewSet):
|
|
queryset = RootZone.objects.all().order_by('-name')
|
|
serializer_class = RootZoneSerializer
|
|
http_method_names = ['get', 'head']
|
|
|
|
def get_queryset(self):
|
|
queryset = RootZone.objects.all()
|
|
query_params = self.request.query_params.copy()
|
|
|
|
# Remove 'format' from query_params
|
|
query_params.pop('format', None)
|
|
query_params.pop('page', None)
|
|
|
|
# Construct filters dynamically
|
|
filters = Q()
|
|
for key, value in query_params.items():
|
|
field_lookup = f"{key}__exact" # Assuming exact match for simplicity
|
|
filters &= Q(**{field_lookup: value})
|
|
|
|
# Apply filters to queryset
|
|
queryset = queryset.filter(filters)
|
|
return queryset
|