예제 #1
0
class Interest(UUIDModel, HistoricalModel):
    title = LocalizedCharField()
    description = LocalizedTextField(blank=True, null=True, required=False)
    category = models.ForeignKey(InterestCategory,
                                 related_name="interests",
                                 on_delete=models.PROTECT)
    archived = models.BooleanField(default=False)
예제 #2
0
class Permission(SlugModel):
    name = LocalizedCharField(_("permission name"),
                              blank=False,
                              null=False,
                              required=False)
    description = LocalizedTextField(_("permission description"),
                                     null=True,
                                     blank=True,
                                     required=False)
예제 #3
0
파일: models.py 프로젝트: velrest/mySAGW
class Email(UUIDModel, HistoricalModel):
    identity = models.ForeignKey(Identity,
                                 related_name="additional_emails",
                                 on_delete=models.CASCADE)
    email = models.EmailField()
    description = LocalizedCharField(blank=True, null=True, required=False)

    class Meta:
        unique_together = [["identity", "email"]]
예제 #4
0
파일: models.py 프로젝트: winged/alexandria
class Category(SlugModel):
    name = LocalizedCharField(
        _("category name"), blank=False, null=False, required=False
    )
    description = LocalizedTextField(
        _("category description"), null=True, blank=True, required=False
    )
    color = models.CharField(
        max_length=18, default="#FFFFFF", validators=[color_validator],
    )
예제 #5
0
class OnlyLocalizedName(models.Model):
    class Meta:
        abstract = True

    name = LocalizedCharField(max_length=512,
                              required=False,
                              verbose_name=_("name"))

    def __str__(self):
        return str(self.name)
예제 #6
0
파일: models.py 프로젝트: velrest/mySAGW
class PhoneNumber(UUIDModel, HistoricalModel):
    identity = models.ForeignKey(Identity,
                                 related_name="phone_numbers",
                                 on_delete=models.CASCADE)
    phone = PhoneNumberField()
    description = LocalizedCharField(blank=True, null=True, required=False)
    default = UniqueBooleanField(default=False, together=["identity"])

    class Meta:
        unique_together = [["identity", "phone"]]
        ordering = ("-default", )
예제 #7
0
class Material(LocalizedModel):
    objects = MaterialQuerySet.as_manager()

    class Meta:
        ordering = ['-highlight', '-timestamp']
        verbose_name = _("Material")
        verbose_name_plural = _("Materials")

    title = LocalizedCharField(blank=False,
                               null=False,
                               required=False,
                               max_length=512,
                               verbose_name=_("title"))
    slug = LocalizedUniqueSlugField(populate_from='title')
    timestamp = models.DateTimeField(auto_now_add=True,
                                     verbose_name=_("creation timestamp"))
    highlight = models.BooleanField(default=False,
                                    verbose_name=_("highlighted on search"))

    subjects = models.ManyToManyField(Subject, verbose_name=_("subject"))
    goal = LocalizedTextField(blank=True,
                              null=True,
                              required=False,
                              verbose_name=_("goal"))
    brief = LocalizedTextField(blank=False,
                               null=False,
                               required=False,
                               verbose_name=_("brief"))
    author = models.CharField(max_length=512,
                              blank=True,
                              verbose_name=_("author"))

    def __str__(self):
        return str(self.title)

    @property
    def brief_rendered(self):
        return markdownify(str(self.brief))

    @property
    def goal_rendered(self):
        return markdownify(str(self.goal))

    def get_related(self):
        for related in ['activity', 'reading', 'video', 'link']:
            if hasattr(self, related):
                return getattr(self, related)

    def get_model_name(self):
        return self.get_related()._meta.model_name

    def get_absolute_url(self):
        return self.get_related().get_absolute_url()
예제 #8
0
class Role(SlugModel):
    name = LocalizedCharField(_("role name"),
                              blank=False,
                              null=False,
                              required=False)
    description = LocalizedTextField(_("role description"),
                                     null=True,
                                     blank=True,
                                     required=False)
    permissions = models.ManyToManyField("Permission", related_name="roles")

    class Meta:
        ordering = ["slug"]
예제 #9
0
파일: models.py 프로젝트: winged/alexandria
class Document(UUIDModel):
    title = LocalizedCharField(
        _("document title"), blank=True, null=True, required=False
    )
    description = LocalizedTextField(
        _("document description"), null=True, blank=True, required=False
    )
    category = models.ForeignKey(
        Category,
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name="documents",
    )
    tags = models.ManyToManyField(Tag, blank=True, related_name="documents")
