2
2
3
3
from .models .candidate_url import CandidateURL
4
4
from .models .collection import Collection , WorkflowHistory
5
- from .models .collection_choice_fields import DocumentTypes
5
+ from .models .collection_choice_fields import Divisions , DocumentTypes
6
6
from .models .pattern import (
7
+ DivisionPattern ,
7
8
DocumentTypePattern ,
8
9
ExcludePattern ,
9
10
IncludePattern ,
@@ -28,27 +29,35 @@ class Meta:
28
29
"document_type" ,
29
30
"name" ,
30
31
)
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
+ }
32
37
33
38
# extra_kwargs = {
34
39
# "name": {"required": False},
35
40
# "config_folder": {"required": False},
36
41
# "division": {"required": False},
37
42
# }
38
43
44
+
39
45
class CollectionReadSerializer (serializers .ModelSerializer ):
40
46
class Meta :
41
47
model = Collection
42
48
fields = "__all__"
43
49
50
+
44
51
class WorkflowHistorySerializer (serializers .ModelSerializer ):
45
52
class Meta :
46
53
model = WorkflowHistory
47
54
fields = "__all__"
48
55
56
+
49
57
class CandidateURLSerializer (serializers .ModelSerializer ):
50
58
excluded = serializers .BooleanField (required = False )
51
59
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 )
52
61
url = serializers .CharField (required = False )
53
62
generated_title_id = serializers .SerializerMethodField (read_only = True )
54
63
match_pattern_type = serializers .SerializerMethodField (read_only = True )
@@ -79,6 +88,8 @@ class Meta:
79
88
"candidate_urls_count" ,
80
89
"document_type" ,
81
90
"document_type_display" ,
91
+ "division" ,
92
+ "division_display" ,
82
93
"visited" ,
83
94
"test_title" ,
84
95
"production_title" ,
@@ -128,7 +139,13 @@ def get_file_extension(self, obj):
128
139
return obj .fileext
129
140
130
141
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
132
149
133
150
134
151
class BasePatternSerializer (serializers .ModelSerializer ):
@@ -205,3 +222,26 @@ def validate_match_pattern(self, value):
205
222
except DocumentTypePattern .DoesNotExist :
206
223
pass
207
224
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