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