From ca426b4d6d0a7607eedfc4bdb076998ff7edc65d Mon Sep 17 00:00:00 2001 From: Dorian Lesbre <dorian.lesbre@gmail.com> Date: Fri, 30 Apr 2021 13:57:27 +0200 Subject: [PATCH] Added optional slot duration+fix planning bug --- .../migrations/0006_interludesslot_duration.py | 18 ++++++++++++++++++ home/models.py | 13 ++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) create mode 100644 home/migrations/0006_interludesslot_duration.py diff --git a/home/migrations/0006_interludesslot_duration.py b/home/migrations/0006_interludesslot_duration.py new file mode 100644 index 0000000..7f2383b --- /dev/null +++ b/home/migrations/0006_interludesslot_duration.py @@ -0,0 +1,18 @@ +# Generated by Django 3.0.8 on 2021-04-30 11:56 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0005_auto_20210425_1539'), + ] + + operations = [ + migrations.AddField( + model_name='interludesslot', + name='duration', + field=models.DurationField(blank=True, help_text="Format 00:00:00. Laisser vide pour prendre la durée de l'activité correspondante", null=True, verbose_name='durée'), + ), + ] diff --git a/home/models.py b/home/models.py index 632fef5..c66746f 100644 --- a/home/models.py +++ b/home/models.py @@ -143,6 +143,10 @@ class InterludesSlot(models.Model): TITLE_SPECIFIER), ) start = models.DateTimeField("début") + duration = models.DurationField( + "durée", blank=True, null=True, + help_text="Format 00:00:00. Laisser vide pour prendre la durée de l'activité correspondante" + ) room = models.CharField("salle", max_length=100, null=True, blank=True) on_planning = models.BooleanField( "afficher sur le planning", default=False, @@ -162,6 +166,8 @@ class InterludesSlot(models.Model): @property def end(self): """Heure de fin du créneau""" + if self.duration: + return self.start + self.duration return self.start + self.activity.duration def conflicts(self, other: "InterludesSlot") -> bool: @@ -192,7 +198,7 @@ class InterludesSlot(models.Model): if settings.date_start: time = date.timetz() offset = datetime.timedelta(0) - if time.hour <= 4: + if time.hour < 4: offset = datetime.timedelta(days=1) return timezone.datetime.combine( settings.date_start + offset, @@ -216,10 +222,7 @@ class InterludesSlot(models.Model): @property def planning_end(self) -> int: - end = self.fake_date(self.end) - if end and end <= self.planning_start: - end += datetime.timedelta(days = 1) - return end + return self.fake_date(self.end) def __str__(self) -> str: return self.title.replace(self.TITLE_SPECIFIER, self.activity.title) -- GitLab