Exemplo n.º 1
0
class Contributor(models.Model):
    first_name = CICharField(max_length=100, blank=True, default='', db_index=True)
    last_name = CICharField(max_length=100, db_index=True)
    middle_name = CICharField(max_length=100, blank=True, default='', db_index=True)
    # should be set to true when correctness of name parts is verified
    verified = models.BooleanField(default=False)

    objects = ContributorManager()

    def __str__(self):
        return self.full_name()

    def full_name(self):
        return ' '.join(filter(lambda x: x, (self.first_name, self.middle_name, self.last_name)))
Exemplo n.º 2
0
class ChallengeSeries(models.Model):
    name = CICharField(max_length=64, blank=False, unique=True)
    url = models.URLField(blank=True)

    class Meta:
        ordering = ("name",)
        verbose_name_plural = "Challenge Series"

    def __str__(self):
        return f"{self.name}"

    @property
    def filter_tag(self):
        cls = re.sub(r"\W+", "", self.name)
        return f"series-{cls}"

    @property
    def badge(self):
        return format_html(
            (
                '<span class="badge badge-info above-stretched-link" '
                'title="Associated with {0}"><i class="fas fa-globe fa-fw">'
                "</i> {0}</span>"
            ),
            self.name,
        )
Exemplo n.º 3
0
class TaskType(models.Model):
    """Stores the task type options, eg, Segmentation, Regression, etc."""

    type = CICharField(max_length=16, blank=False, unique=True)

    class Meta:
        ordering = ("type",)

    def __str__(self):
        return self.type

    @property
    def filter_tag(self):
        cls = re.sub(r"\W+", "", self.type)
        return f"task-{cls}"

    @property
    def badge(self):
        return format_html(
            (
                '<span class="badge badge-light above-stretched-link" '
                'title="{0} challenge"><i class="fas fa-tasks fa-fw">'
                "</i> {0}</span>"
            ),
            self.type,
        )
Exemplo n.º 4
0
class ImagingModality(models.Model):
    """Store the modality options, eg, MR, CT, PET, XR."""

    modality = CICharField(max_length=16, blank=False, unique=True)

    class Meta:
        ordering = ("modality",)

    def __str__(self):
        return self.modality

    @property
    def filter_tag(self):
        cls = re.sub(r"\W+", "", self.modality)
        return f"modality-{cls}"

    @property
    def badge(self):
        return format_html(
            (
                '<span class="badge badge-secondary above-stretched-link" '
                'title="Uses {0} data"><i class="fas fa-microscope fa-fw">'
                "</i> {0}</span>"
            ),
            self.modality,
        )
Exemplo n.º 5
0
class Tag(TimeStampedModel):
    class Meta:
        verbose_name = 'Тег'
        verbose_name_plural = 'Теги'
        ordering = ['title']

    title_validator = TitleValidator()

    title = CICharField(verbose_name='Тег',
                        validators=[title_validator],
                        max_length=20,
                        unique=True)
    back_color = ColorField(verbose_name='Цвет бэкграунда тега',
                            default='#000000')
    title_color = ColorField(verbose_name='Цвет тега', default='#FFFFFF')

    def __str__(self):
        return self.title

    @cached_property
    def events_num(self):
        """
        Cached object property that calculates num of events with this Tag.

        Returns:
            (int): num of events with this tag
        """
        return Event.objects.filter(tags=self).count()
Exemplo n.º 6
0
class Company(ParanoidModel, CitixenModel):
    """Company model."""

    nit = models.CharField(max_length=50)
    name = CICharField(max_length=120, unique=True)
    email = models.EmailField(max_length=100)
    country = models.ForeignKey(Country,
                                on_delete=models.PROTECT,
                                related_name='companies')
    image_url = models.ImageField(
        upload_to=RandomFileName('companies/images/'))
    namespace = models.CharField(max_length=60, unique=True)

    is_active = models.BooleanField(default=False)

    uuid = models.UUIDField(default=uuid4, primary_key=True)

    created_by = models.ForeignKey('users.User',
                                   on_delete=models.PROTECT,
                                   related_name='companies')

    default_manager = models.Manager()

    class Meta:
        """Meta options."""
        ordering = ('name', )

    def __str__(self):
        return self.name
