Skip to content

Commit a89e3f5

Browse files
serializer changes to post correct data to the API endpoint
1 parent 7a6fef2 commit a89e3f5

File tree

1 file changed

+43
-3
lines changed

1 file changed

+43
-3
lines changed

sde_collections/serializers.py

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@
22

33
from .models.candidate_url import CandidateURL
44
from .models.collection import Collection, WorkflowHistory
5-
from .models.collection_choice_fields import DocumentTypes
5+
from .models.collection_choice_fields import Divisions, DocumentTypes
66
from .models.pattern import (
7+
DivisionPattern,
78
DocumentTypePattern,
89
ExcludePattern,
910
IncludePattern,
@@ -28,27 +29,35 @@ class Meta:
2829
"document_type",
2930
"name",
3031
)
31-
extra_kwargs = {"division":{'required': False}, "document_type":{'required': False}, "name":{'required': False}}
32+
extra_kwargs = {
33+
"division": {"required": False},
34+
"document_type": {"required": False},
35+
"name": {"required": False},
36+
}
3237

3338
# extra_kwargs = {
3439
# "name": {"required": False},
3540
# "config_folder": {"required": False},
3641
# "division": {"required": False},
3742
# }
3843

44+
3945
class CollectionReadSerializer(serializers.ModelSerializer):
4046
class Meta:
4147
model = Collection
4248
fields = "__all__"
4349

50+
4451
class WorkflowHistorySerializer(serializers.ModelSerializer):
4552
class Meta:
4653
model = WorkflowHistory
4754
fields = "__all__"
4855

56+
4957
class CandidateURLSerializer(serializers.ModelSerializer):
5058
excluded = serializers.BooleanField(required=False)
5159
document_type_display = serializers.CharField(source="get_document_type_display", read_only=True)
60+
division_display = serializers.CharField(source="get_division_display", read_only=True)
5261
url = serializers.CharField(required=False)
5362
generated_title_id = serializers.SerializerMethodField(read_only=True)
5463
match_pattern_type = serializers.SerializerMethodField(read_only=True)
@@ -79,6 +88,8 @@ class Meta:
7988
"candidate_urls_count",
8089
"document_type",
8190
"document_type_display",
91+
"division",
92+
"division_display",
8293
"visited",
8394
"test_title",
8495
"production_title",
@@ -128,7 +139,13 @@ def get_file_extension(self, obj):
128139
return obj.fileext
129140

130141
def get_tree_root(self, obj):
131-
return obj.collection.tree_root
142+
if obj.collection.is_multi_division:
143+
if obj.division:
144+
return f"/{obj.get_division_display()}/{obj.collection.config_folder}"
145+
else:
146+
return f"/{obj.collection.get_division_display()}/{obj.collection.config_folder}"
147+
else:
148+
return obj.collection.tree_root
132149

133150

134151
class BasePatternSerializer(serializers.ModelSerializer):
@@ -205,3 +222,26 @@ def validate_match_pattern(self, value):
205222
except DocumentTypePattern.DoesNotExist:
206223
pass
207224
return value
225+
226+
227+
class DivisionPatternSerializer(BasePatternSerializer, serializers.ModelSerializer):
228+
division_display = serializers.CharField(source="get_division_display", read_only=True)
229+
division = serializers.ChoiceField(choices=Divisions.choices)
230+
231+
class Meta:
232+
model = DivisionPattern
233+
fields = BasePatternSerializer.Meta.fields + (
234+
"division",
235+
"division_display",
236+
)
237+
238+
def validate_match_pattern(self, value):
239+
try:
240+
division_pattern = DivisionPattern.objects.get(
241+
match_pattern=value,
242+
match_pattern_type=DivisionPattern.MatchPatternTypeChoices.INDIVIDUAL_URL,
243+
)
244+
division_pattern.delete()
245+
except DivisionPattern.DoesNotExist:
246+
pass
247+
return value

0 commit comments

Comments
 (0)