diff --git a/vendor/symposion/proposals/models.py b/vendor/symposion/proposals/models.py index 08120eca852b473430d9664ab8bdb250ee202288..bc3f295e7c6df33d2bde613033d4625f49aa1a10 100644 --- a/vendor/symposion/proposals/models.py +++ b/vendor/symposion/proposals/models.py @@ -1,13 +1,13 @@ 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( + Section, + related_name="proposal_kinds", + verbose_name=_("Section"), + on_delete=models.CASCADE, + ) 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"), + on_delete=models.CASCADE, + ) 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"), + on_delete=models.CASCADE, + ) # @@@ 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")) + speaker = models.ForeignKey( + Speaker, + verbose_name=_("Speaker"), + on_delete=models.CASCADE, + ) + proposalbase = models.ForeignKey( + ProposalBase, + verbose_name=_("Proposalbase"), + on_delete=models.CASCADE, + ) 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( + ProposalBase, + related_name="supporting_documents", + verbose_name=_("Proposal"), + on_delete=models.CASCADE, + ) - uploaded_by = models.ForeignKey(User, verbose_name=_("Uploaded by")) + uploaded_by = models.ForeignKey( + User, + verbose_name=_("Uploaded by"), + on_delete=models.CASCADE, + ) created_at = models.DateTimeField(default=now, verbose_name=_("Created at"))