Exemplo n.º 7
0
class Supplier(models.Model):
    name = CICharField(max_length=150, unique=True)
    email = models.EmailField(blank=True)
    phone = PossiblePhoneNumberField(blank=True, default="")
    address = models.CharField(max_length=255, blank=True)

    class Meta:
        permissions = ((SupplierPermissions.MANAGE_SUPPLIERS.codename,
                        "Manage suppliers"), )

    def __str__(self):
        return self.name

    def save(self, *args, **kwargs):
        """
        Always save the email as lowercase. Helps identifying unique email
        addresses.
        The de jure standard is that the local component of email addresses is
        case sensitive however the de facto standard is that they are not. In
        practice what happens is user confusion over why an email address
        entered with camel casing one day does not match an email address
        """
        if self.email:
            self.email = self.email.strip().lower()
        return super().save(*args, **kwargs)
Exemplo n.º 8
0
class Collection(SeoModel, PublishableModel):
    name = CICharField(max_length=250, unique=True)
    slug = models.SlugField(max_length=255, unique=True)
    products = models.ManyToManyField(
        "products.Product",
        blank=True,
        related_name="collections",
        through="CollectionProduct",
        through_fields=("collection", "product"),
    )
    background_image = VersatileImageField(
        upload_to=UploadToPathAndRename(path="collection-backgrounds",
                                        field="name"),
        blank=True,
        null=True,
    )
    background_image_alt = models.CharField(max_length=128, blank=True)
    description = JSONField(blank=True, default=dict)

    class Meta:
        ordering = ("slug", )
        permissions = ((CollectionPermissions.MANAGE_COLLECTIONS.codename,
                        "Manage collections"), )

    def __str__(self):
        return self.name
Exemplo n.º 9
0
class BodyStructure(models.Model):
    """Store the organ name and what region it belongs to."""

    structure = CICharField(max_length=16, blank=False, unique=True)
    region = models.ForeignKey(to=BodyRegion,
                               on_delete=models.CASCADE,
                               blank=False)

    class Meta:
        ordering = ("region", "structure")

    def __str__(self):
        return f"{self.structure} ({self.region})"

    @property
    def filter_tag(self):
        cls = re.sub(r"\W+", "", self.structure)
        return f"structure-{cls}"

    @property
    def badge(self):
        return format_html(
            ('<span class="badge badge-dark above-stretched-link" '
             'title="Uses {0} data"><i class="fas fa-child fa-fw">'
             "</i> {0}</span>"),
            self.structure,
        )
Exemplo n.º 10
0
class Tag(models.Model):
    """Descriptor to add to another model."""

    name = CICharField(max_length=30, unique=True)

    def __str__(self):
        """Convert the model to a human readable string."""
        return str(self.name)
Exemplo n.º 11
0
class CounterpartyBankAlias(models.Model):
    counterparty = models.ForeignKey(Counterparty,
                                     on_delete=models.CASCADE,
                                     related_name='bank_aliases')
    alias = CICharField(max_length=254, unique=True)

    def __str__(self):
        return self.alias
Exemplo n.º 12
0
class BodyRegion(models.Model):
    """ Stores the anatomy options, eg, Head, Neck, Thorax, etc """
    region = CICharField(max_length=16, blank=False, unique=True)

    class Meta:
        ordering = ("region",)

    def __str__(self):
        return self.region
Exemplo n.º 13
0
class ImagingModality(models.Model):
    """ Stores the modality options, eg, MR, CT, PET, XR """
    modality = CICharField(max_length=16, blank=False, unique=True)

    class Meta:
        ordering = ("modality",)

    def __str__(self):
        return self.modality
