Skip to content
Snippets Groups Projects
Commit b2dee786 authored by Benjamin Hättasch's avatar Benjamin Hättasch
Browse files

Visualize default slots in scheduler

parent 1b631ac4
No related branches found
No related tags found
No related merge requests found
...@@ -19,7 +19,7 @@ api_router.register('akslot', views.AKSlotViewSet, basename='AKSlot') ...@@ -19,7 +19,7 @@ api_router.register('akslot', views.AKSlotViewSet, basename='AKSlot')
extra_paths = [] extra_paths = []
if apps.is_installed("AKScheduling"): if apps.is_installed("AKScheduling"):
from AKScheduling.api import ResourcesViewSet, RoomAvailabilitiesView, EventsView, EventsViewSet, \ from AKScheduling.api import ResourcesViewSet, RoomAvailabilitiesView, EventsView, EventsViewSet, \
ConstraintViolationsViewSet ConstraintViolationsViewSet, DefaultSlotsView
api_router.register('scheduling-resources', ResourcesViewSet, basename='scheduling-resources') api_router.register('scheduling-resources', ResourcesViewSet, basename='scheduling-resources')
api_router.register('scheduling-event', EventsViewSet, basename='scheduling-event') api_router.register('scheduling-event', EventsViewSet, basename='scheduling-event')
...@@ -28,7 +28,9 @@ if apps.is_installed("AKScheduling"): ...@@ -28,7 +28,9 @@ if apps.is_installed("AKScheduling"):
extra_paths.append(path('api/scheduling-events/', EventsView.as_view(), name='scheduling-events')) extra_paths.append(path('api/scheduling-events/', EventsView.as_view(), name='scheduling-events'))
extra_paths.append(path('api/scheduling-room-availabilities/', RoomAvailabilitiesView.as_view(), extra_paths.append(path('api/scheduling-room-availabilities/', RoomAvailabilitiesView.as_view(),
name='scheduling-room-availabilities')) name='scheduling-room-availabilities')),
extra_paths.append(path('api/scheduling-default-slots/', DefaultSlotsView.as_view(),
name='scheduling-default-slots'))
if apps.is_installed("AKSubmission"): if apps.is_installed("AKSubmission"):
from AKSubmission.api import increment_interest_counter from AKSubmission.api import increment_interest_counter
......
...@@ -7,7 +7,7 @@ from django.views.generic import ListView ...@@ -7,7 +7,7 @@ from django.views.generic import ListView
from rest_framework import viewsets, mixins, serializers, permissions from rest_framework import viewsets, mixins, serializers, permissions
from AKModel.availability.models import Availability from AKModel.availability.models import Availability
from AKModel.models import Room, AKSlot, ConstraintViolation from AKModel.models import Room, AKSlot, ConstraintViolation, DefaultSlot
from AKModel.views import EventSlugMixin from AKModel.views import EventSlugMixin
...@@ -80,6 +80,30 @@ class RoomAvailabilitiesView(LoginRequiredMixin, EventSlugMixin, ListView): ...@@ -80,6 +80,30 @@ class RoomAvailabilitiesView(LoginRequiredMixin, EventSlugMixin, ListView):
) )
class DefaultSlotsView(LoginRequiredMixin, EventSlugMixin, ListView):
model = DefaultSlot
context_object_name = "default_slots"
def get_queryset(self):
return super().get_queryset().filter(event=self.event)
def render_to_response(self, context, **response_kwargs):
all_room_ids = [r.pk for r in self.event.room_set.all()]
return JsonResponse(
[{
"title": "",
"resourceIds": all_room_ids,
"start": timezone.localtime(a.start, self.event.timezone).strftime("%Y-%m-%d %H:%M:%S"),
"end": timezone.localtime(a.end, self.event.timezone).strftime("%Y-%m-%d %H:%M:%S"),
"display": 'background',
"groupId": 'defaultSlot',
"backgroundColor": '#69b6d4'
} for a in context["default_slots"]],
safe=False,
**response_kwargs
)
class EventSerializer(serializers.ModelSerializer): class EventSerializer(serializers.ModelSerializer):
class Meta: class Meta:
model = AKSlot model = AKSlot
......
...@@ -147,7 +147,8 @@ ...@@ -147,7 +147,8 @@
resources: '{% url "model:scheduling-resources-list" event_slug=event.slug %}', resources: '{% url "model:scheduling-resources-list" event_slug=event.slug %}',
eventSources: [ eventSources: [
'{% url "model:scheduling-events" event_slug=event.slug %}', '{% url "model:scheduling-events" event_slug=event.slug %}',
'{% url "model:scheduling-room-availabilities" event_slug=event.slug %}' '{% url "model:scheduling-room-availabilities" event_slug=event.slug %}',
'{% url "model:scheduling-default-slots" event_slug=event.slug %}'
], ],
schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source', schedulerLicenseKey: 'GPL-My-Project-Is-Open-Source',
dayMinWidth: 100, dayMinWidth: 100,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment