mirror of
				https://gitlab.crans.org/bde/nk20
				synced 2025-11-04 01:12:08 +01:00 
			
		
		
		
	API Food
This commit is contained in:
		@@ -14,29 +14,33 @@ router = routers.DefaultRouter()
 | 
				
			|||||||
router.register('models', ContentTypeViewSet)
 | 
					router.register('models', ContentTypeViewSet)
 | 
				
			||||||
router.register('user', UserViewSet)
 | 
					router.register('user', UserViewSet)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if "activity" in settings.INSTALLED_APPS:
 | 
				
			||||||
 | 
					    from activity.api.urls import register_activity_urls
 | 
				
			||||||
 | 
					    register_activity_urls(router, 'activity')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if "food" in settings.INSTALLED_APPS:
 | 
				
			||||||
 | 
					    from food.api.urls import register_food_urls
 | 
				
			||||||
 | 
					    register_food_urls(router, 'food')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if "logs" in settings.INSTALLED_APPS:
 | 
				
			||||||
 | 
					    from logs.api.urls import register_logs_urls
 | 
				
			||||||
 | 
					    register_logs_urls(router, 'logs')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "member" in settings.INSTALLED_APPS:
 | 
					if "member" in settings.INSTALLED_APPS:
 | 
				
			||||||
    from member.api.urls import register_members_urls
 | 
					    from member.api.urls import register_members_urls
 | 
				
			||||||
    register_members_urls(router, 'members')
 | 
					    register_members_urls(router, 'members')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "member" in settings.INSTALLED_APPS:
 | 
					 | 
				
			||||||
    from activity.api.urls import register_activity_urls
 | 
					 | 
				
			||||||
    register_activity_urls(router, 'activity')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if "note" in settings.INSTALLED_APPS:
 | 
					if "note" in settings.INSTALLED_APPS:
 | 
				
			||||||
    from note.api.urls import register_note_urls
 | 
					    from note.api.urls import register_note_urls
 | 
				
			||||||
    register_note_urls(router, 'note')
 | 
					    register_note_urls(router, 'note')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "treasury" in settings.INSTALLED_APPS:
 | 
					 | 
				
			||||||
    from treasury.api.urls import register_treasury_urls
 | 
					 | 
				
			||||||
    register_treasury_urls(router, 'treasury')
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if "permission" in settings.INSTALLED_APPS:
 | 
					if "permission" in settings.INSTALLED_APPS:
 | 
				
			||||||
    from permission.api.urls import register_permission_urls
 | 
					    from permission.api.urls import register_permission_urls
 | 
				
			||||||
    register_permission_urls(router, 'permission')
 | 
					    register_permission_urls(router, 'permission')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "logs" in settings.INSTALLED_APPS:
 | 
					if "treasury" in settings.INSTALLED_APPS:
 | 
				
			||||||
    from logs.api.urls import register_logs_urls
 | 
					    from treasury.api.urls import register_treasury_urls
 | 
				
			||||||
    register_logs_urls(router, 'logs')
 | 
					    register_treasury_urls(router, 'treasury')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if "wei" in settings.INSTALLED_APPS:
 | 
					if "wei" in settings.INSTALLED_APPS:
 | 
				
			||||||
    from wei.api.urls import register_wei_urls
 | 
					    from wei.api.urls import register_wei_urls
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										0
									
								
								apps/food/api/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										0
									
								
								apps/food/api/__init__.py
									
									
									
									
									
										Normal file
									
								
							
							
								
								
									
										50
									
								
								apps/food/api/serializers.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								apps/food/api/serializers.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
				
			|||||||
 | 
					# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from rest_framework import serializers
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from ..models import Allergen, BasicFood, QRCode, TransformedFood
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AllergenSerializer(serializers.ModelSerializer):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API Serializer for Allergen.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will analyse the model `Allergen` and parse all fields in the API.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = Allergen
 | 
				
			||||||
 | 
					        fields = '__all__'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BasicFoodSerializer(serializers.ModelSerializer):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API Serializer for BasicFood.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will analyse the model `BasicFood` and parse all fields in the API.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = BasicFood
 | 
				
			||||||
 | 
					        fields = '__all__'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class QRCodeSerializer(serializers.ModelSerializer):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API Serializer for QRCode.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will analyse the model `QRCode` and parse all fields in the API.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = QRCode
 | 
				
			||||||
 | 
					        fields = '__all__'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TransformedFoodSerializer(serializers.ModelSerializer):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API Serializer for TransformedFood.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will analyse the model `TransformedFood` and parse all fields in the API.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    class Meta:
 | 
				
			||||||
 | 
					        model = TransformedFood
 | 
				
			||||||
 | 
					        fields = '__all__'
 | 
				
			||||||
							
								
								
									
										14
									
								
								apps/food/api/urls.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								apps/food/api/urls.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
				
			|||||||
 | 
					# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .views import AllergenViewSet, BasicFoodViewSet, QRCodeViewSet, TransformedFoodViewSet
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def register_food_urls(router, path):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Configure router for Food REST API.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    router.register(path + '/allergen', AllergenViewSet)
 | 
				
			||||||
 | 
					    router.register(path + '/basic_food', BasicFoodViewSet)
 | 
				
			||||||
 | 
					    router.register(path + '/qrcode', QRCodeViewSet)
 | 
				
			||||||
 | 
					    router.register(path + '/transformed_food', TransformedFoodViewSet)
 | 
				
			||||||
							
								
								
									
										61
									
								
								apps/food/api/views.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								apps/food/api/views.py
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
				
			|||||||
 | 
					# Copyright (C) 2018-2024 by BDE ENS Paris-Saclay
 | 
				
			||||||
 | 
					# SPDX-License-Identifier: GPL-3.0-or-later
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from api.viewsets import ReadProtectedModelViewSet
 | 
				
			||||||
 | 
					from django_filters.rest_framework import DjangoFilterBackend
 | 
				
			||||||
 | 
					from rest_framework.filters import SearchFilter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from .serializers import AllergenSerializer, BasicFoodSerializer, QRCodeSerializer, TransformedFoodSerializer
 | 
				
			||||||
 | 
					from ..models import Allergen, BasicFood, QRCode, TransformedFood
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class AllergenViewSet(ReadProtectedModelViewSet):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API View set.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will get all `Allergen` objects, serialize it to JSON with the given serializer,
 | 
				
			||||||
 | 
					    then render it on /api/food/allergen/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    queryset = Allergen.objects.order_by('id')
 | 
				
			||||||
 | 
					    serializer_class = AllergenSerializer
 | 
				
			||||||
 | 
					    filter_backends = [DjangoFilterBackend, SearchFilter]
 | 
				
			||||||
 | 
					    filterset_fields = ['name', ]
 | 
				
			||||||
 | 
					    search_fields = ['$name', ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class BasicFoodViewSet(ReadProtectedModelViewSet):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API View set.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will get all `BasicFood` objects, serialize it to JSON with the given serializer,
 | 
				
			||||||
 | 
					    then render it on /api/food/basic_food/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    queryset = BasicFood.objects.order_by('id')
 | 
				
			||||||
 | 
					    serializer_class = BasicFoodSerializer
 | 
				
			||||||
 | 
					    filter_backends = [DjangoFilterBackend, SearchFilter]
 | 
				
			||||||
 | 
					    filterset_fields = ['name', ]
 | 
				
			||||||
 | 
					    search_fields = ['$name', ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class QRCodeViewSet(ReadProtectedModelViewSet):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API View set.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will get all `QRCode` objects, serialize it to JSON with the given serializer,
 | 
				
			||||||
 | 
					    then render it on /api/food/qrcode/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    queryset = QRCode.objects.order_by('id')
 | 
				
			||||||
 | 
					    serializer_class = QRCodeSerializer
 | 
				
			||||||
 | 
					    filter_backends = [DjangoFilterBackend, SearchFilter]
 | 
				
			||||||
 | 
					    filterset_fields = ['qr_code_number', ]
 | 
				
			||||||
 | 
					    search_fields = ['$qr_code_number', ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class TransformedFoodViewSet(ReadProtectedModelViewSet):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    REST API View set.
 | 
				
			||||||
 | 
					    The djangorestframework plugin will get all `TransformedFood` objects, serialize it to JSON with the given serializer,
 | 
				
			||||||
 | 
					    then render it on /api/food/transformed_food/
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    queryset = TransformedFood.objects.order_by('id')
 | 
				
			||||||
 | 
					    serializer_class = TransformedFoodSerializer
 | 
				
			||||||
 | 
					    filter_backends = [DjangoFilterBackend, SearchFilter]
 | 
				
			||||||
 | 
					    filterset_fields = ['name', ]
 | 
				
			||||||
 | 
					    search_fields = ['$name', ]
 | 
				
			||||||
		Reference in New Issue
	
	Block a user