server/python/django2/renkanmanager/serializers.py
changeset 593 2ff785d7026c
parent 592 66243fb5e3fc
child 594 b45eb8244cd9
equal deleted inserted replaced
592:66243fb5e3fc 593:2ff785d7026c
     1 import json
     1 import json
     2 import uuid
     2 import uuid
     3 
     3 
       
     4 from django.contrib.auth import get_user_model
       
     5 from django.conf import settings
     4 from guardian.shortcuts import assign_perm
     6 from guardian.shortcuts import assign_perm
     5 from renkanmanager.models import Renkan, Workspace, Revision
     7 from renkanmanager.models import Renkan, Workspace, Revision
     6 from rest_framework import serializers
     8 from rest_framework import serializers
     7 
     9 
     8 
    10 
    10     id = serializers.ReadOnlyField(source="renkan_guid")
    12     id = serializers.ReadOnlyField(source="renkan_guid")
    11     current_revision_id = serializers.ReadOnlyField(source="current_revision_guid")
    13     current_revision_id = serializers.ReadOnlyField(source="current_revision_guid")
    12     workspace_id = serializers.CharField(source="workspace_guid", required=False)
    14     workspace_id = serializers.CharField(source="workspace_guid", required=False)
    13     source_revision_id = serializers.CharField(source="source_revision_guid", required=False)
    15     source_revision_id = serializers.CharField(source="source_revision_guid", required=False)
    14     revision_count = serializers.ReadOnlyField()
    16     revision_count = serializers.ReadOnlyField()
    15     created_by = serializers.StringRelatedField(source="creator")
    17     created_by = serializers.SlugRelatedField(source="creator", slug_field=settings.RENKAN_USER_DISPLAY_FIELD, read_only=True)
    16     last_updated_by = serializers.SerializerMethodField("get_current_revision_last_updator")
    18     last_updated_by = serializers.SerializerMethodField("get_current_revision_last_updator")
    17     title = serializers.CharField(required=False)
    19     title = serializers.CharField(required=False)
    18     content = serializers.JSONField(required=False)
    20     content = serializers.JSONField(required=False)
    19     creation_date = serializers.ReadOnlyField()
    21     creation_date = serializers.ReadOnlyField()
    20     modification_date = serializers.SerializerMethodField("get_current_revision_modification_date")
    22     modification_date = serializers.SerializerMethodField("get_current_revision_modification_date")
    21     create_new_revision = serializers.BooleanField(write_only=True, required=False) # only used for updating
    23     create_new_revision = serializers.BooleanField(write_only=True, required=False) # only used for updating
    22     
    24     
    23     # ADD ERROR HANDLING
    25     # ADD ERROR HANDLING
    24     def get_current_revision_last_updator(self, renkan):
    26     def get_current_revision_last_updator(self, renkan):
    25         current_revision = Revision.objects.get(revision_guid = renkan.current_revision_guid)
    27         current_revision = Revision.objects.get(revision_guid = renkan.current_revision_guid)
    26         return current_revision.last_updated_by.username
    28         return getattr(current_revision.last_updated_by, settings.RENKAN_USER_DISPLAY_FIELD)
    27     
    29     
    28     
    30     
    29     def get_current_revision_modification_date(self, renkan):
    31     def get_current_revision_modification_date(self, renkan):
    30         current_revision = Revision.objects.get(revision_guid = renkan.current_revision_guid)
    32         current_revision = Revision.objects.get(revision_guid = renkan.current_revision_guid)
    31         return current_revision.modification_date
    33         return current_revision.modification_date
   125     id = serializers.ReadOnlyField(source="revision_guid")
   127     id = serializers.ReadOnlyField(source="revision_guid")
   126     parent_renkan_id = serializers.ReadOnlyField(source="parent_renkan_guid")
   128     parent_renkan_id = serializers.ReadOnlyField(source="parent_renkan_guid")
   127     workspace_id = serializers.SerializerMethodField("get_related_workspace_guid")
   129     workspace_id = serializers.SerializerMethodField("get_related_workspace_guid")
   128     title = serializers.ReadOnlyField()
   130     title = serializers.ReadOnlyField()
   129     content = serializers.JSONField(read_only=True)
   131     content = serializers.JSONField(read_only=True)
   130     renkan_created_by = serializers.SerializerMethodField("get_related_project_creator")
   132     renkan_created_by = serializers.SerializerMethodField("get_related_renkan_creator")
   131     renkan_creation_date = serializers.SerializerMethodField("get_related_project_creation_date")
   133     renkan_creation_date = serializers.SerializerMethodField("get_related_renkan_creation_date")
   132     revision_created_by = serializers.StringRelatedField(source="creator")
   134     revision_created_by = serializers.SlugRelatedField(source="creator", slug_field=settings.RENKAN_USER_DISPLAY_FIELD, read_only=True)
   133     revision_last_updated_by = serializers.StringRelatedField(source="last_updated_by")
   135     revision_last_updated_by = serializers.StringRelatedField(source="last_updated_by")
   134     revision_modification_date = serializers.ReadOnlyField(source="modification_date")
   136     revision_modification_date = serializers.ReadOnlyField(source="modification_date")
   135     
   137     
   136     def get_related_workspace_guid(self, revision):
   138     def get_related_workspace_guid(self, revision):
   137         parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
   139         parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
   138         return parent_renkan.workspace_guid
   140         return parent_renkan.workspace_guid
   139     
   141     
   140     def get_related_project_creator(self, revision):
   142     def get_related_renkan_creator(self, revision):
   141         parent_project = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
   143         parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
   142         return parent_project.creator.username
   144         return getattr(parent_renkan.creator, settings.RENKAN_USER_DISPLAY_FIELD)
   143     
   145     
   144     def get_related_project_creation_date(self, revision):
   146     def get_related_renkan_creation_date(self, revision):
   145         parent_project = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
   147         parent_renkan = Renkan.objects.get(renkan_guid = revision.parent_renkan_guid)
   146         return parent_project.creation_date
   148         return parent_renkan.creation_date
   147     
   149     
   148 
   150 
   149 class WorkspaceSerializer(serializers.Serializer):
   151 class WorkspaceSerializer(serializers.Serializer):
   150     id = serializers.ReadOnlyField(source="workspace_guid")
   152     id = serializers.ReadOnlyField(source="workspace_guid")
   151     workspace_created_by = serializers.StringRelatedField(source="creator")
   153     workspace_created_by = serializers.SlugRelatedField(source="creator", slug_field=settings.RENKAN_USER_DISPLAY_FIELD, read_only=True)
   152     creation_date = serializers.ReadOnlyField()
   154     creation_date = serializers.ReadOnlyField()
   153     renkan_count = serializers.ReadOnlyField()
   155     renkan_count = serializers.ReadOnlyField()
   154     title = serializers.CharField()
   156     title = serializers.CharField()
   155     
   157     
   156     def create(self, validated_data):
   158     def create(self, validated_data):