Skip to content

Commit 30e4f11

Browse files
committed
Add API endpoint for future events. fixes #21
1 parent 92aa57d commit 30e4f11

File tree

2 files changed

+15
-6
lines changed

2 files changed

+15
-6
lines changed

server/eventomat/event/views.py

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
from datetime import datetime
2+
from django.utils.timezone import make_aware
23

34
from dateutil.relativedelta import relativedelta
45
from dateutil.rrule import rrulestr
56
from rest_framework import status, viewsets
6-
from rest_framework.decorators import detail_route
7+
from rest_framework.decorators import detail_route, list_route
78
from rest_framework.response import Response
89
from rest_framework.views import APIView
910

@@ -49,19 +50,19 @@ def get_queryset(self):
4950
if self.action != 'list':
5051
return events
5152
events = list(events)
52-
seriesList = Series.objects.all()
53-
for series in seriesList:
53+
series_list = Series.objects.all()
54+
for series in series_list:
5455
if not series.rrule:
5556
continue
5657
year_from_now = datetime.now() + relativedelta(years=1)
5758
rrule = rrulestr(series.rrule).replace(until=year_from_now)
5859
for date in rrule:
59-
start = date.replace(hour=series.start.hour, minute=series.start.minute, second=0)
60-
end = date.replace(hour=series.end.hour, minute=series.end.minute, second=0)
60+
start = make_aware(date.replace(hour=series.start.hour, minute=series.start.minute, second=0))
61+
end = make_aware(date.replace(hour=series.end.hour, minute=series.end.minute, second=0))
6162
event = Event(name=series.name, description=series.description, start=start, end=end, room=series.room, series=series)
6263
events.append(event)
6364
return events
64-
65+
6566
@detail_route(methods=['post'])
6667
def attend(self, request, pk):
6768
event = self.get_object()
@@ -83,6 +84,13 @@ def perform_destroy(self, instance):
8384
instance.deleted = True
8485
instance.save(update_fields=['deleted'])
8586

87+
class FutureEventViewSet(EventViewSet):
88+
def get_queryset(self):
89+
if self.action != 'list':
90+
return EventViewSet.get_queryset(self).filter(end__gte=datetime.now())
91+
return [x for x in EventViewSet.get_queryset(self) if x.end >= make_aware(datetime.now())]
92+
93+
8694

8795
class OwnUser(APIView):
8896
def get(self, request):

server/eventomat/urls.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222

2323
router = routers.DefaultRouter()
2424
router.register(r'events', views.EventViewSet)
25+
router.register(r'future_events', views.FutureEventViewSet)
2526
router.register(r'series', views.SeriesViewSet)
2627
router.register(r'rooms', views.RoomViewSet)
2728

0 commit comments

Comments
 (0)