diff --git a/AKModel/urls.py b/AKModel/urls.py index a469c54f96e8f3cd29a2008f1deffc537050a8cc..b2cffbeae2f4e4e1d702ce0dc2333361f2ba1b98 100644 --- a/AKModel/urls.py +++ b/AKModel/urls.py @@ -1,3 +1,4 @@ +from django.apps import apps from django.urls import include, path from rest_framework.routers import DefaultRouter @@ -11,6 +12,10 @@ api_router.register('ak', views.AKViewSet, basename='AK') api_router.register('room', views.RoomViewSet, basename='Room') api_router.register('akslot', views.AKSlotViewSet, basename='AKSlot') +if apps.is_installed("AKScheduling"): + from AKScheduling.api import ResourcesViewSet + api_router.register('scheduling-resources', ResourcesViewSet, basename='scheduling-resources') + app_name = 'model' urlpatterns = [ diff --git a/AKScheduling/api.py b/AKScheduling/api.py new file mode 100644 index 0000000000000000000000000000000000000000..110b50fa250c52cffb118f8085aed74b659393d9 --- /dev/null +++ b/AKScheduling/api.py @@ -0,0 +1,25 @@ +from rest_framework import viewsets, permissions, mixins, serializers + +from AKModel.models import Room +from AKModel.views import EventSlugMixin + + +class ResourceSerializer(serializers.ModelSerializer): + class Meta: + model = Room + fields = ['id', 'title'] + + title = serializers.SerializerMethodField('transform_title') + + def transform_title(self, obj): + if obj.capacity > 0: + return f"{obj.title} [{obj.capacity}]" + return obj.title + + +class ResourcesViewSet(EventSlugMixin, mixins.RetrieveModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet): + permission_classes = (permissions.DjangoModelPermissionsOrAnonReadOnly,) + serializer_class = ResourceSerializer + + def get_queryset(self): + return Room.objects.filter(event=self.event) diff --git a/AKScheduling/templates/admin/AKScheduling/scheduling.html b/AKScheduling/templates/admin/AKScheduling/scheduling.html index 8c4faf98704e929c0526b49012fa35931115f03e..66da8585027cef33236deabc85834c71c37ba6e0 100644 --- a/AKScheduling/templates/admin/AKScheduling/scheduling.html +++ b/AKScheduling/templates/admin/AKScheduling/scheduling.html @@ -83,14 +83,7 @@ eventColor: '#127ba3', datesAboveResources: true, resourceAreaHeaderContent: '{% trans "Room" %}', - resources: [ - {% for room in rooms %} - { - 'id': '{{ room.title }}', - 'title': '{{ room.title }}', - }, - {% endfor %} - ], + resources: '{% url "model:scheduling-resources-list" event_slug=event.slug %}', events: [ {% for slot in akslots %} {% if slot.start %} diff --git a/AKScheduling/views.py b/AKScheduling/views.py index fd30864c1782d4f2f45fb315fcd404a384f54adb..61d4e2aeb899379c29e89a1d1e0506bbe61e2bd9 100644 --- a/AKScheduling/views.py +++ b/AKScheduling/views.py @@ -33,8 +33,6 @@ class SchedulingAdminView(AdminViewMixin, FilterByEventSlugMixin, ListView): context["start"] = self.event.start context["end"] = self.event.end - context["rooms"] = self.event.room_set.all() - context["availabilities"] = Availability.objects.filter(event=self.event, room__isnull=False) return context