Tag description update API
authorRadek Czajka <rczajka@rczajka.pl>
Mon, 26 Sep 2022 10:48:04 +0000 (12:48 +0200)
committerRadek Czajka <rczajka@rczajka.pl>
Mon, 26 Sep 2022 10:48:04 +0000 (12:48 +0200)
src/catalogue/api/views.py
src/catalogue/models/tag.py

index 885df24..8b9dcd8 100644 (file)
@@ -289,8 +289,10 @@ class TagCategoryView(ListAPIView):
 
 
 class TagView(RetrieveAPIView):
+    permission_classes = [DjangoModelPermissionsOrAnonReadOnly]
     serializer_class = serializers.TagDetailSerializer
-
+    queryset = Tag.objects.all()
+    
     def get_object(self):
         return get_object_or_404(
             Tag,
@@ -298,6 +300,14 @@ class TagView(RetrieveAPIView):
             slug=self.kwargs['slug']
         )
 
+    def post(self, request, **kwargs):
+        data = json.loads(request.POST.get('data'))
+        desc = data['description_pl']
+        obj = self.get_object()
+        obj.description_pl = desc
+        obj.save(update_fields=['description_pl'], quick=True)
+        return Response({})
+
 
 @vary_on_auth  # Because of 'liked'.
 class FragmentList(ListAPIView):
index 5442213..acf0252 100644 (file)
@@ -101,10 +101,10 @@ class Tag(models.Model):
         unique_together = (("slug", "category"),)
         app_label = 'catalogue'
 
-    def save(self, *args, **kwargs):
+    def save(self, *args, quick=False, **kwargs):
         existing = self.pk and self.category != 'set'
         ret = super(Tag, self).save(*args, **kwargs)
-        if existing:
+        if existing and not quick:
             self.after_change.send(sender=type(self), instance=self)
         return ret