Exemplo n.º 14
0
class Member(AbstractUser):
    username_validator = printable_name

    username = CICharField(
        _("username"),
        max_length=36,
        unique=True,
        help_text=
        _("Required. 36 characters or fewer. Letters, digits and @/./+/-/_ only."
          ),
        validators=[username_validator],
        error_messages={
            "unique": _("A user with that username already exists.")
        },
    )
    email = models.EmailField(_("email address"), blank=True, unique=True)
    state_actor = models.BooleanField(default=False)
    is_visible = models.BooleanField(default=False)
    is_bot = models.BooleanField(default=False)
    is_verified = models.BooleanField(default=False)
    bio = models.TextField(blank=True, max_length=400)
    discord = models.CharField(blank=True, max_length=36)
    discordid = models.CharField(blank=True, max_length=18)
    twitter = models.CharField(blank=True, max_length=36)
    reddit = models.CharField(blank=True, max_length=36)
    team = models.ForeignKey("team.Team",
                             on_delete=SET_NULL,
                             null=True,
                             related_name="members")
    email_verified = models.BooleanField(default=False)
    email_token = models.CharField(max_length=64, default=secrets.token_hex)
    password_reset_token = models.CharField(max_length=64,
                                            default=secrets.token_hex)
    points = models.IntegerField(default=0)
    leaderboard_points = models.IntegerField(default=0)
    last_score = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.username

    def can_login(self):
        return (self.is_staff or config.get("enable_prelogin")
                or (config.get("enable_login")
                    and config.get("start_time") <= time.time()))

    def issue_token(self, owner=None):
        from authentication.models import Token
        token = Token(user=self, owner=owner)
        token.save()
        return token.key

    def has_2fa(self):
        return hasattr(self, 'totp_device') and self.totp_device.verified

    def should_deny_admin(self):
        return not self.has_2fa() and config.get("enable_force_admin_2fa")
Exemplo n.º 15
0
class Counterparty(models.Model):
    name = CICharField(max_length=100, unique=True)
    is_reviewed = models.BooleanField(default=False)
    is_archived = models.BooleanField(default=False)

    class Meta:
        verbose_name_plural = _('counterparties')

    def __str__(self):
        return self.name + (' (archived)' if self.is_archived else '')
Exemplo n.º 16
0
class GluuProduct(models.Model):

    name = CICharField(max_length=20, unique=True)

    version = ArrayField(models.CharField(max_length=20))

    os = ArrayField(models.CharField(max_length=20))

    def __str__(self):
        return self.name
Exemplo n.º 17
0
class Category(models.Model):
    name = CICharField(max_length=30)
    created = models.DateTimeField(auto_now=True)
    related_coming = models.ManyToManyField('self',
                                            symmetrical=False,
                                            through='CategoryRelation',
                                            related_name='related_going')

    class Meta:
        db_table = 'category'
Exemplo n.º 18
0
class Project(models.Model):
    created_at = models.DateTimeField(default=timezone.now)
    name = CICharField(max_length=100, unique=True)
    is_active = models.BooleanField(default=True)

    def get_absolute_url(self):
        return '{}?projects={}'.format(urls.reverse('buggy:bug_list'), self.id)

    def __str__(self):
        return self.name
Exemplo n.º 19
0
class ProductType(models.Model):
    name = CICharField(max_length=250, unique=True)
    has_variants = models.BooleanField(default=True)

    class Meta:
        ordering = ("name",)
        permissions = ((ProductPermissions.MANAGE_PRODUCT_TYPES.codename, "Manage product types"),)

    def __str__(self):
        return self.name
