You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

40 lines
1.1 KiB

"""Managers for emencia.django.newsletter"""
from django.db import models
from accounts.models import User
class ContactManager(models.Manager):
"""Manager for the contacts"""
def subscribers(self):
"""Return all subscribers"""
return self.get_query_set().filter(subscriber=True)
def unsubscribers(self):
"""Return all unsubscribers"""
return self.get_query_set().filter(subscriber=False)
def valids(self):
"""Return only valid contacts"""
return self.get_query_set().filter(valid=True)
def valid_subscribers(self):
"""Return only valid subscribers"""
return self.subscribers().filter(valid=True)
def activate(self, activation_key):
try:
contact = self.get(activation_code=activation_key)
except self.model.DoesNotExist:
return None
contact.activated = True
try:
user = User.objects.get(username=contact.email)
except User.DoesNotExist:
user = None
contact.user = user
contact.save()
return contact