Esempio n. 1
0
class Car(TimeStampedModel):
    id = models.UUIDField(verbose_name='ID', default=uuid.uuid4, editable=False, primary_key=True)
    active = models.BooleanField()
    year = models.SmallIntegerField(verbose_name='Year',
                                    validators=[MinValueValidator(1900)],
                                    blank=True, null=True)
    mileage = models.PositiveIntegerField()
    price = models.PositiveIntegerField()
    submodel = models.ForeignKey(Submodel, on_delete=models.PROTECT)
    body_type = models.CharField(max_length=300, blank=True)
    transmission = models.CharField(max_length=300, blank=True)
    fuel_type = models.CharField(max_length=300, blank=True)
    exterior_color = models.CharField(max_length=300, blank=True)
    created_at = AutoCreatedField()
    updated_at = AutoLastModifiedField()

    class Meta:
        verbose_name = 'car'
        verbose_name_plural = 'cars'

    @property
    def model(self):
        return self.submodel.model

    @property
    def make(self):
        return self.submodel.model.make
Esempio n. 2
0
class Model(models.Model):
    id = models.CharField(max_length=300, primary_key=True)
    name = models.CharField(max_length=300, blank=True)
    active = models.BooleanField()
    make = models.ForeignKey(Make, on_delete=models.PROTECT, related_name='models')
    created_at = AutoCreatedField()
    updated_at = AutoLastModifiedField()
Esempio n. 3
0
class PersonFilmWork(models.Model):
    id = models.UUIDField(primary_key=True,
                          default=uuid4,
                          editable=False,
                          db_index=True)
    film_work = models.ForeignKey(
        FilmWork,
        verbose_name=_('кинопроизведение'),
        related_name='person_film_work',
        on_delete=models.CASCADE,
    )
    person = models.ForeignKey(
        Person,
        verbose_name=_('персона'),
        related_name='person_film_work',
        on_delete=models.CASCADE,
    )
    role = models.CharField(_('роль'),
                            choices=RoleType.choices,
                            max_length=255)
    created_at = AutoCreatedField(_('добавлено'))

    class Meta:
        managed = False
        db_table = 'content"."person_film_work'
        verbose_name = _('связь фильмов и персоналий')
        verbose_name_plural = _('связи фильмов и персоналий')
        unique_together = (('film_work_id', 'person_id', 'role'), )

    def __str__(self):
        return f'{self.person.full_name} as {self.role} @ "{self.film_work.title}"'
Esempio n. 4
0
class Link(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
    created = AutoCreatedField()
    modified = AutoLastModifiedField()

    title = models.CharField(max_length=128)
    url = models.URLField()
    imageUrl = models.URLField(default="")
    description = models.TextField(default="")

    order = models.IntegerField(default=1)

    objects = LinkManager()

    owner = models.ForeignKey("account.User",
                              on_delete=models.CASCADE,
                              related_name="links")

    list = models.ForeignKey(List,
                             on_delete=models.CASCADE,
                             related_name="links")

    class Meta:
        ordering = ("order", )
        index_together = ("list", "order")

    def __str__(self):
        return f"<Link - {self.title}>"
Esempio n. 5
0
class Package(models.Model):
    created = AutoCreatedField(db_index=True)

    modified = AutoLastModifiedField()

    name = models.SlugField(max_length=200, unique=True)

    #: Indicate if this package is local (a private package)
    is_local = models.BooleanField(default=False)

    #: Timestamp when we last retrieved the metadata
    update_timestamp = models.DateTimeField(null=True)

    owners = models.ManyToManyField(User)

    class Meta:
        ordering = ['name']

    def __unicode__(self):
        return self.name

    @models.permalink
    def get_absolute_url(self):
        return ('packages:detail', None, {'name': self.name})

    def get_all_releases(self):
        result = {}
        for release in self.releases.all():
            files = dict((r.filename, r) for r in release.files.all())
            result[release.version] = (release, files)
        return result

    @property
    def last_release(self):
        return self.releases.order_by('-created')[0]
Esempio n. 6
0
class FilmWork(models.Model):
    id = models.UUIDField(primary_key=True,
                          default=uuid4,
                          editable=False,
                          db_index=True)
    title = models.CharField(_('название'), max_length=255)
    description = models.TextField(_('описание'), blank=True)
    creation_date = models.DateField(_('дата создания фильма'),
                                     blank=True,
                                     null=True)
    certificate = models.TextField(_('сертификат'), blank=True, null=True)
    file_path = models.FileField(_('файл'),
                                 upload_to='film_works/',
                                 blank=True)
    rating = models.FloatField(_('рейтинг'),
                               validators=[MinValueValidator(0)],
                               blank=True,
                               null=True)
    type = models.CharField(_('тип'),
                            choices=FilmWorkType.choices,
                            max_length=255)
    created_at = AutoCreatedField(_('добавлено'))
    updated_at = AutoLastModifiedField(_('обновлено'))

    class Meta:
        managed = False
        db_table = 'content"."film_work'
        # db_tablespace = 'content'
        verbose_name = _('кинопроизведение')
        verbose_name_plural = _('кинопроизведения')

    def __str__(self):
        return self.title
Esempio n. 7
0
class Robot(models.Model):
    name = models.CharField("名字", max_length=20)
    pair = models.CharField("交易对", max_length=15)
    enable = models.BooleanField("启用", default=True)
    start_time = models.DateTimeField("启动时间", null=True)
    ping_time = models.DateTimeField("心跳时间", null=True)
    created_at = AutoCreatedField("创建于")
    modified_at = AutoLastModifiedField("修改于")
    credential = models.ForeignKey(
        "credentials.Credential",
        verbose_name="交易所凭据",
        blank=True,
        null=True,
        on_delete=models.SET_NULL,
        related_name="robots",
    )
    user = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        verbose_name="用户",
        on_delete=models.CASCADE,
        related_name="robots",
    )

    class Meta:
        verbose_name = "机器人"
        verbose_name_plural = "机器人"
Esempio n. 8
0
class AccessKey(models.Model):
    created = AutoCreatedField()

    user = models.ForeignKey(
        settings.AUTH_USER_MODEL, related_name='access_keys', on_delete=models.CASCADE)

    access_key = models.UUIDField(
        verbose_name='Access key', help_text='The access key',
        default=uuid.uuid4, db_index=True)
    secret_key = models.UUIDField(
        verbose_name='Secret key', help_text='The secret key',
        default=uuid.uuid4, db_index=True)
    comment = models.CharField(
        max_length=255, blank=True, null=True, default='',
        help_text=_(
            "A comment about this credential, e.g. where it's being used"))
    last_usage = models.DateTimeField(null=True, blank=True)

    objects = AccessKeyQuerySet.as_manager()

    class Meta:
        ordering = ['-created']

    @property
    def allow_upload(self):
        return True
Esempio n. 9
0
class TimeStampedModel(models.Model):
    """
    An abstract base class model that provides self-updating
    ``created`` and ``modified`` fields.

    """
    created = AutoCreatedField(_('created'))
    modified = AutoLastModifiedField(_('modified'))

    def save(self, *args, **kwargs):
        """
        Overriding the save method in order to make sure that
        modified field is updated even if it is not given as
        a parameter to the update field argument.
        """
        update_fields = kwargs.get('update_fields', None)
        if update_fields is not None:
            update_fields = set(update_fields)
            if update_fields:
                kwargs['update_fields'] = update_fields.union({'modified'})

        super().save(*args, **kwargs)

    class Meta:
        abstract = True
Esempio n. 10
0
class Tag(models.Model):
    name = models.CharField(_("Name"), max_length=255, unique=True)
    created = AutoCreatedField(_('Created'))
    uuid = models.UUIDField(unique=True, default=uuid4, editable=False)

    objects = TagQuerySet.as_manager()

    def __str__(self):
        return "#%s" % self.name

    def get_absolute_url(self):
        slugified_name = slugify(self.name)
        if not slugified_name:
            return reverse('streams:tag-by-uuid', kwargs={"uuid": str(self.uuid)})
        return reverse('streams:tag', kwargs={"name": slugified_name})

    def save(self, *args, **kwargs):
        """Ensure name is lower case and stripped.

        Note this could lead to unique constraints when saving - make sure to also lower case and trim
        the name when fetching tags, or use the given manager for that.
        """
        self.name = self.name.strip().lower()
        super().save()

    @cached_property
    def channel_group_name(self):
        """Make a safe Channel group name.

        ASCII or hyphens or periods only.
        """
        # TODO use just id
        return ("%s_%s" % (self.id, slugify(self.name)))[:80]