Exemplo n.º 20
0
class Asset(models.Model):
    """A tradeable asset via Alpaca."""

    ACTIVE = "active"
    INACTIVE = "inactive"
    STATUS_CHOICES = [
        (ACTIVE, _("active")),
        (INACTIVE, _("inactive")),
    ]

    # Use UUID returned from Alpaca api as primary key
    id = models.UUIDField(
        primary_key=True,
        editable=False,
        unique=True,
    )
    name = models.CharField(
        verbose_name=_("name"),
        max_length=255,
        blank=True,
        null=True,
    )
    asset_class = models.ForeignKey(
        AssetClass,
        verbose_name=_("asset class"),
        related_name="assets",
        on_delete=models.CASCADE,
    )
    easy_to_borrow = models.BooleanField()
    exchange = models.ForeignKey(
        Exchange,
        verbose_name=_("exchange"),
        related_name="assets",
        on_delete=models.CASCADE,
    )
    marginable = models.BooleanField()
    shortable = models.BooleanField()
    status = models.CharField(
        verbose_name=_("status"),
        choices=STATUS_CHOICES,
        max_length=56,
    )
    symbol = CICharField(
        verbose_name=_("symbol"),
        unique=True,
        max_length=56,
    )
    tradable = models.BooleanField()

    class Meta:
        verbose_name = _("asset")
        verbose_name_plural = _("assets")

    def __str__(self):
        return f"{self.symbol}"
Exemplo n.º 21
0
class User(AbstractBaseUser):
    id = UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    email = CIEmailField(verbose_name="email",
                         max_length=100, unique=True)
    username = CICharField(max_length=50, unique=True)
    first_name = CICharField(max_length=100)
    last_name = CICharField(max_length=100)
    bio = TextField(blank=True, null=True)
    date_joined = DateTimeField(
        verbose_name='date joined', auto_now_add=True)
    last_login = DateTimeField(verbose_name='last login', auto_now=True)
    is_admin = BooleanField(default=False)
    is_active = BooleanField(default=False)
    is_staff = BooleanField(default=False)
    is_superuser = BooleanField(default=False)
    photo = ImageField(
        upload_to='user_images', default='user_images/avatar.png')

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['username']

    objects = MyAccountManager()

    def __str__(self):
        return self.email

    # for permissions, to keep it simple, all admins have all permissions
    def has_perm(self, perm, obj=None):
        return self.is_admin

    # does this user has permission to view app, always yes for simplicity
    def has_module_perms(self, app_label):
        return True

    def save(self, *args, **kwargs):
        super(User, self).save(*args, **kwargs)
        # change image dimensions before saving to ensure consistent displays
        if self.photo:
            image = Image.open(self.photo)
            size = (1024, 683)
            image = image.resize(size, Image.ANTIALIAS)
            image.save(self.photo.path)
Exemplo n.º 22
0
class TicketStatus(models.Model):

    name = CICharField(max_length=30, unique=True)

    slug = models.SlugField(max_length=30)

    def __str__(self):
        return self.name

    class Meta:
        verbose_name_plural = 'Ticket Status'
Exemplo n.º 23
0
class TaskType(models.Model):
    """
    Stores the task type options, eg, Segmentation, Regression, Prediction, etc
    """
    type = CICharField(max_length=16, blank=False, unique=True)

    class Meta:
        ordering = ("type",)

    def __str__(self):
        return self.type
Exemplo n.º 24
0
class Color(models.Model):
    class Meta:
        verbose_name = _('Color')
        verbose_name_plural = _('Colors')

    definition = CICharField(max_length=30,
                             unique=True,
                             verbose_name=_('Definition'))

    def __str__(self):
        return self.definition
Exemplo n.º 25
0
class Team(models.Model):
    name = CICharField(max_length=36, unique=True, validators=[printable_name])
    is_visible = models.BooleanField(default=True)
    password = models.CharField(max_length=64)
    owner = models.ForeignKey(get_user_model(),
                              on_delete=CASCADE,
                              related_name="owned_team")
    description = models.TextField(blank=True, max_length=400)
    points = models.IntegerField(default=0)
    leaderboard_points = models.IntegerField(default=0)
    last_score = models.DateTimeField(default=timezone.now)
    size_limit_exempt = models.BooleanField(default=False)
