From 224e6fa6a566332015ca94c1bc5e31504256181c Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Mon, 25 Jan 2021 18:03:33 +0100 Subject: [PATCH] agendas: share booking colors between agendas (#50379) --- .../migrations/0073_auto_20210125_1800.py | 23 +++++++++++++++++++ chrono/agendas/models.py | 5 ++-- chrono/api/views.py | 2 +- chrono/manager/views.py | 2 +- 4 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 chrono/agendas/migrations/0073_auto_20210125_1800.py diff --git a/chrono/agendas/migrations/0073_auto_20210125_1800.py b/chrono/agendas/migrations/0073_auto_20210125_1800.py new file mode 100644 index 0000000..717cade --- /dev/null +++ b/chrono/agendas/migrations/0073_auto_20210125_1800.py @@ -0,0 +1,23 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2021-01-25 17:00 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('agendas', '0072_booking_absence_reason'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='bookingcolor', + unique_together=set([('label',)]), + ), + migrations.RemoveField( + model_name='bookingcolor', + name='agenda', + ), + ] diff --git a/chrono/agendas/models.py b/chrono/agendas/models.py index e26127d..a7c8444 100644 --- a/chrono/agendas/models.py +++ b/chrono/agendas/models.py @@ -1059,17 +1059,16 @@ class Event(models.Model): class BookingColor(models.Model): COLOR_COUNT = 8 - agenda = models.ForeignKey(Agenda, on_delete=models.CASCADE, related_name='booking_colors') label = models.CharField(_('Label'), max_length=250) index = models.PositiveSmallIntegerField() class Meta: - unique_together = ('agenda', 'label') + unique_together = ('label',) ordering = ('pk',) def save(self, *args, **kwargs): if self.index is None: - last_color = BookingColor.objects.filter(agenda=self.agenda).last() or BookingColor(index=-1) + last_color = BookingColor.objects.last() or BookingColor(index=-1) self.index = (last_color.index + 1) % self.COLOR_COUNT super().save(*args, **kwargs) diff --git a/chrono/api/views.py b/chrono/api/views.py index b2a520a..f061764 100644 --- a/chrono/api/views.py +++ b/chrono/api/views.py @@ -954,7 +954,7 @@ class Fillslots(APIView): color_label = payload.get('use_color_for') if color_label: - color = BookingColor.objects.get_or_create(agenda=agenda, label=color_label)[0] + color = BookingColor.objects.get_or_create(label=color_label)[0] available_desk = None diff --git a/chrono/manager/views.py b/chrono/manager/views.py index 36d1df8..7c71c9d 100644 --- a/chrono/manager/views.py +++ b/chrono/manager/views.py @@ -886,7 +886,7 @@ class AgendaDateView(DateMixin, ViewableAgendaMixin): except ValueError: # no meeting types defined context['hour_span'] = 1 context['booking_colors'] = BookingColor.objects.filter( - agenda=self.agenda, bookings__event__in=self.object_list + bookings__event__in=self.object_list ).distinct() context['user_can_manage'] = self.agenda.can_be_managed(self.request.user) return context -- 2.20.1