mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-06-29 12:50:55 +02:00
Add new application to manage note sheets
Signed-off-by: Yohann D'ANELLO <ynerant@crans.org>
This commit is contained in:
0
apps/sheets/api/__init__.py
Normal file
0
apps/sheets/api/__init__.py
Normal file
55
apps/sheets/api/serializers.py
Normal file
55
apps/sheets/api/serializers.py
Normal file
@ -0,0 +1,55 @@
|
||||
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
|
||||
from ..models import Sheet, Food, FoodOption, Meal, Order, OrderedMeal, OrderedFood, SheetOrderTransaction
|
||||
|
||||
|
||||
class SheetSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Sheet
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class FoodSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Food
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class FoodOptionSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = FoodOption
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class MealSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Meal
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class OrderSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Order
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class OrderedMealSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OrderedMeal
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class OrderedFoodSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = OrderedFood
|
||||
fields = '__all__'
|
||||
|
||||
|
||||
class SheetOrderTransactionSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SheetOrderTransaction
|
||||
fields = '__all__'
|
19
apps/sheets/api/urls.py
Normal file
19
apps/sheets/api/urls.py
Normal file
@ -0,0 +1,19 @@
|
||||
# Copyright (C) 2018-2021 by BDE ENS Paris-Saclay
|
||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
from sheets.api.views import SheetViewSet, FoodViewSet, FoodOptionViewSet, MealViewSet, OrderViewSet, \
|
||||
OrderedMealViewSet, OrderedFoodViewSet, SheetOrderTransactionViewSet
|
||||
|
||||
|
||||
def register_sheets_urls(router, path):
|
||||
"""
|
||||
Configure router for Sheets REST API.
|
||||
"""
|
||||
router.register(path + '/sheet', SheetViewSet)
|
||||
router.register(path + '/food', FoodViewSet)
|
||||
router.register(path + '/foodoption', FoodOptionViewSet)
|
||||
router.register(path + '/meal', MealViewSet)
|
||||
router.register(path + '/order', OrderViewSet)
|
||||
router.register(path + '/orderedmeal', OrderedMealViewSet)
|
||||
router.register(path + '/orderedfood', OrderedFoodViewSet)
|
||||
router.register(path + '/sheetordertransaction', SheetOrderTransactionViewSet)
|
78
apps/sheets/api/views.py
Normal file
78
apps/sheets/api/views.py
Normal file
@ -0,0 +1,78 @@
|
||||
# Copyright (C) 2018-2021 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, OrderingFilter
|
||||
|
||||
from .serializers import SheetSerializer, FoodSerializer, FoodOptionSerializer, MealSerializer, OrderSerializer, \
|
||||
OrderedMealSerializer, OrderedFoodSerializer, SheetOrderTransactionSerializer
|
||||
from ..models import Sheet, Food, FoodOption, Meal, Order, OrderedMeal, OrderedFood, SheetOrderTransaction
|
||||
|
||||
|
||||
class SheetViewSet(ReadProtectedModelViewSet):
|
||||
queryset = Sheet.objects.order_by('id')
|
||||
serializer_class = SheetSerializer
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter]
|
||||
filterset_fields = ['name', 'date', ]
|
||||
search_fields = ['$name', ]
|
||||
|
||||
|
||||
class FoodViewSet(ReadProtectedModelViewSet):
|
||||
queryset = Food.objects.order_by('id')
|
||||
serializer_class = FoodSerializer
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter]
|
||||
filterset_fields = ['name', 'sheet', 'price', 'club', 'available', ]
|
||||
search_fields = ['$name', ]
|
||||
|
||||
|
||||
class FoodOptionViewSet(ReadProtectedModelViewSet):
|
||||
queryset = FoodOption.objects.order_by('id')
|
||||
serializer_class = FoodOptionSerializer
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter]
|
||||
filterset_fields = ['name', 'food', 'extra_cost', 'available', ]
|
||||
search_fields = ['$name', '$food__name', ]
|
||||
|
||||
|
||||
class MealViewSet(ReadProtectedModelViewSet):
|
||||
queryset = Meal.objects.order_by('id')
|
||||
serializer_class = MealSerializer
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter]
|
||||
filterset_fields = ['name', 'content', 'price', 'available', ]
|
||||
search_fields = ['$name', ]
|
||||
|
||||
|
||||
class OrderViewSet(ReadProtectedModelViewSet):
|
||||
queryset = Order.objects.order_by('id')
|
||||
serializer_class = OrderSerializer
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter]
|
||||
filterset_fields = ['sheet', 'note', 'date', 'gift', ]
|
||||
search_fields = ['$sheet__name', '$note__alias__name', '$note__alias__normalized_name', ]
|
||||
|
||||
|
||||
class OrderedMealViewSet(ReadProtectedModelViewSet):
|
||||
queryset = OrderedMeal.objects.order_by('id')
|
||||
serializer_class = OrderedMealSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = ['order', 'meal', ]
|
||||
|
||||
|
||||
class OrderedFoodViewSet(ReadProtectedModelViewSet):
|
||||
queryset = OrderedFood.objects.order_by('id')
|
||||
serializer_class = OrderedFoodSerializer
|
||||
filter_backends = [DjangoFilterBackend]
|
||||
filterset_fields = ['order', 'meal', 'food', 'options', 'number', 'status', 'served_date', ]
|
||||
|
||||
|
||||
class SheetOrderTransactionViewSet(ReadProtectedModelViewSet):
|
||||
queryset = SheetOrderTransaction.objects.order_by('-created_at')
|
||||
serializer_class = SheetOrderTransactionSerializer
|
||||
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
|
||||
filterset_fields = ['source', 'source_alias', 'source__alias__name', 'source__alias__normalized_name',
|
||||
'destination', 'destination_alias', 'destination__alias__name',
|
||||
'destination__alias__normalized_name', 'quantity', 'polymorphic_ctype', 'amount',
|
||||
'created_at', 'valid', 'invalidity_reason', 'ordered_food', ]
|
||||
search_fields = ['$reason', '$source_alias', '$source__alias__name', '$source__alias__normalized_name',
|
||||
'$destination_alias', '$destination__alias__name', '$destination__alias__normalized_name',
|
||||
'$invalidity_reason', ]
|
||||
ordering_fields = ['created_at', 'amount', ]
|
Reference in New Issue
Block a user