summaryrefslogtreecommitdiffstats
path: root/statuses/models/status.py
blob: b12a595b4b378e42347b06e76c30ad0dd6b9b6fa (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import urlman
from django.db import models


class Status(models.Model):
    class StatusVisibility(models.IntegerChoices):
        public = 0
        unlisted = 1
        followers = 2
        mentioned = 3

    identity = models.ForeignKey(
        "users.Identity",
        on_delete=models.PROTECT,
        related_name="statuses",
    )

    local = models.BooleanField()
    uri = models.CharField(max_length=500, blank=True, null=True)
    visibility = models.IntegerField(
        choices=StatusVisibility.choices,
        default=StatusVisibility.public,
    )
    text = models.TextField()

    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    deleted = models.DateTimeField(null=True, blank=True)

    class Meta:
        verbose_name_plural = "statuses"

    @classmethod
    def create_local(cls, identity, text: str):
        return cls.objects.create(
            identity=identity,
            text=text,
            local=True,
        )

    class urls(urlman.Urls):
        view = "{self.identity.urls.view}statuses/{self.id}/"