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