Skip to content

Commit 95f7225

Browse files
authored
Merge pull request #770 from nearbeach/develop
Develop
2 parents 05af7aa + 86eaa7e commit 95f7225

34 files changed

+4932
-122
lines changed

NearBeach/decorators/check_user_permissions/api_object_data_permissions_v0.py

+5-14
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
from django.core.exceptions import PermissionDenied
22
from functools import wraps
33
from .partials.generic_permissions import generic_permissions
4-
from NearBeach.serializers.destination_serializer import DestinationSerializer
5-
from rest_framework import status
6-
from rest_framework.response import Response
74

85

96
def api_object_data_permissions(min_permission_level):
@@ -19,17 +16,11 @@ def api_object_data_permissions(min_permission_level):
1916
def decorator(func):
2017
@wraps(func)
2118
def inner(request, *args, **kwargs):
22-
serializer = DestinationSerializer(data=request.request.data)
23-
if not serializer.is_valid():
24-
return Response(
25-
data=serializer.errors,
26-
status=status.HTTP_400_BAD_REQUEST
27-
)
28-
29-
destination = serializer.data["destination"]
30-
kwargs["location_id"] = serializer.data["location_id"]
31-
32-
passes, user_level, extra_level = generic_permissions(request, destination, kwargs)
19+
passes, user_level, extra_level = generic_permissions(
20+
request,
21+
kwargs["destination"],
22+
kwargs
23+
)
3324

3425
if not passes:
3526
raise PermissionDenied
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
from rest_framework import serializers
2+
from NearBeach.models import ChangeTask
3+
4+
5+
class ChangeTaskSerializer(serializers.ModelSerializer):
6+
change_task_seconds = serializers.ReadOnlyField()
7+
change_task_status_name = serializers.CharField(
8+
source="get_change_task_status_display",
9+
read_only=True,
10+
)
11+
12+
class Meta:
13+
model = ChangeTask
14+
exclude = [
15+
"creation_user",
16+
"change_user",
17+
"date_modified",
18+
"is_deleted",
19+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
from rest_framework import serializers
2+
from NearBeach.models import (
3+
Group,
4+
KANBAN_BOARD_STATUS_CHOICE,
5+
KanbanBoard,
6+
KanbanCard,
7+
KanbanColumn,
8+
KanbanLevel,
9+
OBJECT_CARD_PRIORITY,
10+
OBJECT_HIGHER_ORDER_STATUS,
11+
)
12+
from NearBeach.serializers.kanban_column_serializer import KanbanColumnSerializer
13+
from NearBeach.serializers.kanban_level_serializer import KanbanLevelSerializer
14+
from NearBeach.serializers.kanban_card_serializer import KanbanCardSerializer
15+
16+
17+
class KanbanBoardSerializer(serializers.Serializer):
18+
column_property = serializers.ChoiceField(
19+
required=False,
20+
choices=OBJECT_HIGHER_ORDER_STATUS,
21+
)
22+
column_title = serializers.CharField(
23+
max_length=255,
24+
required=False,
25+
)
26+
group_list = serializers.PrimaryKeyRelatedField(
27+
many=False,
28+
queryset=Group.objects.filter(
29+
is_deleted=False,
30+
),
31+
required=True,
32+
write_only=True,
33+
)
34+
kanban_board_id = serializers.IntegerField(
35+
read_only=True,
36+
)
37+
kanban_board_name = serializers.CharField(
38+
max_length=255,
39+
required=True,
40+
)
41+
kanban_board_status = serializers.ChoiceField(
42+
default="Open",
43+
choices=KANBAN_BOARD_STATUS_CHOICE,
44+
read_only=True,
45+
)
46+
kanban_column = KanbanColumnSerializer(
47+
many=True,
48+
allow_null=True,
49+
read_only=True,
50+
)
51+
kanban_level = KanbanLevelSerializer(
52+
many=True,
53+
allow_null=True,
54+
read_only=True,
55+
)
56+
kanban_card = KanbanCardSerializer(
57+
many=True,
58+
allow_null=True,
59+
read_only=True,
60+
)
61+
level_title = serializers.CharField(
62+
required=False,
63+
max_length=255,
64+
)
65+
uuid = serializers.UUIDField(
66+
required=False,
67+
write_only=True,
68+
)
69+
70+
def get_fields(self):
71+
fields = super().get_fields()
72+
73+
# Check to see if request exists in context
74+
if "request" not in self.context:
75+
return fields
76+
77+
# Creating a new task
78+
if self.context["request"].method == "POST":
79+
fields.pop("kanban_board_status", None)
80+
fields["column_property"].required = True
81+
fields["column_title"].required = True
82+
fields["level_title"].required = True
83+
84+
# Updating a new task
85+
if self.context['request'].method == "PUT":
86+
fields.pop("group_list", None)
87+
88+
return fields
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from rest_framework import serializers
2+
from NearBeach.models import KanbanCard
3+
4+
5+
class KanbanCardSerializer(serializers.ModelSerializer):
6+
class Meta:
7+
model = KanbanCard
8+
exclude = [
9+
"is_archived",
10+
"date_modified",
11+
"change_user",
12+
"is_deleted",
13+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
from rest_framework import serializers
2+
from NearBeach.models import KanbanColumn
3+
4+
5+
class KanbanColumnSerializer(serializers.ModelSerializer):
6+
class Meta:
7+
model = KanbanColumn
8+
fields = [
9+
"kanban_column_id",
10+
"kanban_column_name",
11+
"kanban_column_property",
12+
"kanban_column_sort_number",
13+
"kanban_board"
14+
]
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
from rest_framework import serializers
2+
from NearBeach.models import KanbanLevel
3+
4+
5+
class KanbanLevelSerializer(serializers.ModelSerializer):
6+
class Meta:
7+
model = KanbanLevel
8+
fields = [
9+
"kanban_level_id",
10+
"kanban_level_name",
11+
"kanban_level_sort_number",
12+
"kanban_board"
13+
]

NearBeach/serializers/object_data/group_and_user_serializer.py

+7-12
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
11
from rest_framework import serializers
22
from NearBeach.models import Group, User
3-
from NearBeach.serializers.destination_serializer import DestinationSerializer
43

54

6-
class GroupAndUserSerializer(DestinationSerializer):
7-
# Queryset Data
8-
group_results = Group.objects.filter(
9-
is_deleted=False,
10-
)
11-
user_results = User.objects.filter(
12-
is_active=True,
13-
)
14-
5+
class GroupAndUserSerializer(serializers.Serializer):
156
# Serialise Data
167
group = serializers.PrimaryKeyRelatedField(
178
required=False,
189
many=False,
19-
queryset=group_results,
10+
queryset=Group.objects.filter(
11+
is_deleted=False,
12+
),
2013
)
2114
user = serializers.PrimaryKeyRelatedField(
2215
required=False,
@@ -28,7 +21,9 @@ class GroupAndUserSerializer(DestinationSerializer):
2821
group_list = serializers.PrimaryKeyRelatedField(
2922
required=False,
3023
many=True,
31-
queryset=group_results,
24+
queryset=Group.objects.filter(
25+
is_deleted=False,
26+
),
3227
)
3328
user_list = serializers.PrimaryKeyRelatedField(
3429
required=False,

NearBeach/serializers/object_data/link_serializer.py

-14
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from rest_framework import serializers
2-
from NearBeach.decorators.check_destination import OBJECT_ARRAY
32
from NearBeach.models import (
43
ChangeTask,
54
Project,
@@ -14,16 +13,9 @@ class LinkSerializer(serializers.Serializer):
1413
queryset=ChangeTask.objects.all(),
1514
required=False,
1615
)
17-
destination = serializers.ChoiceField(
18-
required=False,
19-
choices=OBJECT_ARRAY,
20-
)
2116
link_relationship = serializers.CharField(
2217
read_only=True,
2318
)
24-
location_id = serializers.IntegerField(
25-
required=False,
26-
)
2719
object_assignment_id = serializers.IntegerField(
2820
read_only=True,
2921
)
@@ -74,12 +66,6 @@ def get_fields(self):
7466

7567
# If creating a new link, we'll need the object relation
7668
if self.context["request"].method == "POST":
77-
fields["destination"].required = True
78-
fields["location_id"].required = True
7969
fields["object_relation"].required = True
8070

81-
if self.context["request"].method == "DELETE":
82-
fields["destination"].required = True
83-
fields["location_id"].required = True
84-
8571
return fields

NearBeach/serializers/object_data/note_serializer.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from rest_framework import serializers
2-
from NearBeach.serializers.destination_serializer import DestinationSerializer
32

43

5-
class NoteSerializer(DestinationSerializer):
4+
class NoteSerializer(serializers.Serializer):
65
can_edit = serializers.BooleanField(
76
read_only=True,
87
)
@@ -32,9 +31,6 @@ def get_fields(self):
3231

3332
# Check to see if request exists in context
3433
if "request" not in self.context:
35-
# When there is no context, we don't want these fields to be required
36-
fields["destination"].required = False
37-
fields["location_id"].required = False
3834
return fields
3935

4036
if self.context["request"].method == "GET":

NearBeach/serializers/object_data/object_sprint_serializer.py

+1-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
from rest_framework import serializers
2-
from NearBeach.serializers.destination_serializer import DestinationSerializer
32

43

5-
class ObjectSprintSerializer(DestinationSerializer):
4+
class ObjectSprintSerializer(serializers.Serializer):
65
sprint_id = serializers.IntegerField(
76
read_only=True,
87
)
@@ -32,9 +31,6 @@ def get_fields(self):
3231

3332
# Check to see if request exists in context
3433
if "request" not in self.context:
35-
# When there is no context, we don't want these fields to be required
36-
fields["destination"].required = False
37-
fields["location_id"].required = False
3834
return fields
3935

4036
if self.context["request"].method == "GET":

NearBeach/serializers/object_data/tag_serializer.py

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
from rest_framework import serializers
2-
from NearBeach.serializers.destination_serializer import DestinationSerializer
32
from NearBeach.models import Tag
43

5-
class TagSerializer(DestinationSerializer):
4+
5+
class TagSerializer(serializers.Serializer):
66
tag_assignment_id = serializers.IntegerField(
77
read_only=True,
88
)
@@ -29,9 +29,6 @@ def get_fields(self):
2929

3030
# Check to see if request exists in context
3131
if "request" not in self.context:
32-
# When there is no context, we don't want these fields to be required
33-
fields["destination"].required = False
34-
fields["location_id"].required = False
3532
return fields
3633

3734
if self.context["request"].method == "POST":

0 commit comments

Comments
 (0)