diff --git a/proposals/migrations/0022_auto_20161019_1141.py b/proposals/migrations/0022_auto_20161019_1141.py new file mode 100644 index 0000000..ad7b9a6 --- /dev/null +++ b/proposals/migrations/0022_auto_20161019_1141.py @@ -0,0 +1,40 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10.1 on 2016-10-19 11:41 +from __future__ import unicode_literals + +from django.db import migrations, models + + +def migrate_durations(apps, schema_editor): + db_alias = schema_editor.connection.alias + Event = apps.get_model('proposals', 'Event') + for event in Event.objects.all(): + if event.duration < 0: + event.duration = 0 + event.save() + Talk = apps.get_model('proposals', 'Talk') + for talk in Talk.objects.all(): + if talk.duration < 0: + talk.duration = 0 + talk.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('proposals', '0021_auto_20161016_2121'), + ] + + operations = [ + migrations.RunPython(migrate_durations), + migrations.AlterField( + model_name='event', + name='duration', + field=models.PositiveIntegerField(default=0, verbose_name='Default duration (min)'), + ), + migrations.AlterField( + model_name='talk', + name='duration', + field=models.PositiveIntegerField(default=0, verbose_name='Duration (min)'), + ), + ] diff --git a/proposals/models.py b/proposals/models.py index a21a6d4..58b9b98 100644 --- a/proposals/models.py +++ b/proposals/models.py @@ -53,7 +53,7 @@ class Track(PonyConfModel): unique_together = ('site', 'name') def estimated_duration(self): - return sum([talk.estimated_duration() for talk in self.talk_set.all()]) + return sum([talk.estimated_duration for talk in self.talk_set.all()]) def __str__(self): return self.name @@ -87,7 +87,7 @@ class Event(models.Model): site = models.ForeignKey(Site, on_delete=models.CASCADE) name = models.CharField(max_length=64) - duration = models.IntegerField(default=0, verbose_name=_('Default duration (min)')) + duration = models.PositiveIntegerField(default=0, verbose_name=_('Default duration (min)')) color = RGBColorField(default='#ffffff', verbose_name=_("Color on program")) class Meta: @@ -117,7 +117,7 @@ class Talk(PonyConfModel): event = models.ForeignKey(Event, verbose_name=_('Intervention kind')) accepted = models.NullBooleanField(default=None) start_date = models.DateTimeField(null=True, blank=True, default=None) - duration = models.IntegerField(default=0, verbose_name=_('Duration (min)')) + duration = models.PositiveIntegerField(default=0, verbose_name=_('Duration (min)')) room = models.ForeignKey(Room, blank=True, null=True, default=None) class Meta: @@ -133,6 +133,7 @@ class Talk(PonyConfModel): else: return ', '.join(speakers[:-1]) + ' & ' + str(speakers[-1]) + @property def estimated_duration(self): return self.duration or self.event.duration @@ -163,10 +164,12 @@ class Talk(PonyConfModel): else: return 0 - @property def end_date(self): - return self.start_date + timedelta(minutes=self.duration) + if self.estimated_duration: + return self.start_date + timedelta(minutes=self.estimated_duration) + else: + return None class Meta: ordering = ('event__id',) diff --git a/proposals/templates/proposals/talk_detail.html b/proposals/templates/proposals/talk_detail.html index efefe7c..bdd2e40 100644 --- a/proposals/templates/proposals/talk_detail.html +++ b/proposals/templates/proposals/talk_detail.html @@ -36,8 +36,7 @@
Horaire
{% if talk.start_date %} {{ talk.start_date|date:"l d b" }}, - {{ talk.start_date|date:"H:i" }} – - {{ talk.end_date|date:"H:i" }} + {{ talk.start_date|date:"H:i" }} – {% if talk.end_date %}{{ talk.end_date|date:"H:i" }}{% else %}?{% endif %} {% else %}{% trans "not defined" %} {% endif %}