Esempio n. 11
0
class Credential(models.Model):
    """Credentials are repository bound"""
    created = AutoCreatedField()

    repository = models.ForeignKey('packages.Repository', related_name='credentials', on_delete=models.CASCADE)
    access_key = models.UUIDField(
        verbose_name='Access key',
        help_text='The access key',
        default=uuid.uuid4, db_index=True)
    secret_key = models.UUIDField(
        verbose_name='Secret key',
        help_text='The secret key', default=uuid.uuid4, db_index=True)
    comment = models.CharField(
        max_length=255, blank=True, null=True, default='',
        help_text="A comment about this credential, e.g. where it's being used")

    allow_upload = models.BooleanField(
        default=True,
        help_text=_("Indicate if these credentials allow uploading new files"))
    deactivated = models.DateTimeField(blank=True, null=True)

    objects = CredentialQuerySet.as_manager()

    def __str__(self):
        return self.access_key.hex

    class Meta:
        ordering = ['-created']
Esempio n. 12
0
class AccessKey(models.Model):
    created = AutoCreatedField()

    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             related_name='access_keys')

    access_key = UUIDField(verbose_name='Access key',
                           help_text='The access key',
                           auto=True,
                           db_index=True)
    secret_key = UUIDField(verbose_name='Secret key',
                           help_text='The secret key',
                           auto=True,
                           db_index=True)
    comment = models.CharField(
        max_length=255,
        blank=True,
        null=True,
        default='',
        help_text=_(
            "A comment about this credential, e.g. where it's being used"))
    last_usage = models.DateTimeField(null=True, blank=True)

    class Meta:
        ordering = ['-created']
Esempio n. 13
0
class Tag(models.Model):
    name = models.CharField(_("Name"), max_length=255, unique=True)
    created = AutoCreatedField(_('Created'))

    objects = TagQuerySet.as_manager()

    def __str__(self):
        return "#%s" % self.name

    def save(self, *args, **kwargs):
        """Ensure name is lower case and stripped.

        Note this could lead to unique constraints when saving - make sure to also lower case and trim
        the name when fetching tags, or use the given manager for that.
        """
        self.name = self.name.strip().lower()
        super().save()

    @cached_property
    def channel_group_name(self):
        """Make a safe Channel group name.

        ASCII or hyphens or periods only.
        Prefix with ID as we have to slugify the name and cut long guids due to asgi library group name restriction.
        """
        return ("%s_%s" % (self.id, slugify(self.name)))[:80]
Esempio n. 14
0
class Partner(models.Model):
    BUSINESS_SECTOR = Choices(
        (1, 'aneka_industri', 'Aneka Industri'),
        (2, 'barang_konsumsi', 'Barang Konsumsi'),
        (3, 'industri_dasar_dan_kimia', 'Industri Dasar dan Kimia'),
        (4, 'infrastruktur', 'Infrastruktur'),
        (5, 'jasa', 'Jasa'),
        (6, 'keuangan', 'Keuangan'),
        (7, 'perdagangan', 'Perdagangan'),
        (8, 'pertambangan', 'Pertambangan'),
        (9, 'pertanian', 'Pertanian'),
        (10, 'properti', 'Properti'),
        (11, 'transportasi', 'Transportasi'),
    )

    name = models.CharField(max_length=64, unique=True, db_index=True)
    director = models.CharField(max_length=64, blank=True)
    person_in_charge = models.CharField(max_length=64, blank=True)
    business_sector = models.PositiveSmallIntegerField(choices=BUSINESS_SECTOR,
                                                       blank=True,
                                                       null=True)
    address = models.CharField(max_length=256)
    npwp = models.CharField(max_length=32, blank=True)
    siup = models.CharField(max_length=32, blank=True)
    ptkp = models.CharField(max_length=32, blank=True)
    telephone = models.CharField(max_length=32, blank=True)
    fax = models.CharField(max_length=32, blank=True)
    is_active = models.BooleanField('active', default=True)
    created = AutoCreatedField()

    def __str__(self):
        return self.name
Esempio n. 15
0
class Addendum(models.Model):
    document = models.ForeignKey('documents.Document',
                                 related_name="addendums",
                                 on_delete=models.CASCADE)
    number = models.CharField(max_length=64, db_index=True)
    subject = models.CharField(max_length=256)
    signature_date = models.DateField(blank=True, null=True)
    effective_date = models.DateField(blank=True, null=True)
    expired_date = models.DateField(blank=True, null=True)
    amount = models.FloatField(validators=[MinValueValidator(0)],
                               blank=True,
                               null=True)
    description = models.TextField(blank=True)

    job_specification = models.CharField(max_length=256, blank=True)
    retention_period = models.PositiveSmallIntegerField(blank=True, null=True)

    is_active = models.BooleanField('active', default=True)
    created = AutoCreatedField()

    class Meta:
        unique_together = ('document', 'number')

    def __str__(self):
        return f"Number ({self.number}) : {self.subject}"
