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
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 |