Files
@ 39d0faac7c40
Branch filter:
Location: symposion_app/symposion/schedule/models.py - annotation
39d0faac7c40
2.2 KiB
text/x-python
added schedule admin
143dbbce2891 143dbbce2891 7324d0303162 7324d0303162 5b7087f47829 5b7087f47829 5b7087f47829 143dbbce2891 143dbbce2891 143dbbce2891 143dbbce2891 0a4e626dfe9b 143dbbce2891 143dbbce2891 143dbbce2891 143dbbce2891 77dc781e0d8b 143dbbce2891 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 143dbbce2891 143dbbce2891 77dc781e0d8b 143dbbce2891 77dc781e0d8b 143dbbce2891 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 77dc781e0d8b 143dbbce2891 143dbbce2891 143dbbce2891 143dbbce2891 143dbbce2891 77dc781e0d8b 143dbbce2891 143dbbce2891 2c954c3a055b 2c954c3a055b 2c954c3a055b 2c954c3a055b 2c954c3a055b 2c954c3a055b 2c954c3a055b 2c954c3a055b 2c954c3a055b 143dbbce2891 2c954c3a055b 2c954c3a055b 7324d0303162 7324d0303162 7324d0303162 7324d0303162 7324d0303162 7324d0303162 fe29c708b911 fe29c708b911 7324d0303162 7324d0303162 7324d0303162 4ecb2272dff4 40aede0839a0 5b7087f47829 5b7087f47829 5b7087f47829 5b7087f47829 5b7087f47829 5b7087f47829 5b7087f47829 7324d0303162 7324d0303162 7324d0303162 7324d0303162 7324d0303162 7324d0303162 7324d0303162 7324d0303162 | from django.db import models
from markitup.fields import MarkupField
from symposion.proposals.models import ProposalBase
from symposion.conference.models import Section
class Schedule(models.Model):
section = models.OneToOneField(Section)
slug = models.SlugField(unique=True)
class Day(models.Model):
schedule = models.ForeignKey(Schedule)
date = models.DateField()
class Meta:
unique_together = [("schedule", "date")]
class Room(models.Model):
schedule = models.ForeignKey(Schedule)
name = models.CharField(max_length=65)
order = models.PositiveIntegerField()
class SlotKind(models.Model):
"""
A slot kind represents what kind a slot is. For example, a slot can be a
break, lunch, or X-minute talk.
"""
schedule = models.ForeignKey(Schedule)
label = models.CharField(max_length=50)
class Slot(models.Model):
day = models.ForeignKey(Day)
kind = models.ForeignKey(SlotKind)
start = models.TimeField()
end = models.TimeField()
class SlotRoom(models.Model):
"""
Links a slot with a room.
"""
slot = models.ForeignKey(Slot)
room = models.ForeignKey(Room)
class Meta:
unique_together = [("slot", "room")]
class Presentation(models.Model):
slot = models.OneToOneField(Slot, null=True, blank=True, related_name="presentation")
title = models.CharField(max_length=100)
description = MarkupField()
abstract = MarkupField()
speaker = models.ForeignKey("speakers.Speaker", related_name="presentations")
additional_speakers = models.ManyToManyField("speakers.Speaker", blank=True)
cancelled = models.BooleanField(default=False)
_proposal = models.OneToOneField(ProposalBase, related_name="presentation")
section = models.ForeignKey(Section, related_name="presentations")
@property
def proposal(self):
if self._proposal:
proposal = ProposalBase.objects.get_subclass(pk=self._proposal.pk)
return proposal
return None
def speakers(self):
yield self.speaker
for speaker in self.additional_speakers.all():
yield speaker
def __unicode__(self):
return self.title
|