Skip to content

Commit

Permalink
Merge pull request #105 from Satyam0204/master
Browse files Browse the repository at this point in the history
[UPDATE] Monthwise Ordering of Events in Timeline api
  • Loading branch information
mayankt18 authored Jan 15, 2024
2 parents 95b3975 + 847d0c9 commit d6dba46
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ db.sqlite3-*
main/media/*
media/*


env
##
db.json
##
Expand Down
2 changes: 2 additions & 0 deletions main/urls.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
router.register(r'carousel', views.CarouselImageViewSet)
router.register(r'linit', views.LinitViewSet)
router.register(r'timeline', views.TimelineViewSet)
router.register(r'timeline_monthly', views.MonthlyTimelineViewSet)
router.register(r'alumni', views.AlumniViewSet)
# In the latest DRF, We need to explicitly set base_name in our viewset url if we don't have queryset defined.
router.register(r'alumni-by-year', views.AlumniByYearViewSet, basename="alumnibyyear")
Expand All @@ -36,3 +37,4 @@
path('get_count/', views.GetCount.as_view(), name="get_count"),
path('linit-pages/', views.LinitPages.as_view(), name="linit-pages"),
]

26 changes: 25 additions & 1 deletion main/views.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
from calendar import month_name
from datetime import date
from django.shortcuts import render
from rest_framework import viewsets, generics
from django.contrib.auth.models import User
Expand Down Expand Up @@ -196,6 +198,28 @@ class TimelineViewSet(viewsets.ModelViewSet):
serializer_class = serializers.TimelineSerializers
http_method_names = ['get']

class MonthlyTimelineViewSet(viewsets.ModelViewSet):
queryset = Timeline.objects.all()
serializer_class = serializers.TimelineSerializers
http_method_names = ['get']
def get_queryset(self):
queryset = super().get_queryset()
return queryset.order_by('-event_time')

def group_by_month_year(self, queryset):
current_year= date.today().year

result = {f"{month} {year}": [] for year in range(current_year, current_year-3, -1) for month in month_name[1:]}
for obj in queryset:

month_year = obj.event_time.strftime("%B %Y")
result.setdefault(month_year, []).append(serializers.TimelineSerializers(obj).data)
return result

def list(self, request, *args, **kwargs):
queryset = self.filter_queryset(self.get_queryset())
grouped_by_month_year = self.group_by_month_year(queryset)
return Response(grouped_by_month_year)

class UpcomingEventViewSet(viewsets.ModelViewSet):
queryset = Event.objects.all().filter(upcoming=True)
Expand All @@ -217,4 +241,4 @@ class DevPostViewSet(viewsets.ModelViewSet):
class ConfigViewSet(viewsets.ModelViewSet):
queryset = Config.objects.all()
serializer_class = serializers.ConfigSerializers
http_method_names = ['get']
http_method_names = ['get']

0 comments on commit d6dba46

Please sign in to comment.