Skip to content

Commit

Permalink
added notion of a primary address
Browse files Browse the repository at this point in the history
git-svn-id: http://django-email-confirmation.googlecode.com/svn/trunk@24 e143efbd-a74b-0410-b764-bd10452ab0ba
  • Loading branch information
jtauber committed May 4, 2008
1 parent fae9ae8 commit 1776f7a
Showing 1 changed file with 22 additions and 1 deletion.
23 changes: 22 additions & 1 deletion devproject/emailconfirmation/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,15 +20,36 @@ def add_email(self, user, email):
return email_address
except IntegrityError:
return None

def get_primary(self, user):
try:
return self.get(user=user, primary=True)
except EmailAddress.DoesNotExist:
return None


class EmailAddress(models.Model):

user = models.ForeignKey(User)
email = models.EmailField()
verified = models.BooleanField(default=False)
primary = models.BooleanField(default=False)

objects = EmailAddressManager()

def set_as_primary(self, conditional=False):
old_primary = EmailAddress.objects.get_primary(self.user)
if old_primary:
if conditional:
return False
old_primary.primary = False
old_primary.save()
self.primary = True
self.save()
self.user.email = self.email
self.user.save()
return True

def __unicode__(self):
return u"%s (%s)" % (self.email, self.user)

Expand All @@ -51,6 +72,7 @@ def confirm_email(self, confirmation_key):
if not confirmation.key_expired():
email_address = confirmation.email_address
email_address.verified = True
email_address.set_as_primary(conditional=True)
email_address.save()
return email_address

Expand All @@ -65,7 +87,6 @@ def send_confirmation(self, email_address):
})
# @@@ eventually use django-mailer
send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [email_address.email])
print "sent %s '%s' to %s" % (subject, message, email_address.email)

return self.create(email_address=email_address, sent=datetime.now(), confirmation_key=confirmation_key)

Expand Down

0 comments on commit 1776f7a

Please sign in to comment.