minors improvements around talk duration
This commit is contained in:
parent
fc498f476c
commit
dcc13c9cff
40
proposals/migrations/0022_auto_20161019_1141.py
Normal file
40
proposals/migrations/0022_auto_20161019_1141.py
Normal 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)'),
|
||||||
|
),
|
||||||
|
]
|
|
@ -53,7 +53,7 @@ class Track(PonyConfModel):
|
||||||
unique_together = ('site', 'name')
|
unique_together = ('site', 'name')
|
||||||
|
|
||||||
def estimated_duration(self):
|
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):
|
def __str__(self):
|
||||||
return self.name
|
return self.name
|
||||||
|
@ -87,7 +87,7 @@ class Event(models.Model):
|
||||||
|
|
||||||
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
site = models.ForeignKey(Site, on_delete=models.CASCADE)
|
||||||
name = models.CharField(max_length=64)
|
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"))
|
color = RGBColorField(default='#ffffff', verbose_name=_("Color on program"))
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -117,7 +117,7 @@ class Talk(PonyConfModel):
|
||||||
event = models.ForeignKey(Event, verbose_name=_('Intervention kind'))
|
event = models.ForeignKey(Event, verbose_name=_('Intervention kind'))
|
||||||
accepted = models.NullBooleanField(default=None)
|
accepted = models.NullBooleanField(default=None)
|
||||||
start_date = models.DateTimeField(null=True, blank=True, 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)
|
room = models.ForeignKey(Room, blank=True, null=True, default=None)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
|
@ -133,6 +133,7 @@ class Talk(PonyConfModel):
|
||||||
else:
|
else:
|
||||||
return ', '.join(speakers[:-1]) + ' & ' + str(speakers[-1])
|
return ', '.join(speakers[:-1]) + ' & ' + str(speakers[-1])
|
||||||
|
|
||||||
|
@property
|
||||||
def estimated_duration(self):
|
def estimated_duration(self):
|
||||||
return self.duration or self.event.duration
|
return self.duration or self.event.duration
|
||||||
|
|
||||||
|
@ -163,10 +164,12 @@ class Talk(PonyConfModel):
|
||||||
else:
|
else:
|
||||||
return 0
|
return 0
|
||||||
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def end_date(self):
|
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:
|
class Meta:
|
||||||
ordering = ('event__id',)
|
ordering = ('event__id',)
|
||||||
|
|
|
@ -36,8 +36,7 @@
|
||||||
<dt>Horaire</dt>
|
<dt>Horaire</dt>
|
||||||
<dd>{% if talk.start_date %}
|
<dd>{% if talk.start_date %}
|
||||||
<span class="date">{{ talk.start_date|date:"l d b" }}</span>,
|
<span class="date">{{ talk.start_date|date:"l d b" }}</span>,
|
||||||
<span class="time">{{ talk.start_date|date:"H:i" }} –
|
<span class="time">{{ talk.start_date|date:"H:i" }} – {% if talk.end_date %}{{ talk.end_date|date:"H:i" }}{% else %}?{% endif %}</span>
|
||||||
{{ talk.end_date|date:"H:i" }}</span>
|
|
||||||
{% else %}<em>{% trans "not defined" %}</em>
|
{% else %}<em>{% trans "not defined" %}</em>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</dd>
|
</dd>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user