Files
api.digisnaxx/events/views.py
2026-02-06 10:31:44 -05:00

90 lines
3.6 KiB
Python

from django.shortcuts import render
from datetime import datetime, timedelta
import pytz, random
from .models import *
from .serializers import *
from django.db.models import Q
from django.db.models import Count
from rest_framework import generics
from rest_framework.decorators import authentication_classes, permission_classes
from rest_framework.authentication import SessionAuthentication, BasicAuthentication
from rest_framework.permissions import IsAuthenticated
# from durin.auth import TokenAuthentication
# from durin.views import APIAccessTokenView
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework import filters
from rest_framework.response import Response
from rest_framework_api_key.permissions import HasAPIKey
td = timedelta(hours=7)
odt = datetime.now() - td
# Create your views here.
class CalAPIView(generics.ListAPIView):
serializer_class = CalSerializer
queryset = Calendar.objects.all()
# queryset = Calendar.objects.filter(published=True)
permission_classes = [HasAPIKey]
class EventsAPIView(generics.ListAPIView):
serializer_class = EventSerializer
# queryset = Event.objects.filter(show_date__gte=odt).order_by('show_day')
queryset = Event.objects.all()
# filter_backends = [DjangoFilterBackend, filters.SearchFilter]
# filterset_fields = ['show_title', 'event_type', 'venue__name','show_day', 'calendar__shortcode', 'show_date',]
# search_fields = ['show_title', 'event_type','show_day', 'venue__name', 'calendar__shortcode',]
# permission_classes = [HasAPIKey]
def get_queryset(self):
calendar = self.request.GET.get('calendar__shortcode')
show_day = self.request.GET.get('show_date')
if self.request.GET.get('event_type') != None:
event_type = self.request.GET.get('event_type')
queryset = Event.objects.filter(event_type=event_type,calendar__shortcode=calendar,show_date__gte=show_day).order_by('show_date')[:126]
return queryset
queryset = Event.objects.filter(calendar__shortcode=calendar,show_date__gte=show_day).order_by('show_date')[:126]
return queryset
class PromoAPIView(generics.ListAPIView):
serializer_class = PromoSerializer
queryset = Promo.objects.filter(published=True)
filterset_fields = ['organization__name', 'calendar__shortcode',]
search_fields = ['organization__name', 'calendar__shortcode',]
# permission_classes = [HasAPIKey]
def get_queryset(self):
calendar = self.request.GET.get('calendar__shortcode')
queryset = Promo.objects.filter(published=True, calendar__shortcode=calendar).order_by('?')
return queryset
class BizAPIView(generics.ListAPIView):
serializer_class = OrganizationSerializer
queryset = Organization.objects.all()[:10]
# filterset_fields = ['organization__name', 'calendar__shortcode',]
# search_fields = ['organization__name', 'calendar__shortcode',]
permission_classes = [HasAPIKey]
# def get_queryset(self):
# calendar = self.request.GET.get('calendar__shortcode')
# queryset = Promo.objects.filter(published=True, calendar__shortcode=calendar).order_by('?')
# return queryset
# class EventsTokenAPIView(APIAccessTokenView):
# serializer_class = EventSerializer
# authentication_classes = (TokenAuthentication, BasicAuthentication,)
# permission_classes = (IsAuthenticated,)
# queryset = Event.objects.filter(show_date__gte=odt).order_by('show_date')
# filter_backends = [DjangoFilterBackend, filters.SearchFilter]
# filterset_fields = ['show_title', 'event_type', 'show_date', 'show_day', 'venue__name']
# search_fields = ['show_title', 'event_type']