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.
 
 
 
 
 
 

54 lines
1.6 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, activated=True)
def valid_subscribers(self):
"""Return only valid subscribers"""
return self.subscribers().filter(valid=True, activated=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
def create_contact(self, email, user=None, create_setting=False):
contact = self.model(user=user, email=email)
if user:
contact.first_name = user.first_name
contact.last_name = user.last_name
contact.save()
contact.send_activation()
if create_setting:
from .models import ContactSettings
sett = ContactSettings(contact=contact, exponent_practicum=False, organiser_practicum=False)
sett.save()
return contact