import os
import uuid
from django.core.urlresolvers import reverse
from django.db import models
from django.db.models import Q
from django.urls import reverse
from django.utils.translation import ugettext_lazy as _
from django.utils.timezone import now
from django.contrib.auth.models import User
from django.contrib.auth import get_user_model
from django.core.exceptions import ObjectDoesNotExist
from django.core.exceptions import ValidationError
@@ -19,6 +19,8 @@ from symposion.text_parser import parse
from symposion.conference.models import Section
from symposion.speakers.models import Speaker
User = get_user_model()
class ProposalSection(models.Model):
"""
@@ -30,7 +32,11 @@ class ProposalSection(models.Model):
* closed is NULL or False
section = models.OneToOneField(Section, verbose_name=_("Section"))
section = models.OneToOneField(
Section,
verbose_name=_("Section"),
on_delete=models.CASCADE,
)
start = models.DateTimeField(null=True, blank=True, verbose_name=_("Start"))
end = models.DateTimeField(null=True, blank=True, verbose_name=_("End"))
@@ -66,7 +72,12 @@ class ProposalKind(models.Model):
to distinguish the section as well as the kind.
section = models.ForeignKey(Section, related_name="proposal_kinds", verbose_name=_("Section"))
section = models.ForeignKey(
related_name="proposal_kinds",
name = models.CharField(_("Name"), max_length=100)
slug = models.SlugField(verbose_name=_("Slug"))
@@ -79,7 +90,11 @@ class ProposalBase(models.Model):
objects = InheritanceManager()
kind = models.ForeignKey(ProposalKind, verbose_name=_("Kind"))
kind = models.ForeignKey(
ProposalKind,
verbose_name=_("Kind"),
title = models.CharField(max_length=100, verbose_name=_("Title"))
abstract = models.TextField(
@@ -134,7 +149,12 @@ class ProposalBase(models.Model):
editable=False,
verbose_name=_("Submitted")
speaker = models.ForeignKey(Speaker, related_name="proposals", verbose_name=_("Speaker"))
speaker = models.ForeignKey(
Speaker,
related_name="proposals",
verbose_name=_("Speaker"),
# @@@ this validation used to exist as a validators keyword on additional_speakers
# M2M field but that is no longer supported by Django. Should be moved to
@@ -213,8 +233,16 @@ class AdditionalSpeaker(models.Model):
(SPEAKING_STATUS_DECLINED, _("Declined")),
]
speaker = models.ForeignKey(Speaker, verbose_name=_("Speaker"))
proposalbase = models.ForeignKey(ProposalBase, verbose_name=_("Proposalbase"))
proposalbase = models.ForeignKey(
ProposalBase,
verbose_name=_("Proposalbase"),
status = models.IntegerField(choices=SPEAKING_STATUS, default=SPEAKING_STATUS_PENDING, verbose_name=_("Status"))
class Meta:
@@ -239,9 +267,18 @@ def uuid_filename(instance, filename):
class SupportingDocument(models.Model):
proposal = models.ForeignKey(ProposalBase, related_name="supporting_documents", verbose_name=_("Proposal"))
proposal = models.ForeignKey(
related_name="supporting_documents",
verbose_name=_("Proposal"),
uploaded_by = models.ForeignKey(User, verbose_name=_("Uploaded by"))
uploaded_by = models.ForeignKey(
User,
verbose_name=_("Uploaded by"),
created_at = models.DateTimeField(default=now, verbose_name=_("Created at"))