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() |