Changeset - 249eae067b51
[Not reviewed]
Merge
0 4 0
Patrick Altman - 9 years ago 2015-08-03 12:48:34
paltman@gmail.com
Merge pull request #109 from miurahr/fix_additional_speakers_constraint

add more addtitional speakers constraints
1 file changed with 17 insertions and 2 deletions:
0 comments (0 inline, 0 general)
symposion/proposals/models.py
Show inline comments
...
 
@@ -8,8 +8,9 @@ from django.utils.translation import ugettext_lazy as _
 
from django.utils.timezone import now
 

	
 
from django.contrib.auth.models import User
 
from django.core.exceptions import ObjectDoesNotExist
 
from django.core.exceptions import ValidationError
 

	
 
import reversion
 

	
 
from markitup.fields import MarkupField
...
 
@@ -105,10 +106,17 @@ class ProposalBase(models.Model):
 
        default=now,
 
        editable=False,
 
    )
 
    speaker = models.ForeignKey(Speaker, related_name="proposals")
 

	
 
    def additional_speaker_validator(self, a_speaker):
 
        if a_speaker.speaker.email == self.speaker.email:
 
            raise ValidationError(_("%s is same as primary speaker.") % a_speaker.speaker.email)
 
        if a_speaker in [self.additional_speakers]:
 
            raise ValidationError(_("%s has already been in speakers.") % a_speaker.speaker.email)
 

	
 
    additional_speakers = models.ManyToManyField(Speaker, through="AdditionalSpeaker",
 
                                                 blank=True)
 
                                                 blank=True, validators=[additional_speaker_validator])
 
    cancelled = models.BooleanField(default=False)
 

	
 
    def can_edit(self):
 
        return True
...
 
@@ -146,9 +154,8 @@ class ProposalBase(models.Model):
 
            "speakers": ', '.join([x.name for x in self.speakers()]),
 
            "kind": self.kind.name,
 
        }
 

	
 

	
 
reversion.register(ProposalBase)
 

	
 

	
 
class AdditionalSpeaker(models.Model):
...
 
@@ -169,8 +176,16 @@ class AdditionalSpeaker(models.Model):
 

	
 
    class Meta:
 
        unique_together = ("speaker", "proposalbase")
 

	
 
    def __unicode__(self):
 
        if self.status is self.SPEAKING_STATUS_PENDING:
 
            return _(u"pending speaker (%s)") % self.speaker.email
 
        elif self.status is self.SPEAKING_STATUS_DECLINED:
 
            return _(u"declined speaker (%s)") % self.speaker.email
 
        else:
 
            return self.speaker.name
 

	
 

	
 
def uuid_filename(instance, filename):
 
    ext = filename.split(".")[-1]
 
    filename = "%s.%s" % (uuid.uuid4(), ext)
0 comments (0 inline, 0 general)