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
...
 
@@ -11,2 +11,3 @@ from django.contrib.auth.models import User
 
from django.core.exceptions import ObjectDoesNotExist
 
from django.core.exceptions import ValidationError
 

	
...
 
@@ -108,4 +109,11 @@ class ProposalBase(models.Model):
 
    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)
...
 
@@ -149,3 +157,2 @@ class ProposalBase(models.Model):
 

	
 

	
 
reversion.register(ProposalBase)
...
 
@@ -172,2 +179,10 @@ class AdditionalSpeaker(models.Model):
 

	
 
    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
 

	
 

	
0 comments (0 inline, 0 general)