server/python/django2/renkanmanager/serializers.py
changeset 608 8fd40139827c
parent 594 b45eb8244cd9
child 610 b9edc1c1538a
equal deleted inserted replaced
607:d55e89c25d51 608:8fd40139827c
     1 import json
     1 import json
     2 import uuid
     2 import uuid
     3 
     3 
     4 from django.contrib.auth import get_user_model
     4 from django.contrib.auth import get_user_model
     5 from django.conf import settings
     5 from django.conf import settings
     6 from guardian.shortcuts import assign_perm
       
     7 from renkanmanager.models import Renkan, Workspace, Revision
     6 from renkanmanager.models import Renkan, Workspace, Revision
     8 from rest_framework import serializers
     7 from rest_framework import serializers
     9 
     8 
    10 RENKAN_USER_DISPLAY_FIELD = getattr(settings, "RENKAN_USER_DISPLAY_FIELD", get_user_model().USERNAME_FIELD)
     9 RENKAN_USER_DISPLAY_FIELD = getattr(settings, "RENKAN_USER_DISPLAY_FIELD", get_user_model().USERNAME_FIELD)
    11 
    10 
    64                 "views": []
    63                 "views": []
    65             }
    64             }
    66         ))
    65         ))
    67         initial_revision.save()
    66         initial_revision.save()
    68         renkan.save()
    67         renkan.save()
    69         assign_perm('view_renkan', creator, renkan)
       
    70         assign_perm('change_renkan', creator, renkan)
       
    71         assign_perm('delete_renkan', creator, renkan)
       
    72         assign_perm('view_revision', creator, initial_revision)
       
    73         assign_perm('delete_revision', creator, initial_revision)
       
    74         return renkan
    68         return renkan
    75     
    69     
    76     def update(self, renkan, validated_data):
    70     def update(self, renkan, validated_data):
    77         """
    71         """
    78             Method to update a Renkan object. Creates a new revision if needed
    72             Method to update a Renkan object. Creates a new revision if needed
    79         """
    73         """
    80         updator = validated_data.get('updator')
    74         updator = validated_data.get('updator')
    81         current_revision = Revision.objects.get(revision_guid=renkan.current_revision_guid)  
    75         current_revision = Revision.objects.get(revision_guid=renkan.current_revision_guid)  
    82         if validated_data.get("create_new_revision", False):
    76         if validated_data.get("create_new_revision", False):
    83             revision_to_update = Revision.objects.create()
    77             revision_to_update = Revision.objects.create(creator=updator)
    84             revision_to_update.parent_renkan_guid = renkan.renkan_guid
    78             revision_to_update.parent_renkan_guid = renkan.renkan_guid
    85             revision_to_update.creator = updator
       
    86             renkan.current_revision_guid = revision_to_update.revision_guid
    79             renkan.current_revision_guid = revision_to_update.revision_guid
    87         else:
    80         else:
    88             revision_to_update = current_revision
    81             revision_to_update = current_revision
    89         revision_to_update.title = validated_data.get('title', current_revision.title)
    82         revision_to_update.title = validated_data.get('title', current_revision.title)
    90         revision_to_update.content = validated_data.get('content', current_revision.content)
    83         revision_to_update.content = validated_data.get('content', current_revision.content)
   156     renkan_count = serializers.ReadOnlyField()
   149     renkan_count = serializers.ReadOnlyField()
   157     title = serializers.CharField()
   150     title = serializers.CharField()
   158     
   151     
   159     def create(self, validated_data):
   152     def create(self, validated_data):
   160         creator = validated_data.get('creator')
   153         creator = validated_data.get('creator')
   161         workspace = Workspace.objects.create()
   154         title = validated_data.get('title', '')
   162         workspace.title = validated_data.get('title', '')
   155         workspace = Workspace.objects.create(creator=creator, title=title)
   163         workspace.creator = creator
       
   164         workspace.save()
   156         workspace.save()
   165         assign_perm('view_workspace', creator, workspace)
       
   166         assign_perm('change_workspace', creator, workspace)
       
   167         assign_perm('delete_workspace', creator, workspace)
       
   168         return workspace
   157         return workspace
   169     
   158     
   170     def update(self, workspace, validated_data):
   159     def update(self, workspace, validated_data):
   171         workspace.title = validated_data.get('title', '')
   160         workspace.title = validated_data.get('title', '')
   172         workspace.save()
   161         workspace.save()