示例#1
0
class AbstractProposal(models.Model):
    """
    A proposal represents a possible future session as it will be used before
    and during the review process. It has one mandatory speaker and possible
    additional speakers as well as a certain kind (training, session, ...),
    target-audience and proposed duration.
    """
    conference = models.ForeignKey("conference.Conference",
        verbose_name="conference", on_delete=models.PROTECT)
    title = models.CharField(_("title"), max_length=100)
    description = models.TextField(_("description"), max_length=400)
    abstract = models.TextField(_("abstract"))
    notes = models.TextField(_("notes"), blank=True)
    speaker = models.ForeignKey("speakers.Speaker", related_name="%(class)ss",
        verbose_name=_("speaker"), on_delete=models.PROTECT)
    additional_speakers = models.ManyToManyField("speakers.Speaker",
        blank=True, null=True, related_name="%(class)s_participations",
        verbose_name=_("additional speakers"))
    submission_date = models.DateTimeField(_("submission date"), editable=False,
        default=now)
    modified_date = models.DateTimeField(_("modification date"), blank=True,
        null=True)
    kind = models.ForeignKey("conference.SessionKind", verbose_name=_("type"),
        on_delete=models.PROTECT)
    audience_level = models.ForeignKey("conference.AudienceLevel",
        verbose_name=_("target-audience"), on_delete=models.PROTECT)
    duration = models.ForeignKey("conference.SessionDuration",
        verbose_name=_("duration"), on_delete=models.PROTECT)
    track = models.ForeignKey("conference.Track", verbose_name=_("track"),
        blank=True, null=True, on_delete=models.PROTECT)
    available_timeslots = models.ManyToManyField(TimeSlot,
        verbose_name=_("available timeslots"), null=True, blank=True)
    language = models.CharField(_('language'), max_length=5, blank=False,
        default=LANGUAGES_CHOICES[0][0], choices=LANGUAGES_CHOICES)
    accept_recording = models.BooleanField(default=True, blank=True)
    tags = TaggableManager(blank=True)

    objects = models.Manager()
    current_conference = CurrentConferenceManager()

    class Meta(object):
        abstract = True

    def clean(self):
        super(AbstractProposal, self).clean()
        try:
            if self.conference is not None and self.duration.conference != self.conference:
                raise forms.ValidationError(_("The duration has to be associated with the same conference as the proposal"))
        except:
            pass

    def get_absolute_url(self):
        return reverse("view_proposal", kwargs=dict(pk=self.pk))

    def __unicode__(self):
        try:
            return "{0} ({1})".format(self.title, self.conference)
        except:
            return self.title
示例#2
0
class Event(models.Model):
    conference = models.ForeignKey(Conference, verbose_name=_("Conference"))
    title = models.CharField(_("Title"), max_length=255)
    date = models.DateTimeField(_("Date"))
    end_date = models.DateTimeField(_("End date"), blank=True, null=True)
    link = models.URLField(_("Link"), blank=True, null=True)

    objects = models.Manager()
    current_conference = CurrentConferenceManager()

    class Meta(object):
        verbose_name = _('event')
        verbose_name_plural = _('events')
        ordering = ['date']
示例#3
0
class SponsorLevel(models.Model):
    conference = models.ForeignKey(Conference, verbose_name=_("conference"))
    name = models.CharField(_("name"), max_length=100)
    order = models.IntegerField(_("order"), default=0)
    description = models.TextField(_("description"), blank=True)
    slug = models.SlugField(_("slug"))

    objects = models.Manager()
    current_conference = CurrentConferenceManager()

    class Meta:
        ordering = ["conference", "order"]
        verbose_name = _("sponsor level")
        verbose_name_plural = _("sponsor levels")

    def __unicode__(self):
        return u"%s %s" % (self.conference, self.name)

    def sponsors(self):
        return self.sponsor_set.filter(active=True).order_by("added")