Patrick Guido Arminio avatar Patrick Guido Arminio committed bf8cf5e

Fix API per oggetti singoli. Aggiunto URL per il menu del giorno.

Comments (0)

Files changed (3)

projectmensa/menu/api_views.py

+from datetime import date
+
+from django.http import Http404
+
 from rest_framework import generics
 from rest_framework.reverse import reverse
 from rest_framework.response import Response
 
 
 class MenuList(generics.ListAPIView):
-    """
-    API endpoint that represents a list of groups.
-    """
     model = MenuOfTheDay
     serializer_class = MenuSerializer
     paginate_by = 10
     paginate_by_param = 'count'
 
 
-class MenuDetail(generics.SingleObjectAPIView):
-    """
-    API endpoint that represents a single group.
-    """
+class MenuDetail(generics.RetrieveAPIView):
     model = MenuOfTheDay
     serializer_class = MenuSerializer
 
 
+class TodayMenu(generics.RetrieveAPIView):
+    model = MenuOfTheDay
+    serializer_class = MenuSerializer
+
+    def get_object(self, queryset=None):
+        try:
+            return MenuOfTheDay.objects.get(day=date.today())
+        except MenuOfTheDay.DoesNotExist:
+            raise Http404()
+
+
 class CreateDevice(generics.CreateAPIView, CreateModelMixin):
     model = Device

projectmensa/menu/serializers.py

 from .models import MenuOfTheDay
 
 
-class MenuSerializer(serializers.ModelSerializer):
+class MenuSerializer(serializers.HyperlinkedModelSerializer):
     class Meta:
         model = MenuOfTheDay
         depth = 1

projectmensa/menu/urls.py

 urlpatterns += patterns('projectmensa.menu.api_views',
     url(r'^api/$', 'api_root'),
     url(r'^api/menus/$', MenuList.as_view(), name='menu-list'),
+    url(r'^api/menus/today/$', TodayMenu.as_view(), name='menuoftheday-today'),
     url(r'^api/menus/(?P<pk>\d+)/$', MenuDetail.as_view(), name='menuoftheday-detail'),
     url(r'^api/devices/$', CreateDevice.as_view(), name='devices-list'),
 )
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.