Author: leidel
Date: Tue Jan 20 17:28:05 2009
New Revision: 42
Modified:
trunk/devproject/emailconfirmation/models.py
Log:
Fix issue 5 - get rid of newlines in email subject, fix indentation and
line length
Modified: trunk/devproject/emailconfirmation/models.py
==============================================================================
--- trunk/devproject/emailconfirmation/models.py (original)
+++ trunk/devproject/emailconfirmation/models.py Tue Jan 20 17:28:05 2009
@@ -16,7 +16,7 @@
# this code based in-part on django-registration
class EmailAddressManager(models.Manager):
-
+
def add_email(self, user, email):
try:
email_address = self.create(user=user, email=email)
@@ -24,30 +24,31 @@
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
-
+
def get_users_for(self, email):
"""
returns a list of users with the given email.
"""
- # this is a list rather than a generator because we probably want
to do a len() on it right away
- return [address.user for address in
EmailAddress.objects.filter(verified=True, email=email)]
-
+ # this is a list rather than a generator because we probably want
to
+ # do a len() on it right away
+ return [address.user for address in EmailAddress.objects.filter(
+ verified=True, email=email)]
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:
@@ -60,10 +61,10 @@
self.user.email = self.email
self.user.save()
return True
-
+
def __unicode__(self):
return u"%s (%s)" % (self.email, self.user)
-
+
class Meta:
verbose_name = _("e-mail address")
verbose_name_plural = _("e-mail addresses")
@@ -73,7 +74,7 @@
class EmailConfirmationManager(models.Manager):
-
+
def confirm_email(self, confirmation_key):
try:
confirmation = self.get(confirmation_key=confirmation_key)
@@ -85,14 +86,15 @@
email_address.set_as_primary(conditional=True)
email_address.save()
return email_address
-
+
def send_confirmation(self, email_address):
salt = sha.new(str(random())).hexdigest()[:5]
confirmation_key = sha.new(salt + email_address.email).hexdigest()
current_site = Site.objects.get_current()
activate_url = u"http://%s%s" % (
unicode(current_site.domain),
- reverse("emailconfirmation.views.confirm_email",
args=(confirmation_key,))
+ reverse("emailconfirmation.views.confirm_email",
+ args=(confirmation_key,))
)
context = {
"user": email_address.user,
@@ -100,30 +102,39 @@
"current_site": current_site,
"confirmation_key": confirmation_key,
}
- subject =
render_to_string("emailconfirmation/email_confirmation_subject.txt",
context)
- message =
render_to_string("emailconfirmation/email_confirmation_message.txt",
context)
- send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,
[email_address.email], priority="high")
-
- return self.create(email_address=email_address,
sent=datetime.now(), confirmation_key=confirmation_key)
-
+ subject = render_to_string(
+ "emailconfirmation/email_confirmation_subject.txt", context)
+ # remove superfluous line breaks
+ subject = "".join(subject.splitlines())
+
+ message = render_to_string(
+ "emailconfirmation/email_confirmation_message.txt", context)
+
+ send_mail(subject, message, settings.DEFAULT_FROM_EMAIL,
+ [email_address.email], priority="high")
+
+ return self.create(email_address=email_address,
sent=datetime.now(),
+ confirmation_key=confirmation_key)
+
def delete_expired_confirmations(self):
for confirmation in self.all():
if confirmation.key_expired():
confirmation.delete()
class EmailConfirmation(models.Model):
-
+
email_address = models.ForeignKey(EmailAddress)
sent = models.DateTimeField()
confirmation_key = models.CharField(max_length=40)
-
+
objects = EmailConfirmationManager()
-
+
def key_expired(self):
- expiration_date = self.sent +
timedelta(days=settings.EMAIL_CONFIRMATION_DAYS)
+ expiration_date = self.sent + timedelta(
+ days=settings.EMAIL_CONFIRMATION_DAYS)
return expiration_date <= datetime.now()
key_expired.boolean = True
-
+
def __unicode__(self):
return u"confirmation for %s" % self.email_address
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"pinax-updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/pinax-updates?hl=en
-~----------~----~----~----~------~----~------~--~---