class Inbox(SearchableAbstract): """Inbox model Object manager has a custom create() method to generate a random local part and a from_string() method to grab an Inbox object from the database given a string "inbox@domain" """ inbox = models.CharField( max_length=64, validators=[validators.ProhibitNullCharactersValidator()]) domain = models.ForeignKey(Domain, on_delete=models.PROTECT) user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL) created = models.DateTimeField('Created') description = models.CharField( max_length=256, null=True, blank=True, validators=[validators.ProhibitNullCharactersValidator()]) deleted = models.BooleanField(default=False) new = models.BooleanField(default=False) exclude_from_unified = models.BooleanField( default=False, verbose_name=_("Exclude from Unified Inbox")) disabled = models.BooleanField( default=False, verbose_name=_("Disable Inbox"), help_text=_("This Inbox will no longer receive emails.")) pinned = models.BooleanField(default=False, verbose_name=_("Pin Inbox to top")) objects = InboxQuerySet.as_manager() _bool_label_order = ["new", "disabled", "pinned"] def get_bools_for_labels(self): for key in self._bool_label_order: yield (key, getattr(self, key)) def __str__(self): return u"%s@%s" % (self.inbox, self.domain.domain) def __repr__(self): u_rep = str(self) if self.deleted: u_rep = "%s (deleted)" % u_rep return smart_str(u'<%s: %s>' % (self.__class__.__name__, u_rep), errors="replace") def index_search_a(self): return self.description or "" def index_search_b(self): return str(self) class Meta: verbose_name_plural = "Inboxes" unique_together = (('inbox', 'domain'), ) indexes = [GinIndex(fields=["search_tsv"])]
class Inbox(models.Model): """Inbox model Object manager has a custom create() method to generate a random local part and a from_string() method to grab an Inbox object from the database given a string "inbox@domain" `flags` are "deleted" and "new". * "deleted" is obvious (and should be used instead of deleting the model) * "new" should be set when an email is added to the inbox and unset when the inbox is viewed * "disabled" is a bit like "deleted", but incoming mail will be deffered, not rejected """ inbox = models.CharField( max_length=64, validators=[validators.ProhibitNullCharactersValidator()]) domain = models.ForeignKey(Domain, on_delete=models.PROTECT) user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL) created = models.DateTimeField('Created') flags = BitField(flags=("deleted", "new", "exclude_from_unified", "disabled", "pinned"), default=0) description = models.CharField( max_length=256, null=True, blank=True, validators=[validators.ProhibitNullCharactersValidator()]) deleted = models.BooleanField(default=False) new = models.BooleanField(default=False) exclude_from_unified = models.BooleanField(default=False) disabled = models.BooleanField(default=False) pinned = models.BooleanField(default=False) objects = InboxQuerySet.as_manager() def __str__(self): return u"%s@%s" % (self.inbox, self.domain.domain) def __repr__(self): u_rep = six.text_type(self) if self.flags.deleted: u_rep = "%s (deleted)" % u_rep return smart_str(u'<%s: %s>' % (self.__class__.__name__, u_rep), errors="replace") class Meta: verbose_name_plural = "Inboxes" unique_together = (('inbox', 'domain'), )