from django.shortcuts import render, redirect, reverse
from django.views.generic import ListView
from django.conf import settings

from rest_framework import generics, pagination
from rest_framework.views import APIView

import django_filters
from django_filters import rest_framework as filters

from .models import LofarData
from .serializers import LofarDataSerializer

# --- Filters ---
class LofarDataFilter(filters.FilterSet):
    class Meta:
        model = LofarData

        fields = {
            'sas_id': ['exact', 'icontains'],
        }

# ---------- GUI Views -----------

def index(request):
    atdb_host = settings.ATDB_HOST
    return render(request, "lofardata/index.html", {'atdb_host': atdb_host})


# ---------- REST API views ----------

class LofarDataView(generics.ListCreateAPIView):
    model = LofarData
    serializer_class = LofarDataSerializer

    queryset = LofarData.objects.all().order_by('sas_id')

    # using the Django Filter Backend - https://django-filter.readthedocs.io/en/latest/index.html
    filter_backends = (filters.DjangoFilterBackend,)
    filter_class = LofarDataFilter