Initial commit from ZIP
This commit is contained in:
commit
378d4692a9
454 files changed
+40367
No files matched your search
+65
@@ -0,0 +1,65 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import pgettext, gettext_lazy as _
|
||||
from rules import always_allow
|
||||
|
||||
from outbo.apps.activity_log.enums import MessageType
|
||||
from outbo.apps.core.models import (
|
||||
TimestampableDeletableMixin,
|
||||
RulesPolymorphicModel,
|
||||
SoftDeletablePolymorphicManager,
|
||||
)
|
||||
|
||||
|
||||
class LogItem(TimestampableDeletableMixin, RulesPolymorphicModel):
|
||||
objects = SoftDeletablePolymorphicManager()
|
||||
all_objects = SoftDeletablePolymorphicManager(alive_only=False)
|
||||
|
||||
message = models.TextField(verbose_name=_("message"))
|
||||
message_type = models.CharField(
|
||||
verbose_name=_("message type"),
|
||||
max_length=25,
|
||||
blank=False,
|
||||
null=False,
|
||||
default=MessageType.USER,
|
||||
choices=((type, type.value) for type in MessageType),
|
||||
)
|
||||
created_by = models.ForeignKey(
|
||||
verbose_name=_("created by"), to="authentication.User", on_delete=models.CASCADE
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
if self.message_type == MessageType.USER:
|
||||
return self.message
|
||||
return pgettext("log_item_messages", self.message)
|
||||
|
||||
|
||||
class ProductLogItem(LogItem):
|
||||
class Meta:
|
||||
rules_permissions = {"view": always_allow, "add": always_allow}
|
||||
ordering = ["-created_at"]
|
||||
|
||||
product = models.ForeignKey(
|
||||
verbose_name=_("product"),
|
||||
to="products.Product",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="log_items",
|
||||
related_query_name="log_item",
|
||||
)
|
||||
|
||||
stage = models.ForeignKey(
|
||||
to="products.ProductStage", on_delete=models.CASCADE, null=True, default=None
|
||||
)
|
||||
|
||||
|
||||
class ProjectLogItem(LogItem):
|
||||
class Meta:
|
||||
rules_permissions = {"view": always_allow, "add": always_allow}
|
||||
ordering = ["-created_at"]
|
||||
|
||||
project = models.ForeignKey(
|
||||
verbose_name=_("project"),
|
||||
to="projects.Project",
|
||||
on_delete=models.CASCADE,
|
||||
related_name="log_items",
|
||||
related_query_name="log_item",
|
||||
)
|
||||
Reference in new issue
Block a user