Esempio n. 16
0
class BasePermission(models.Model):
    class Meta:
        abstract = True

    user = models.ForeignKey(on_delete=models.CASCADE,
                             to=settings.AUTH_USER_MODEL,
                             db_index=True)
    created_by = models.ForeignKey(on_delete=models.CASCADE,
                                   to=settings.AUTH_USER_MODEL,
                                   null=True,
                                   blank=True,
                                   related_name='+')
    created = AutoCreatedField()
    expiration_time = models.DateTimeField(null=True, blank=True)
    is_active = models.NullBooleanField(default=True, db_index=True)

    @classmethod
    def get_url_name(cls):
        raise NotImplementedError

    @classmethod
    def get_expired(cls):
        return cls.objects.filter(expiration_time__lt=timezone.now(),
                                  is_active=True)

    @classmethod
    @lru_cache(maxsize=1)
    def get_all_models(cls):
        return [model for model in apps.get_models() if issubclass(model, cls)]

    def revoke(self):
        raise NotImplementedError
Esempio n. 17
0
class GenreFilmWork(models.Model):
    id = models.UUIDField(primary_key=True,
                          default=uuid4,
                          editable=False,
                          db_index=True)
    film_work = models.ForeignKey(
        FilmWork,
        verbose_name=_('кинопроизведение'),
        related_name='genre_film_work',
        on_delete=models.CASCADE,
    )
    genre = models.ForeignKey(
        Genre,
        verbose_name=_('жанр'),
        related_name='genre_film_work',
        on_delete=models.CASCADE,
    )
    created_at = AutoCreatedField(_('добавлено'))

    class Meta:
        managed = False
        db_table = 'content"."genre_film_work'
        verbose_name = _('связь фильмов и жанров')
        verbose_name_plural = _('связи фильмов и жанров')
        unique_together = (('film_work_id', 'genre_id'), )

    def __str__(self):
        return f'[{self.genre.name}] {self.film_work.title}'
Esempio n. 18
0
class Location(models.Model):
    code = models.CharField(max_length=16, unique=True, db_index=True)
    name = models.CharField(max_length=255, db_index=True)
    is_active = models.BooleanField(default=True)
    created = AutoCreatedField()

    def __str__(self):
        return self.name