Exemplo n.º 26
0
class DenyListWord(models.Model):
    word = CICharField(max_length=255, unique=True)

    # A history of changes to this model, using django-simple-history.
    history = HistoricalRecords()

    def __str__(self):
        return self.word

    class Meta:
        verbose_name = "Deny-list word"
        verbose_name_plural = "Deny-list words"
Exemplo n.º 27
0
class BodyStructure(models.Model):
    """ Stores the organ name and what region it belongs to """
    structure = CICharField(max_length=16, blank=False, unique=True)
    region = models.ForeignKey(
        to=BodyRegion, on_delete=models.CASCADE, blank=False,
    )

    class Meta:
        ordering = ("region", "structure",)

    def __str__(self):
        return f"{self.structure} ({self.region})"
Exemplo n.º 28
0
class Product(models.Model):
    name = CICharField(max_length=254, unique=True)
    type = models.ForeignKey(ProductType,
                             on_delete=models.PROTECT,
                             related_name='products')
    description = models.TextField(null=True, blank=True, default='')
    unit = models.ForeignKey(Unit,
                             on_delete=models.PROTECT,
                             related_name='products')
    is_archived = models.BooleanField(default=False)

    def __str__(self):
        return self.name + (' (archived)' if self.is_archived else '')
Exemplo n.º 29
0
class City(CitixenModel):
    """location model."""
    class Types(models.TextChoices):
        locality = 'locality', _('Locality')
        administrative_area_level_1 = 'administrative_area_level_1', _(
            'Administrative Area Level 1')
        administrative_area_level_2 = 'administrative_area_level_2', _(
            'Administrative Area Level 2')
        administrative_area_level_3 = 'administrative_area_level_3', _(
            'Administrative Area Level 3')
        administrative_area_level_4 = 'administrative_area_level_4', _(
            'Administrative Area Level 4')
        administrative_area_level_5 = 'administrative_area_level_5', _(
            'Administrative Area Level 5')

    code = models.IntegerField(null=True)
    name = models.CharField(max_length=120)
    flag = models.ImageField(upload_to=RandomFileName('locations/images/'))
    country = models.ForeignKey(Country, on_delete=models.PROTECT)

    type = models.CharField(max_length=60,
                            choices=Types.choices,
                            default=Types.locality)
    bounds = JSONField(
        null=True,
        blank=True,
        validators=[
            JSONSchemaValidator(limit_value=schema_location_area_bound)
        ])

    parent = models.ForeignKey('self',
                               on_delete=models.SET_NULL,
                               null=True,
                               blank=True,
                               related_name='locations')

    # Zoom
    zoom_desktop = models.IntegerField(default=14)
    zoom_mobile = models.IntegerField(default=13)

    # Google data
    google_map_key = CICharField(max_length=150, unique=True)
    geo_code_json = JSONField(null=True, blank=True)

    class Meta:
        """Meta options."""
        ordering = ('name', )
        unique_together = [['country', 'code']]

    def __str__(self):
        return f'{self.name} is a location of {self.country}'
Exemplo n.º 30
0
class Band(TimeStampedModel):
    # data_created default now
    name = CICharField("Band / Artist Name", max_length=64)
    catalogue_name = CICharField(max_length=72, blank=True)
    slug = AutoSlugField("Band Address",
                         unique=True,
                         always_update=False,
                         populate_from="name")
    profile = models.TextField("Profile", blank=True)
    #hometown =
    homecounty = models.ForeignKey('County',
                                   null=False,
                                   blank=False,
                                   on_delete=models.DO_NOTHING)

    #category

    def save(self, *args, **kwargs):
        self.catalogue_name = de_article(self.name)
        super().save(*args, **kwargs)

    def __str__(self):
        return self.name