diff --git a/home/migrations/0006_interludesslot_duration.py b/home/migrations/0006_interludesslot_duration.py new file mode 100644 index 0000000000000000000000000000000000000000..7f2383b430922983e9c86412f8b138cc69e6ea33 --- /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 632fef51d79b0b6d6378db89facc6ff26eab4bc9..c66746f66bb36863905bc5fc2e2f88fd5006eda9 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)