Skip to content

Commit

Permalink
commit merge for quick message in sector
Browse files Browse the repository at this point in the history
  • Loading branch information
AlanJaeger committed Jul 28, 2023
1 parent 5af7ad5 commit f425f4a
Show file tree
Hide file tree
Showing 4 changed files with 90 additions and 1 deletion.
41 changes: 41 additions & 0 deletions chats/apps/api/v1/quickmessages/viewsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticated

from chats.apps.api.v1.permissions import IsProjectAdmin, IsSectorManager
from chats.apps.api.v1.quickmessages.serializers import QuickMessageSerializer
from chats.apps.quickmessages.models import QuickMessage

Expand Down Expand Up @@ -33,3 +34,43 @@ def retrieve(self, request, *args, **kwargs):

def get_queryset(self, *args, **kwargs):
return QuickMessage.objects.all().filter(user=self.request.user)


class SectorQuickMessageViewset(viewsets.ModelViewSet):
queryset = QuickMessage.objects.all()
serializer_class = QuickMessageSerializer

def get_queryset(self, *args, **kwargs):
return QuickMessage.objects.all().filter(
user=self.request.user, sector__isnull=False
)

def get_permissions(self):
permission_classes = self.permission_classes
if self.action == "list":
permission_classes = [IsAuthenticated]
elif self.action in ["create", "destroy", "partial_update", "update"]:
permission_classes = (IsAuthenticated, IsProjectAdmin, IsSectorManager)
else:
permission_classes = [
IsAuthenticated,
]
return [permission() for permission in permission_classes]

def perform_create(self, serializer):
return serializer.save(user=self.request.user)

def update(self, request, *args, **kwargs):
if self.get_object().user == request.user:
return super().update(request, *args, **kwargs)
raise PermissionDenied

def destroy(self, request, *args, **kwargs):
if self.get_object().user == request.user:
return super().destroy(request, *args, **kwargs)
raise PermissionDenied

def retrieve(self, request, *args, **kwargs):
if self.get_object().user == request.user:
return super().retrieve(request, *args, **kwargs)
raise PermissionDenied
8 changes: 7 additions & 1 deletion chats/apps/api/v1/routers.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,10 @@
from chats.apps.api.v1.msgs.viewsets import MessageMediaViewset, MessageViewset
from chats.apps.api.v1.projects.viewsets import ProjectPermissionViewset, ProjectViewset
from chats.apps.api.v1.queues.viewsets import QueueAuthorizationViewset, QueueViewset
from chats.apps.api.v1.quickmessages.viewsets import QuickMessageViewset
from chats.apps.api.v1.quickmessages.viewsets import (
QuickMessageViewset,
SectorQuickMessageViewset,
)
from chats.apps.api.v1.rooms.viewsets import RoomViewset
from chats.apps.api.v1.sectors.viewsets import (
SectorAuthorizationViewset,
Expand Down Expand Up @@ -87,6 +90,9 @@ def get_lookup_regex(self, viewset, lookup_prefix=""):
router.register("room", RoomViewset)
router.register("msg", MessageViewset)
router.register("quick_messages", QuickMessageViewset)
router.register(
"sector_quick_messages", SectorQuickMessageViewset, basename="sector_quick_message"
)
router.register("media", MessageMediaViewset)
router.register("contact", ContactViewset)
router.register("sector", SectorViewset)
Expand Down
27 changes: 27 additions & 0 deletions chats/apps/quickmessages/migrations/0004_quickmessage_sector.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Generated by Django 4.1.2 on 2023-07-18 20:02

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
("sectors", "0005_remove_sector_rooms_limit_greater_than_zero"),
("quickmessages", "0003_quickmessage_title"),
]

operations = [
migrations.AddField(
model_name="quickmessage",
name="sector",
field=models.ForeignKey(
default=None,
null=True,
on_delete=django.db.models.deletion.CASCADE,
related_name="quick_message",
to="sectors.sector",
verbose_name="sector",
),
),
]
15 changes: 15 additions & 0 deletions chats/apps/quickmessages/models.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
from django.core.exceptions import ObjectDoesNotExist
from django.db import models
from django.utils.translation import gettext_lazy as _

Expand All @@ -14,7 +15,21 @@ class QuickMessage(BaseModel):
shortcut = models.CharField(_("shortcut"), max_length=50)
title = models.CharField(_("title"), max_length=50, blank=True, null=True)
text = models.TextField(_("text"))
sector = models.ForeignKey(
"sectors.Sector",
verbose_name=_("sector"),
related_name="quick_message",
on_delete=models.CASCADE,
null=True,
default=None,
)

class Meta:
verbose_name = _("Quick Message")
verbose_name_plural = _("Quick Messages")

def get_permission(self, user):
try:
return self.sector.get_permission(user)
except ObjectDoesNotExist:
return None

0 comments on commit f425f4a

Please sign in to comment.