class BlackListGuid(BaseModel): id = models.AutoField(primary_key=True) guid = LowercaseCharField(max_length=255, unique=True, db_index=True) @property def _id(self): return self.guid
class Guid(BaseModel): """Stores either a short guid or long object_id for any model that inherits from BaseIDMixin. Each ID field (e.g. 'guid', 'object_id') MUST have an accompanying method, named with 'initialize_<ID type>' (e.g. 'initialize_guid') that generates and sets the field. """ primary_identifier_name = '_id' id = models.AutoField(primary_key=True) _id = LowercaseCharField(max_length=255, null=False, blank=False, default=generate_guid, db_index=True, unique=True) referent = GenericForeignKey() content_type = models.ForeignKey(ContentType, null=True, blank=True) object_id = models.PositiveIntegerField(null=True, blank=True) created = NonNaiveDateTimeField(db_index=True, auto_now_add=True) def __repr__(self): return '<id:{0}, referent:({1})>'.format(self._id, self.referent.__repr__()) # Override load in order to load by GUID @classmethod def load(cls, data): try: return cls.objects.get(_id=data) except cls.DoesNotExist: return None class Meta: ordering = ['-created'] get_latest_by = 'created' index_together = ( ('content_type', 'object_id', 'created'), )
class NotableEmailDomain(BaseModel): class Note(IntEnum): EXCLUDE_FROM_ACCOUNT_CREATION = 0 ASSUME_HAM_UNTIL_REPORTED = 1 @classmethod def choices(cls): return [(int(enum_item), enum_item.name) for enum_item in cls] domain = LowercaseCharField(max_length=255, unique=True, db_index=True) note = models.IntegerField( choices=Note.choices(), default=Note.EXCLUDE_FROM_ACCOUNT_CREATION, ) def __repr__(self): return f'<{self.__class__.__name__}: {self.domain} ({self.Note(self.note).name})>' def __str__(self): return repr(self)
class BlacklistedEmailDomain(BaseModel): domain = LowercaseCharField(max_length=255, unique=True, db_index=True) def __unicode__(self): return self.domain