class AbstractCallRecord(models.Model): id = UUIDField(primary_key=True, default=uuid.uuid4, serialize=False, editable=False, unique=True) timestamp = models.DateTimeField('TIMESTAMP', null=False) call_id = UUIDField('CALL_ID', unique=True, null=False) class Meta: abstract = True
class _ModelWithUUIDPKABC(_ModelWithObjectsManagerAndDefaultMetaOptionsABC): uuid: UUIDField = \ UUIDField( verbose_name='UUID', help_text='UUID', null=False, blank=False, choices=None, db_column=None, db_index=True, db_tablespace=None, default=uuid4, editable=False, # error_messages={}, primary_key=True, unique=True, unique_for_date=None, unique_for_month=None, unique_for_year=None, # validators=() ) class Meta(_ModelWithObjectsManagerAndDefaultMetaOptionsABC.Meta): # pylint: disable=too-few-public-methods """Metadata.""" abstract = True
class People(Model): id = UUIDField(primary_key=True) name = CharField(max_length=128) gender = GenderField() age = CharField(max_length=64, blank=True) eye_color = CharField(max_length=64) hair_color = CharField(max_length=64)
class Listing(QuicksellModel): """Listing model.""" class Status(IntegerChoices): """Listing's poissble states.""" draft = 0, 'Draft' active = 1, 'Active' sold = 2, 'Sold' closed = 3, 'Closed' deleted = 4, 'Deleted' uuid = UUIDField(default=uuid.uuid4, unique=True, editable=False) title = CharField(max_length=200) description = TextField(null=True, blank=True) price = PositiveIntegerField() category = ForeignKey('Category', on_delete=SET(uncategorized)) status = PositiveSmallIntegerField(choices=Status.choices, default=0) quantity = PositiveIntegerField(default=1) sold = PositiveIntegerField(default=0) views = PositiveIntegerField(default=0) date_created = DateTimeField(default=datetime.now, editable=False) date_expires = DateTimeField(default=default_expiration_date) condition_new = BooleanField(default=False) properties = JSONField(null=True, blank=True) seller = ForeignKey('Profile', related_name='listings', on_delete=CASCADE) location = ForeignKey(**location_fk_kwargs) def __str__(self): return self.title
class DCFModel(DjangoModel, __implements__, IDCFModel[T]): class Meta: abstract = True objects: BaseManager[T] id = UUIDField(unique=True, primary_key=True, default=uuid4, editable=False) created_at = DateTimeField(auto_now_add=True) def __repr__(self) -> str: return f"<{self.__class__.__name__}: {self.pk}>" def __str__(self) -> str: return f"<{self.__class__.__name__}: {self.pk}>" @classmethod def from_model(cls, model: T) -> DCFModel[T]: assert isinstance(model, DCFModel) return model @classmethod def from_model_type(cls, model: Type[T]) -> Type[DCFModel[T]]: assert issubclass(model, DCFModel) return model
class CourseInvitation(models.Model): email = models.EmailField() course = models.ForeignKey(Course) uuid = UUIDField(default=uuid.uuid4, editable=False) invited_by = models.ForeignKey(User, related_name='invited_by') invited_at = models.DateTimeField(auto_now_add=True) accepted_at = models.DateTimeField(null=True) accepted_user = models.ForeignKey(User, null=True) def accepted(self): return self.accepted_at is not None
class TelephoneBill(models.Model): call_id = UUIDField(primary_key=True, default=uuid.uuid4, serialize=False, editable=False, unique=True) destination = CharField('DESTINATION', max_length=11, null=False) call_start_timestamp = models.DateTimeField('CALL_START_DATE', null=False) call_end_timestamp = models.DateTimeField('CALL_END_DATE', null=False) call_start_time = models.CharField('CALL_START_TIME', max_length=8, null=False) call_duration = models.CharField('CALL_DURATION', max_length=32, null=False) call_price = models.DecimalField(decimal_places=2, max_digits=17, default=Decimal("0.0"), null=False) source = CharField('SOURCE', max_length=11, null=False) class Meta: db_table = 'TelephoneBill' verbose_name = 'telephone_bill' verbose_name_plural = 'telephone_bills'
class IdempotencyKey(models.Model): uuid = UUIDField(max_length=36, primary_key=True, editable=False, default=uuid.uuid4) action = CharField(max_length=100) livemode = BooleanField(help_text="Whether the key was used in live or test mode.") created = DateTimeField(auto_now_add=True) class Meta: unique_together = ("action", "livemode") def __str__(self): return str(self.uuid) @property def is_expired(self): return timezone.now() > self.created + timedelta(hours=24)
class Flavor(Model): name = CharField(max_length=255) label = CharField(max_length=255) parent = ForeignKey("self", blank=True, null=True, on_delete=SET_NULL) float_value = FloatField(blank=True, null=True) decimal_value = DecimalField(blank=True, null=True, max_digits=10, decimal_places=2) uuid = UUIDField(default=uuid.uuid4) datetime = DateTimeField(blank=True, null=True) date = DateField(blank=True, null=True) time = TimeField(blank=True, null=True) duration = DurationField(blank=True, null=True) def __str__(self): return self.name
class Profile(QuicksellModel): """User profile info.""" user = OneToOneField( User, related_name='_profile', primary_key=True, editable=False, on_delete=CASCADE ) uuid = UUIDField(default=uuid.uuid4, unique=True, editable=False) date_created = DateField(default=date.today, editable=False) full_name = CharField(max_length=100, blank=True) about = TextField(blank=True) online = BooleanField(default=True) rating = IntegerField(default=0) avatar = ImageField(null=True, blank=True, upload_to='images/avatars') location = ForeignKey(**location_fk_kwargs) def __str__(self): return str(self.user) + "'s profile."
class Films(Model): id = UUIDField(primary_key=True) title = CharField(max_length=255) description = TextField() director = CharField(max_length=128) producer = CharField(max_length=128) release_date = PositiveSmallIntegerField(validators=[ # The Ghibli studio was founded in 1985, thus it can't release any # films before that date MinValueValidator(1985), # assume that "release date" is about real films and not for plans MaxValueValidator(tz_now().year + 1) ]) rt_score = PositiveSmallIntegerField() people = ManyToManyField(People, default=None) class Meta: ordering = ["pk"]
class _ModelWithUUIDPKMixInABC(Model): uuid = UUIDField( # https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.UUIDField null=False, blank=False, choices=None, db_column=None, db_index=True, db_tablespace=None, default=uuid4, editable=False, # error_messages=None, help_text='UUID Primary Key', primary_key=True, unique=True, unique_for_date=None, unique_for_month=None, unique_for_year=None, verbose_name='UUID Primary Key', # validators=() ) class Meta: abstract = True
def _load_period_ipstat(fill_date: date, period: timedelta): end_time = timezone.make_aware( time(hour=23, minute=59, second=59, microsecond=999999)) end_date = datetime.combine(fill_date, end_time) start_date = (end_date - period).replace(hour=0, minute=0, second=0, microsecond=0) return Lead.objects \ .filter(session_started__range=(start_date, end_date)) \ .filter(ip_addr__isnull=False) \ .values('ip_addr', 'geo', 'geo__country', 'geo__postal_code', 'provider') \ .annotate(s_cnt=Count('id')) \ .annotate(s_time=Sum(ExpressionWrapper( Coalesce('created', 'last_event_time') - F('session_started'), output_field=DurationField()))) \ .annotate(s0_cnt=Count(Case( When(created__isnull=True, then=F('id')), default=None, output_field=UUIDField()))) \ .annotate(s_beg=Cast(Avg( Cast(F('session_started'), output_field=TimeField()) ), output_field=TimeField())) \ .annotate(user_ids=ArrayAgg('pixel__project__user__id', distinct=True))\ .annotate(cnt_dev=Count('device_id'))