Esempio n. 19
0
class VoiceMemo(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    created = AutoCreatedField()
    sample = models.ForeignKey('Sample', null=True)
    file_path = models.CharField(max_length=1024)

    class Meta:
        db_table = 'voice_memo'
Esempio n. 20
0
class Event(UuidMixin):
    created = AutoCreatedField()
    event_type = models.CharField(max_length=100, db_index=True)
    message = models.TextField()
    context = BetterJSONField(blank=True)

    class Meta:
        ordering = ('-created', )
Esempio n. 21
0
class Creatable(models.Model):
    """
    """

    created = AutoCreatedField(_("created"))

    class Meta:
        abstract = True
Esempio n. 22
0
class SSHKey(models.Model):
    """
    SSH Key model.
    """
    name = models.CharField(
        _('SSH Key Name'),
        unique=True,
        null=False,
        max_length=32,
        blank=False,
        validators=[
            MinLengthValidator(3),
            MaxLengthValidator(32),
            RegexValidator(regex='^[0-9A-Za-z\s_.-]+$',
                           message=_('Only A-Za-z0-9\s_-. are allowed!'))
        ])
    sshkey = models.TextField(_('SSH Key'),
                              null=False,
                              validators=[validate_sshkey])
    created = AutoCreatedField(_('created'))
    updated = AutoLastModifiedField(_('updated'))

    class Meta:
        ordering = ['name']

    def clean(self):
        self.name = self.name.strip()
        if self.sshkey:
            self.sshkey = self.sshkey.strip().rstrip()

    def ssh_key_entry(self):
        return self.sshkey + " " + self.name

    def __str__(self):
        return self.name

    def get_absolute_url(self):
        return reverse('sshkey_detail', kwargs={'pk': self.pk})

    def sshkey_short(self):
        return self.sshkey[0:30]

    def all_as_array():
        all = []
        for key in SSHKey.objects.all():
            all.append(key.name)
        return all

    def filename2name(filename):
        """
        This method is used for import of SSH Keys from the Filesystem.
        It will return a useful clear name to insert it into DB from
        the filename of the Key.
         """
        filename = filename.strip()
        filename = re.sub(r'\.pub$', '', filename)
        name = re.sub(r'(-|_|\.)', ' ', filename)
        return name.title()
Esempio n. 23
0
class TimeStampedModel(models.Model):
    """
    self-updating created and modified fields
    """
    created = AutoCreatedField(_('created'), editable=False)
    modified = AutoLastModifiedField(_('modified'), editable=False)

    class Meta:
        abstract = True
Esempio n. 24
0
class TimeStampedMixin(models.Model):
    """
    Add timestamp control to a model.
    """
    created_at = AutoCreatedField(_('criado em'))
    updated_at = AutoLastModifiedField(_('modificado em'))

    class Meta:
        abstract = True
Esempio n. 25
0
class PyPIIndexPage(models.Model):

    created = AutoCreatedField("created", db_index=True)
    modified = AutoLastModifiedField("modified")

    content = models.TextField()

    def __unicode__(self):
        return "PyPI Index Page: %s" % self.created.isoformat()
Esempio n. 26
0
class ReleaseFile(models.Model):

    TYPES = Choices(
        ('sdist', 'Source'),
        ('bdist_egg', 'Egg'),
        ('bdist_msi', 'MSI'),
        ('bdist_dmg', 'DMG'),
        ('bdist_rpm', 'RPM'),
        ('bdist_dumb', 'bdist_dumb'),
        ('bdist_wininst', 'bdist_wininst'),
        ('bdist_wheel', 'bdist_wheel'),
    )

    created = AutoCreatedField()

    modified = AutoLastModifiedField()

    release = models.ForeignKey(Release, related_name="files")

    size = models.IntegerField(null=True)

    filetype = models.CharField(max_length=25, choices=TYPES)

    distribution = models.FileField(upload_to=release_file_upload_to,
                                    storage=DistributionStorage(),
                                    max_length=512)

    filename = models.CharField(max_length=200, blank=True, null=True)

    md5_digest = models.CharField(max_length=512)

    python_version = models.CharField(max_length=25)

    url = models.CharField(max_length=1024, blank=True)

    user = models.ForeignKey(User, null=True)

    class Meta:
        unique_together = ('release', 'filetype', 'python_version', 'filename')

    def __unicode__(self):
        return self.filename

    def get_absolute_url(self):
        url = reverse('packages:download',
                      kwargs={
                          'name': self.release.package.name,
                          'pk': self.pk,
                          'filename': self.filename
                      })
        return '%s#md5=%s' % (url, self.md5_digest)

    def save_filecontent(self, filename, fh):
        tmp_file = NamedTemporaryFile()
        copyfileobj(fh, tmp_file)
        self.distribution.save(filename, File(tmp_file))
Esempio n. 27
0
class Job(models.Model):
    status = models.CharField(max_length=50,
                              choices=JobStatus.CHOICES,
                              default=JobStatus.PENDING)
    message = models.CharField(max_length=255, blank=True, null=True)
    created_at = AutoCreatedField(_("created"), db_index=True)
    updated_at = AutoLastModifiedField(_("modified"), db_index=True)

    class Meta:
        abstract = True
Esempio n. 28
0
class TimeStampedModel(models.Model):
    """
    An abstract base class model that provides self-updating
    ``created`` and ``modified`` fields.
    """
    created = AutoCreatedField(_('created'), editable=False)
    modified = AutoLastModifiedField(_('modified'), editable=False)

    class Meta:
        abstract = True
Esempio n. 29
0
class Timestampable(models.Model):
    """
    An abstract base class model that provides self-updating
    ``created`` and ``modified`` fields.
    """
    created_at = AutoCreatedField(_('creation time'))
    updated_at = AutoLastModifiedField(_('last modification time'))

    class Meta:
        abstract = True
Esempio n. 30
0
class AddendumFile(models.Model):
    addendum = models.ForeignKey('addendums.Addendum',
                                 related_name="files",
                                 on_delete=models.CASCADE)
    file = models.FileField(upload_to=FilenameGenerator('addendum_file'))
    is_active = models.BooleanField('active', default=True)
    created = AutoCreatedField()

    def __str__(self):
        return str(self.file.url)