Skip to content
Snippets Groups Projects
api.py 1.44 KiB
Newer Older
  • Learn to ignore specific revisions
  • from rest_framework import status
    from rest_framework.decorators import api_view
    from rest_framework.response import Response
    from django.utils.datetime_safe import datetime
    
    from AKModel.models import AK
    
    
    def ak_interest_indication_active(event, current_timestamp):
        """
        Check whether indication of interest is currently allowed for a given event
    
        :param event: event to check for
        :type event: Event
        :param current_timestamp: current timestamp
        :type current_timestamp: datetime
        :return: True if indication is allowed, False if not
        :rtype: Bool
        """
        return event.active and (event.interest_start is None or (event.interest_start <= current_timestamp and (
                event.interest_end is None or current_timestamp <= event.interest_end)))
    
    
    @api_view(['POST'])
    def increment_interest_counter(request, event_slug, pk, **kwargs):
        """
        Increment interest counter for AK
        """
    
        try:
            ak = AK.objects.get(pk=pk)
    
            # Check whether interest indication is currently allowed
            current_timestamp = datetime.now().astimezone(ak.event.timezone)
            if ak_interest_indication_active(ak.event, current_timestamp):
                ak.interest_counter += 1
                ak.save()
    
                return Response({'interest_counter': ak.interest_counter}, status=status.HTTP_200_OK)
    
            return Response(status=status.HTTP_403_FORBIDDEN)
    
        except AK.DoesNotExist:
            return Response(status=status.HTTP_404_NOT_FOUND)