Commit fbe13e6e authored by Florent Chehab's avatar Florent Chehab
Browse files

moderation handling enhanced

parent 02af4292
Pipeline #26688 passed with stages
in 2 minutes and 48 seconds
from django.db import models from django.db import models
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.contrib.contenttypes.fields import GenericRelation
from .pendingModeration import PendingModeration
class MyModel(models.Model): class MyModel(models.Model):
...@@ -17,6 +19,7 @@ class MyModel(models.Model): ...@@ -17,6 +19,7 @@ class MyModel(models.Model):
updated_on = models.DateTimeField(null=True) updated_on = models.DateTimeField(null=True)
updated_by = models.ForeignKey( updated_by = models.ForeignKey(
User, null=True, on_delete=models.SET_NULL, related_name='+') User, null=True, on_delete=models.SET_NULL, related_name='+')
pending_moderation = GenericRelation(PendingModeration)
class Meta: class Meta:
abstract = True abstract = True
...@@ -5,6 +5,7 @@ from django.conf import settings ...@@ -5,6 +5,7 @@ from django.conf import settings
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from backend.utils import is_member from backend.utils import is_member
from .myModel import MyModel from .myModel import MyModel
from .pendingModeration import PendingModerationSerializer
class MyModelSerializer(serializers.ModelSerializer): class MyModelSerializer(serializers.ModelSerializer):
...@@ -14,6 +15,7 @@ class MyModelSerializer(serializers.ModelSerializer): ...@@ -14,6 +15,7 @@ class MyModelSerializer(serializers.ModelSerializer):
format="%Y-%m-%d %H:%M:%S", read_only=True) format="%Y-%m-%d %H:%M:%S", read_only=True)
moderated_by = serializers.CharField(read_only=True) moderated_by = serializers.CharField(read_only=True)
updated_by = serializers.CharField(read_only=True) updated_by = serializers.CharField(read_only=True)
pending_moderation = PendingModerationSerializer(many=True, read_only=True)
# TODO : updated_by_username useless ? See in rest API # TODO : updated_by_username useless ? See in rest API
updated_by_username = serializers.SerializerMethodField(read_only=True) updated_by_username = serializers.SerializerMethodField(read_only=True)
......
...@@ -17,7 +17,7 @@ class MyModelViewSet(DictModeViewSet): ...@@ -17,7 +17,7 @@ class MyModelViewSet(DictModeViewSet):
to prefetch some table and enhance performances to prefetch some table and enhance performances
""" """
self.mymodel_queryset = self.queryset.prefetch_related( self.mymodel_queryset = self.queryset.prefetch_related(
'moderated_by', 'updated_by') 'moderated_by', 'updated_by', 'pending_moderation')
return self.extend_queryset() return self.extend_queryset()
def extend_queryset(self): def extend_queryset(self):
......
...@@ -21,6 +21,15 @@ class PendingModeration(models.Model): ...@@ -21,6 +21,15 @@ class PendingModeration(models.Model):
class PendingModerationSerializer(serializers.ModelSerializer): class PendingModerationSerializer(serializers.ModelSerializer):
content_type = serializers.CharField(read_only=True)
object_id = serializers.CharField(read_only=True)
updated_by = serializers.CharField(read_only=True)
updated_on = serializers.DateTimeField(
format="%Y-%m-%d %H:%M:%S", read_only=True)
new_object = serializers.JSONField(read_only=True)
class Meta: class Meta:
model = PendingModeration model = PendingModeration
fields = '__all__' fields = '__all__'
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment