| author | durandn |
| Tue, 03 May 2016 14:32:28 +0200 | |
| changeset 610 | b9edc1c1538a |
| parent 608 | 8fd40139827c |
| child 611 | f0f07e2b841f |
| permissions | -rw-r--r-- |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
1 |
# -*- coding: utf-8 -*- |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
2 |
''' |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
3 |
Created on Jul 01, 2014 |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
4 |
|
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
5 |
@author: tc |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
6 |
''' |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
7 |
from datetime import datetime |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
8 |
import json |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
9 |
import logging |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
10 |
import uuid |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
11 |
|
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
12 |
from django.db import transaction |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
13 |
from django.core.urlresolvers import reverse |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
14 |
from django.http import Http404 |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
15 |
from django.http.response import HttpResponse, HttpResponseBadRequest |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
16 |
from django.shortcuts import get_object_or_404, redirect |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
17 |
from django.views.generic import View |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
18 |
from django.conf import settings |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
19 |
from renkanmanager.models import Renkan, Revision, Workspace |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
20 |
from renkanmanager.serializers import RenkanSerializer, RevisionSerializer, WorkspaceSerializer |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
21 |
from rest_framework import permissions, status |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
22 |
from rest_framework.response import Response |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
23 |
from rest_framework.views import APIView |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
24 |
|
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
25 |
logger = logging.getLogger(__name__) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
26 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
27 |
class RenkanList(APIView): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
28 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
29 |
View for listing renkans or posting new renkan |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
30 |
""" |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
31 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
32 |
queryset = Renkan.objects |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
33 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
34 |
def get(self, request, workspace_guid='', format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
35 |
if workspace_guid == '': |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
36 |
renkans = self.queryset.all() |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
37 |
else: |
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
38 |
renkans = self.queryset.filter(workspace__workspace_guid=workspace_guid) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
39 |
serializer = RenkanSerializer(renkans, many=True) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
40 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
41 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
42 |
def post(self, request, workspace_guid='', format=None): |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
43 |
create_data = {key:request.data[key] for key in request.data.keys()} |
|
589
0ae11aa255a3
Moved python2/django into a django2 folder for consistency + clarified serializers fields name
durandn
parents:
588
diff
changeset
|
44 |
source_renkan_guid = request.GET.get("source_renkan_id", request.data.get("source_renkan_id", None)) |
|
0ae11aa255a3
Moved python2/django into a django2 folder for consistency + clarified serializers fields name
durandn
parents:
588
diff
changeset
|
45 |
source_revision_guid = request.GET.get("source_revision_id", request.data.get("source_revision_id", None)) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
46 |
if source_renkan_guid is not None: |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
47 |
try: |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
48 |
source_renkan=Renkan.objects.get(renkan_guid=source_renkan_guid) |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
49 |
except Renkan.DoesNotExist: |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
50 |
return Response({'detail': 'Source renkan '+source_renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
51 |
source_revision_guid = source_renkan.current_revision.revision_guid |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
52 |
if source_revision_guid is not None: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
53 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
54 |
source_revision=Revision.objects.get(revision_guid=source_revision_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
55 |
except Revision.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
56 |
return Response({'detail': 'Source revision '+source_revision_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
589
0ae11aa255a3
Moved python2/django into a django2 folder for consistency + clarified serializers fields name
durandn
parents:
588
diff
changeset
|
57 |
create_data["source_revision_id"] = source_revision.revision_guid |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
58 |
create_data["title"] = request.data.get("title", source_revision.title) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
59 |
create_data["content"] = source_revision.content |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
60 |
if workspace_guid: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
61 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
62 |
workspace = Workspace.objects.get(workspace_guid=workspace_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
63 |
except Workspace.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
64 |
return Response({'detail': 'Workspace '+workspace_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
589
0ae11aa255a3
Moved python2/django into a django2 folder for consistency + clarified serializers fields name
durandn
parents:
588
diff
changeset
|
65 |
create_data["workspace_id"] = workspace_guid |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
66 |
serializer = RenkanSerializer(data=create_data) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
67 |
if serializer.is_valid(): |
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
68 |
serializer.save(creator=request.user) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
69 |
return Response(serializer.data, status=status.HTTP_201_CREATED, content_type='application/json') |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
70 |
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
71 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
72 |
|
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
73 |
class RenkanDetail(APIView): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
74 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
75 |
View for retrieving, updating or deleting a single renkan |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
76 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
77 |
lookup_field = "renkan_guid" |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
78 |
queryset = Renkan.objects |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
79 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
80 |
def get_object(self, renkan_guid): |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
81 |
return self.queryset.get(renkan_guid=renkan_guid) |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
82 |
|
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
83 |
def dispatch(self, *args, **kwargs): |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
84 |
return super(RenkanDetail, self).dispatch(*args, **kwargs) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
85 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
86 |
def get(self, request, renkan_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
87 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
88 |
renkan = self.get_object(renkan_guid=renkan_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
89 |
except Renkan.DoesNotExist: |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
90 |
return Response({'detail': 'Renkan project %r does not exist'.format(renkan_guid)}, status=status.HTTP_404_NOT_FOUND) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
91 |
self.check_object_permissions(request, renkan) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
92 |
serializer = RenkanSerializer(renkan) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
93 |
if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()): |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
94 |
return Response(json.loads(serializer.data["content"]), status=status.HTTP_200_OK, content_type='application/json') |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
95 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
| 598 | 96 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
97 |
def put(self, request, renkan_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
98 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
99 |
renkan = self.get_object(renkan_guid=renkan_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
100 |
except Renkan.DoesNotExist: |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
101 |
return Response({'detail': 'Renkan project %r does not exist'.format(renkan_guid)}, status=status.HTTP_404_NOT_FOUND) |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
102 |
logger.debug("RENKAN PUT %r : CHECKING OBJECT PERMISSION", renkan_guid) |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
103 |
logger.debug("RENKAN PUT: permission? %r", request.user.has_perm("change_renkan", renkan)) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
104 |
self.check_object_permissions(request, renkan) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
105 |
logger.debug("RENKAN PUT: PERMISSION GRANTED") |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
106 |
if {'true': True, 'false': False, "0": False, "1": True}.get(request.GET.get("content_only", "false").lower()): |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
107 |
put_data = {} |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
108 |
put_data["content"] = json.dumps(request.data) |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
109 |
put_data["title"] = request.data.get("title", "") |
| 598 | 110 |
else: |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
111 |
put_data = request.data |
|
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
112 |
serializer = RenkanSerializer(renkan, data=put_data) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
113 |
if serializer.is_valid(): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
114 |
serializer.save(updator=request.user) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
115 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
116 |
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
| 598 | 117 |
|
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
118 |
@transaction.atomic |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
119 |
def delete(self, request, renkan_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
120 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
121 |
to_delete_renkan = self.get_object(renkan_guid=renkan_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
122 |
except Renkan.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
123 |
return Response({'detail': 'Renkan project '+renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
124 |
self.check_object_permissions(request, to_delete_renkan) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
125 |
to_delete_renkan.delete() |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
126 |
return Response(status=status.HTTP_204_NO_CONTENT) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
127 |
|
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
128 |
class WorkspaceList(APIView): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
129 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
130 |
View for listing workspaces or creating new workspace |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
131 |
""" |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
132 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
133 |
queryset = Workspace.objects |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
134 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
135 |
def get(self, request, format=None): |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
136 |
workspaces = self.queryset.all() |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
137 |
serializer = WorkspaceSerializer(workspaces, many=True) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
138 |
return Response(serializer.data) |
| 598 | 139 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
140 |
def post(self, request, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
141 |
serializer = WorkspaceSerializer(data=request.data) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
142 |
if serializer.is_valid(): |
| 598 | 143 |
serializer.save(creator=request.user) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
144 |
return Response(serializer.data, status=status.HTTP_201_CREATED, content_type='application/json') |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
145 |
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
| 598 | 146 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
147 |
class WorkspaceDetail(APIView): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
148 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
149 |
View for retrieving, updating or deleting a single workspace |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
150 |
""" |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
151 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
152 |
lookup_field = "workspace_guid" |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
153 |
queryset = Workspace.objects |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
154 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
155 |
def get_object(self, workspace_guid): |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
156 |
return self.queryset.get(workspace_guid=workspace_guid) |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
157 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
158 |
def get(self, request, workspace_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
159 |
try: |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
160 |
workspace = self.get_object(workspace_guid=workspace_guid) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
161 |
except Workspace.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
162 |
return Response({'detail': 'Workspace '+workspace_guid+' does not exist.'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
163 |
self.check_object_permissions(request, workspace) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
164 |
serializer = WorkspaceSerializer(workspace) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
165 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
| 598 | 166 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
167 |
def put(self, request, workspace_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
168 |
try: |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
169 |
workspace = self.get_object(workspace_guid=workspace_guid) |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
170 |
except Workspace.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
171 |
return Response({'detail': 'Workspace '+workspace_guid+' does not exist.'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
172 |
self.check_object_permissions(request, workspace) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
173 |
serializer = WorkspaceSerializer(workspace, data=request.data) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
174 |
if serializer.is_valid(): |
| 598 | 175 |
serializer.save() |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
176 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
177 |
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) |
| 598 | 178 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
179 |
def delete(self, request, workspace_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
180 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
181 |
to_delete_workspace = self.get_object(workspace_guid=workspace_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
182 |
except Workspace.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
183 |
return Response({'detail': 'Workspace '+workspace_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
184 |
self.check_object_permissions(request, to_delete_workspace) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
185 |
if to_delete_workspace.renkan_count != 0: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
186 |
return Response({'detail': 'Workspace '+workspace_guid+' cannot be deleted because it is not empty'}, status=status.HTTP_400_BAD_REQUEST) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
187 |
to_delete_workspace.delete() |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
188 |
return Response(status=status.HTTP_204_NO_CONTENT) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
189 |
|
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
190 |
class RevisionList(APIView): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
191 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
192 |
View for listing revisions from a given renkan |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
193 |
""" |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
194 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
195 |
def get_queryset(self, renkan_guid=""): |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
196 |
if renkan_guid: |
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
197 |
return Revision.objects.filter(parent_renkan__renkan_guid=renkan_guid) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
198 |
else: |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
199 |
return Revision.objects |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
200 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
201 |
def get(self, request, renkan_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
202 |
revisions = self.get_queryset(renkan_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
203 |
if not revisions: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
204 |
return Response({'detail': 'Renkan project '+renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
205 |
serializer = RevisionSerializer(revisions.all(), many=True) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
206 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
207 |
|
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
208 |
class RevisionDetail(APIView): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
209 |
""" |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
210 |
View for retrieving or deleting a single revision from a given renkan |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
211 |
""" |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
212 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
213 |
lookup_field = "revision_guid" |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
214 |
|
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
215 |
def get_queryset(self, renkan_guid=""): |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
216 |
if renkan_guid: |
|
610
b9edc1c1538a
reworked views and serializers to pass and take into account the "validation timestamp" to the model + refactored models to have a content validation method + adapted tests
durandn
parents:
608
diff
changeset
|
217 |
return Revision.objects.filter(parent_renkan__renkan_guid=renkan_guid) |
|
608
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
218 |
else: |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
219 |
return Revision.objects |
|
8fd40139827c
permission implementation has to be client-side and not in the generic api package + deleted duplicate migration
durandn
parents:
602
diff
changeset
|
220 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
221 |
def get(self, request, renkan_guid, revision_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
222 |
revisions = self.get_queryset(renkan_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
223 |
if not revisions: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
224 |
return Response({'detail': 'Renkan project '+renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
225 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
226 |
revision = revisions.get(revision_guid=revision_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
227 |
except Revision.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
228 |
return Response({'detail': 'Revision '+revision_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
229 |
self.check_object_permissions(request, revision) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
230 |
serializer = RevisionSerializer(revision) |
|
588
95536fa18d0d
Minor adjustements to properly interact with Renkan client
durandn
parents:
587
diff
changeset
|
231 |
return Response(serializer.data, status=status.HTTP_200_OK, content_type='application/json') |
| 598 | 232 |
|
|
587
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
233 |
def delete(self, request, renkan_guid, revision_guid, format=None): |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
234 |
revisions = self.get_queryset(renkan_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
235 |
if not revisions: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
236 |
return Response({'detail': 'Renkan project '+renkan_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
237 |
try: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
238 |
revision = revisions.get(revision_guid=revision_guid) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
239 |
except Revision.DoesNotExist: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
240 |
return Response({'detail': 'Revision '+revision_guid+' does not exist'}, status=status.HTTP_404_NOT_FOUND) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
241 |
self.check_object_permissions(request, revision) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
242 |
if revisions.count() == 1: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
243 |
return Response({'detail': 'You cannot delete the last remaining revision of a renkan from the Revision API. Try deleting the parent Renkan with the Renkan API'}, status=status.HTTP_400_BAD_REQUEST) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
244 |
if revision.is_current_revision: |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
245 |
return Response({'detail': 'You cannot delete the current revision of a renkan from the Revision API.'}, status=status.HTTP_400_BAD_REQUEST) |
|
fb0041aa74d3
transfer work on renkanmanager into a renkan/server/python2 folder: reworked models, implemented simple API basic permissions, wrote tests
durandn
parents:
diff
changeset
|
246 |
revision.delete() |
| 598 | 247 |
return Response(status=status.HTTP_204_NO_CONTENT) |