Projet

Général

Profil

0006-virtual-agendas-allow-direct-relation-from-agenda-to.patch

Emmanuel Cazenave, 16 mars 2020 17:56

Télécharger (2,79 ko)

Voir les différences:

Subject: [PATCH 6/8] virtual agendas: allow direct relation from agenda to
 timeperiod (#40058)

 .../migrations/0040_timeperiod_agenda.py      | 33 +++++++++++++++++++
 chrono/agendas/models.py                      | 10 +++++-
 2 files changed, 42 insertions(+), 1 deletion(-)
 create mode 100644 chrono/agendas/migrations/0040_timeperiod_agenda.py
chrono/agendas/migrations/0040_timeperiod_agenda.py
1
# -*- coding: utf-8 -*-
2
# Generated by Django 1.11.18 on 2020-02-26 13:27
3
from __future__ import unicode_literals
4

  
5
from django.db import migrations, models
6
import django.db.models.deletion
7

  
8

  
9
class Migration(migrations.Migration):
10

  
11
    dependencies = [
12
        ('agendas', '0039_booking_delays'),
13
    ]
14

  
15
    operations = [
16
        migrations.AddField(
17
            model_name='timeperiod',
18
            name='agenda',
19
            field=models.ForeignKey(
20
                null=True,
21
                on_delete=django.db.models.deletion.CASCADE,
22
                related_name='excluded_timeperiods',
23
                to='agendas.Agenda',
24
            ),
25
        ),
26
        migrations.AlterField(
27
            model_name='timeperiod',
28
            name='desk',
29
            field=models.ForeignKey(
30
                null=True, on_delete=django.db.models.deletion.CASCADE, to='agendas.Desk'
31
            ),
32
        ),
33
    ]
chrono/agendas/models.py
298 298
    weekday = models.IntegerField(_('Week day'), choices=WEEKDAYS_LIST)
299 299
    start_time = models.TimeField(_('Start'))
300 300
    end_time = models.TimeField(_('End'))
301
    desk = models.ForeignKey('Desk', on_delete=models.CASCADE)
301
    desk = models.ForeignKey('Desk', on_delete=models.CASCADE, null=True)
302
    agenda = models.ForeignKey(
303
        Agenda, on_delete=models.CASCADE, null=True, related_name='excluded_timeperiods'
304
    )
302 305

  
303 306
    class Meta:
304 307
        ordering = ['weekday', 'start_time']
......
310 313
            date_format(self.end_time, 'TIME_FORMAT'),
311 314
        )
312 315

  
316
    def save(self, *args, **kwargs):
317
        if self.agenda:
318
            assert self.agenda.kind == 'virtual', "a time peŕiod can only reference a virtual agenda"
319
        super(TimePeriod, self).save(*args, **kwargs)
320

  
313 321
    @property
314 322
    def weekday_str(self):
315 323
        return WEEKDAYS[self.weekday]
316
-