estelam ticket, varizha , others

This commit is contained in:
javad committed 2026-10-13 15:48:24 +03:30
1 parent 35a1ec1794
commit 6b546aad76
71 files changed
+2865 -191

No files matched your search

+3 -1
View File
@@ -1,3 +1,5 @@
from django.contrib import admin
from .models import Message,MessageMention,MessageRevision
admin.site.register([Message,MessageMention,MessageRevision])
from apps.tickets.response_admin import ResponseContentAdmin, RelatedResponseContentAdmin
admin.site.register(Message, ResponseContentAdmin)
admin.site.register([MessageMention, MessageRevision], RelatedResponseContentAdmin)
+4
View File
@@ -6,6 +6,8 @@ from apps.tickets.policies import TicketPolicy
from .models import Message,MessageRevision
@transaction.atomic
def edit_message(message_id,user,body):
from apps.tickets.dispatch_responses import lock_dispatch_for_ticket
lock_dispatch_for_ticket(Message.objects.values_list("ticket_id", flat=True).get(pk=message_id))
msg=Message.objects.select_for_update().select_related("ticket").get(pk=message_id)
if msg.author_id!=user.id or not TicketPolicy.can_view(user,msg.ticket): raise PermissionDenied
if not (user.account_type=="CUSTOMER" or user.has_perm("messaging.edit_own_message")): raise PermissionDenied
@@ -15,6 +17,8 @@ def edit_message(message_id,user,body):
MessageRevision.objects.create(message=msg,body=msg.body,edited_by=user); msg.body=body; msg.edited_at=timezone.now(); msg.save(update_fields=["body","edited_at","updated_at"]); return msg
@transaction.atomic
def soft_delete_message(message_id,user):
from apps.tickets.dispatch_responses import lock_dispatch_for_ticket
lock_dispatch_for_ticket(Message.objects.values_list("ticket_id", flat=True).get(pk=message_id))
msg=Message.objects.select_for_update().select_related("ticket").get(pk=message_id)
may_delete=user.account_type=="CUSTOMER" or user.has_perm("messaging.delete_own_message")
if msg.author_id!=user.id or not may_delete or not TicketPolicy.can_view(user,msg.ticket): raise PermissionDenied
+2
View File
@@ -23,6 +23,8 @@ def delete(request,public_id):
msg=get_object_or_404(Message,public_id=public_id); soft_delete_message(msg.pk,request.user); return redirect(_safe_next(request,"/staff/"))
@login_required
def revisions(request,public_id):
from apps.tickets.dispatch_responses import can_read_response
msg=get_object_or_404(Message,public_id=public_id)
if not can_read_response(request.user, msg): raise PermissionDenied
if not request.user.has_perm("messaging.view_message_revisions") or not TicketPolicy.can_view(request.user,msg.ticket): raise PermissionDenied
return render(request,"messaging/revisions.html",{"message":msg,"revisions":msg.revisions.select_related("edited_by")})