예제 #10
0
파일: models.py 프로젝트: velrest/mySAGW
class Address(UUIDModel, HistoricalModel):
    identity = models.ForeignKey(Identity,
                                 related_name="addresses",
                                 on_delete=models.CASCADE)
    address_addition = models.CharField(max_length=255, null=True, blank=True)
    street_and_number = models.CharField(max_length=255)
    po_box = models.CharField(max_length=255, null=True, blank=True)
    postcode = models.CharField(max_length=255)
    town = models.CharField(max_length=255)
    country = CountryField(default="CH")
    description = LocalizedCharField(blank=True, null=True, required=False)
    default = UniqueBooleanField(default=False, together=["identity"])

    class Meta:
        ordering = ("-default", )
예제 #11
0
class Scope(MPTTModel, UUIDModel):
    name = LocalizedCharField(_("scope name"),
                              blank=False,
                              null=False,
                              required=False)
    description = LocalizedTextField(_("scope description"),
                                     null=True,
                                     blank=True,
                                     required=False)
    parent = TreeForeignKey(
        "self",
        on_delete=models.SET_NULL,
        null=True,
        blank=True,
        related_name="children",
    )
예제 #12
0
class User(UUIDModel):
    username_validator = UnicodeUsernameValidator()

    username = models.CharField(
        _("username"),
        max_length=255,
        unique=True,
        help_text=
        _("Required. 255 characters or fewer. Letters, digits and @/./+/-/_ only."
          ),
        validators=[username_validator],
        error_messages={
            "unique": _("A user with that username already exists.")
        },
    )
    first_name = models.CharField(_("first name"),
                                  max_length=255,
                                  blank=True,
                                  null=True)
    last_name = models.CharField(_("last name"),
                                 max_length=255,
                                 blank=True,
                                 null=True)
    email = models.EmailField(_("email address"), blank=True, null=True)
    phone = models.CharField(_("phone"), max_length=100, blank=True, null=True)
    language = models.CharField(_("language"),
                                max_length=2,
                                default=get_language_code)
    address = models.CharField(_("address"),
                               max_length=255,
                               blank=True,
                               null=True)
    city = LocalizedCharField(_("city"), max_length=255, blank=True, null=True)
    zip = models.CharField(_("zip"), max_length=10, blank=True, null=True)
    is_active = models.BooleanField(
        _("active"),
        default=True,
        help_text=_(
            "Designates whether this user should be treated as active."),
    )
    date_joined = models.DateTimeField(_("date joined"), default=timezone.now)

    EMAIL_FIELD = "email"
    USERNAME_FIELD = "username"
    REQUIRED_FIELDS = ["email"]

    def __str__(self):
        return "%s object (%s - %s)" % (self.__class__.__name__, self.pk,
                                        self.username)

    class Meta:
        verbose_name = _("user")
        verbose_name_plural = _("users")

    def clean(self):
        super().clean()
        setattr(self, self.USERNAME_FIELD,
                self.normalize_username(self.get_username()))

        self.email = BaseUserManager.normalize_email(self.email)

    def get_full_name(self):
        """Return the first_name plus the last_name, with a space in between."""
        full_name = "%s %s" % (self.first_name, self.last_name)
        return full_name.strip()

    def get_username(self):
        """Return the username for this User."""
        return getattr(self, self.USERNAME_FIELD)

    def natural_key(self):
        return self.get_username()

    @classmethod
    def get_email_field_name(cls):
        return "email"

    @classmethod
    def normalize_username(cls, username):
        return (unicodedata.normalize("NFKC", username) if isinstance(
            username, str) else username)

    @property
    def is_anonymous(self):
        """
        Return False.

        This is a way of comparing User objects to anonymous users.
        """
        return False

    @property
    def is_authenticated(self):
        """
        Return True.

        This is a way to tell if the user has been authenticated in templates.
        """
        return True
예제 #13
0
파일: models.py 프로젝트: winged/alexandria
class Tag(SlugModel):
    name = LocalizedCharField(_("tag name"), blank=False, null=False, required=False)
    description = LocalizedTextField(
        _("tag description"), null=True, blank=True, required=False
    )
예제 #14
0
class InterestCategory(UUIDModel, HistoricalModel):
    title = LocalizedCharField()
    description = LocalizedTextField(blank=True, null=True, required=False)
    archived = models.BooleanField(default=False)
예제 #15
0
class Snippet(UUIDModel, HistoricalModel):
    title = LocalizedCharField(blank=False, null=False, required=False)
    body = LocalizedTextField(blank=False, null=False, required=False)
    archived = models.BooleanField(default=False)