estelam ticket, varizha , others
This commit is contained in:
1 parent
35a1ec1794
commit
6b546aad76
71 files changed
+2865
-191
No files matched your search
@@ -176,3 +176,30 @@ class MessageShare(PublicIdModel, models.Model):
|
||||
class TicketReadState(models.Model):
|
||||
ticket=models.ForeignKey(Ticket,on_delete=models.CASCADE,related_name="read_states"); user=models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE); last_read_at=models.DateTimeField(); last_read_message=models.ForeignKey("messaging.Message",on_delete=models.SET_NULL,null=True,blank=True)
|
||||
class Meta: constraints=[models.UniqueConstraint(fields=["ticket","user"],name="unique_ticket_read_state")]
|
||||
|
||||
|
||||
class DispatchResponseControl(models.Model):
|
||||
"""Absent for legacy dispatches: their existing visibility is preserved."""
|
||||
|
||||
class Mode(models.TextChoices):
|
||||
SEALED = "SEALED", "بازگشایی یکجا"
|
||||
INDIVIDUAL = "INDIVIDUAL", "مشاهده جداگانه"
|
||||
|
||||
dispatch = models.OneToOneField(GroupDispatch, on_delete=models.PROTECT, related_name="response_control")
|
||||
mode = models.CharField(max_length=12, choices=Mode.choices, default=Mode.SEALED)
|
||||
notify_sms = models.BooleanField(default=True)
|
||||
recipient_count_snapshot = models.PositiveIntegerField()
|
||||
opened_at = models.DateTimeField(null=True, blank=True)
|
||||
opened_by = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.PROTECT, null=True, blank=True)
|
||||
sms_body_snapshot = models.TextField(blank=True)
|
||||
respondents_snapshot = models.JSONField(default=list, blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = "تنظیمات و سابقه بازگشایی ارسال"
|
||||
verbose_name_plural = "تنظیمات و سوابق بازگشایی ارسالها"
|
||||
permissions = [("open_all_dispatch_responses", "Can open responses of all authorized dispatches")]
|
||||
constraints = [
|
||||
models.CheckConstraint(condition=Q(notify_sms=False) | Q(mode="SEALED", recipient_count_snapshot__lte=15), name="dispatch_opening_sms_limit"),
|
||||
models.CheckConstraint(condition=Q(mode__in=["SEALED", "INDIVIDUAL"]), name="dispatch_response_mode_valid"),
|
||||
models.CheckConstraint(condition=Q(opened_at__isnull=True, opened_by__isnull=True) | Q(mode="SEALED", opened_at__isnull=False, opened_by__isnull=False), name="dispatch_opening_audit_complete"),
|
||||
]
|
||||
Reference in new issue
Block a user