minors improvements around talk duration

This commit is contained in:
Élie Bouttier 2016-10-19 13:51:10 +02:00
parent fc498f476c
commit dcc13c9cff
3 changed files with 49 additions and 7 deletions

View File

@ -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)'),
),
]

View File

@ -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',)

View File

@ -36,8 +36,7 @@
<dt>Horaire</dt>
<dd>{% if talk.start_date %}
<span class="date">{{ talk.start_date|date:"l d b" }}</span>,
<span class="time">{{ talk.start_date|date:"H:i" }} &ndash;
{{ talk.end_date|date:"H:i" }}</span>
<span class="time">{{ talk.start_date|date:"H:i" }} &ndash; {% if talk.end_date %}{{ talk.end_date|date:"H:i" }}{% else %}?{% endif %}</span>
{% else %}<em>{% trans "not defined" %}</em>
{% endif %}
</dd>