9
9
)
10
10
from src .pipeline .parsers .utils import (
11
11
get_root_tag ,
12
- make_datetime_json_serializable ,
12
+ make_datetime ,
13
+ serialize_datetime ,
13
14
tagged_children ,
14
15
try_float ,
15
16
)
@@ -23,7 +24,8 @@ def parse_dep(dep):
23
24
date = dep .get ("DA" )
24
25
time = dep .get ("TI" )
25
26
# cannot use DateTime because the data needs to be json serializable
26
- departure_datetime_utc = make_datetime_json_serializable (date , time )
27
+ activity_datetime_utc = make_datetime (date , time )
28
+ departure_datetime_utc = serialize_datetime (activity_datetime_utc )
27
29
28
30
value = {
29
31
"departureDatetimeUtc" : departure_datetime_utc ,
@@ -41,15 +43,20 @@ def parse_dep(dep):
41
43
species_onboard = [parse_spe (spe ) for spe in children ["SPE" ]]
42
44
value ["speciesOnboard" ] = species_onboard
43
45
44
- data = {"log_type" : "DEP" , "value" : value }
46
+ data = {
47
+ "activity_datetime_utc" : activity_datetime_utc ,
48
+ "log_type" : "DEP" ,
49
+ "value" : value ,
50
+ }
45
51
46
52
return data
47
53
48
54
49
55
def parse_far (far ):
50
56
date = far .get ("DA" )
51
57
time = far .get ("TI" )
52
- far_datetime_utc = make_datetime_json_serializable (date , time )
58
+ activity_datetime_utc = make_datetime (date , time )
59
+ far_datetime_utc = serialize_datetime (activity_datetime_utc )
53
60
54
61
value = {"farDatetimeUtc" : far_datetime_utc }
55
62
@@ -72,15 +79,20 @@ def parse_far(far):
72
79
value ["latitude" ] = try_float (lat )
73
80
value ["longitude" ] = try_float (lon )
74
81
75
- data = {"log_type" : "FAR" , "value" : {"hauls" : [value ]}}
82
+ data = {
83
+ "activity_datetime_utc" : activity_datetime_utc ,
84
+ "log_type" : "FAR" ,
85
+ "value" : {"hauls" : [value ]},
86
+ }
76
87
77
88
return data
78
89
79
90
80
91
def parse_ecps (ecps ):
81
92
date = ecps .get ("DA" )
82
93
time = ecps .get ("TI" )
83
- far_datetime_utc = make_datetime_json_serializable (date , time )
94
+ activity_datetime_utc = make_datetime (date , time )
95
+ far_datetime_utc = serialize_datetime (activity_datetime_utc )
84
96
85
97
value = {"cpsDatetimeUtc" : far_datetime_utc }
86
98
@@ -103,15 +115,20 @@ def parse_ecps(ecps):
103
115
value ["latitude" ] = try_float (lat )
104
116
value ["longitude" ] = try_float (lon )
105
117
106
- data = {"log_type" : "CPS" , "value" : value }
118
+ data = {
119
+ "activity_datetime_utc" : activity_datetime_utc ,
120
+ "log_type" : "CPS" ,
121
+ "value" : value ,
122
+ }
107
123
108
124
return data
109
125
110
126
111
127
def parse_dis (dis ):
112
128
date = dis .get ("DA" )
113
129
time = dis .get ("TI" )
114
- discard_datetime_utc = make_datetime_json_serializable (date , time )
130
+ activity_datetime_utc = make_datetime (date , time )
131
+ discard_datetime_utc = serialize_datetime (activity_datetime_utc )
115
132
116
133
value = {"discardDatetimeUtc" : discard_datetime_utc }
117
134
@@ -121,15 +138,20 @@ def parse_dis(dis):
121
138
catches = [parse_spe (spe ) for spe in children ["SPE" ]]
122
139
value ["catches" ] = catches
123
140
124
- data = {"log_type" : "DIS" , "value" : value }
141
+ data = {
142
+ "activity_datetime_utc" : activity_datetime_utc ,
143
+ "log_type" : "DIS" ,
144
+ "value" : value ,
145
+ }
125
146
126
147
return data
127
148
128
149
129
150
def parse_coe (coe ):
130
151
date = coe .get ("DA" )
131
152
time = coe .get ("TI" )
132
- effort_zone_entry_datetime_utc = make_datetime_json_serializable (date , time )
153
+ activity_datetime_utc = make_datetime (date , time )
154
+ effort_zone_entry_datetime_utc = serialize_datetime (activity_datetime_utc )
133
155
134
156
children = tagged_children (coe )
135
157
@@ -154,15 +176,20 @@ def parse_coe(coe):
154
176
value ["latitudeEntered" ] = try_float (lat )
155
177
value ["longitudeEntered" ] = try_float (lon )
156
178
157
- data = {"log_type" : "COE" , "value" : value }
179
+ data = {
180
+ "activity_datetime_utc" : activity_datetime_utc ,
181
+ "log_type" : "COE" ,
182
+ "value" : value ,
183
+ }
158
184
159
185
return data
160
186
161
187
162
188
def parse_cox (cox ):
163
189
date = cox .get ("DA" )
164
190
time = cox .get ("TI" )
165
- effort_zone_exit_datetime_utc = make_datetime_json_serializable (date , time )
191
+ activity_datetime_utc = make_datetime (date , time )
192
+ effort_zone_exit_datetime_utc = serialize_datetime (activity_datetime_utc )
166
193
167
194
children = tagged_children (cox )
168
195
@@ -187,7 +214,11 @@ def parse_cox(cox):
187
214
value ["latitudeExited" ] = try_float (lat )
188
215
value ["longitudeExited" ] = try_float (lon )
189
216
190
- data = {"log_type" : "COX" , "value" : value }
217
+ data = {
218
+ "activity_datetime_utc" : activity_datetime_utc ,
219
+ "log_type" : "COX" ,
220
+ "value" : value ,
221
+ }
191
222
192
223
return data
193
224
@@ -197,6 +228,8 @@ def parse_cro(cro):
197
228
198
229
value = {}
199
230
231
+ activity_datetime_utc = None
232
+
200
233
if "COE" in children :
201
234
assert len (children ["COE" ]) == 1
202
235
coe = children ["COE" ][0 ]
@@ -207,24 +240,31 @@ def parse_cro(cro):
207
240
assert len (children ["COX" ]) == 1
208
241
cox = children ["COX" ][0 ]
209
242
cox_data = parse_cox (cox )
243
+ activity_datetime_utc = cox_data ["activity_datetime_utc" ]
210
244
cox_value = cox_data ["value" ]
211
245
value = {** value , ** cox_value }
212
246
213
- data = {"log_type" : "CRO" , "value" : value }
247
+ data = {
248
+ "activity_datetime_utc" : activity_datetime_utc ,
249
+ "log_type" : "CRO" ,
250
+ "value" : value ,
251
+ }
214
252
return data
215
253
216
254
217
255
def parse_pno (pno ):
218
256
date = pno .get ("PD" )
219
257
time = pno .get ("PT" )
220
- predicted_arrival_datetime_utc = make_datetime_json_serializable (date , time )
258
+ activity_datetime_utc = make_datetime (date , time )
259
+ predicted_arrival_datetime_utc = serialize_datetime (activity_datetime_utc )
221
260
222
261
date = pno .get ("DA" )
223
262
time = pno .get ("TI" )
224
- predicted_landing_datetime_utc = make_datetime_json_serializable ( date , time )
263
+ predicted_landing_datetime_utc = serialize_datetime ( make_datetime ( date , time ) )
225
264
226
265
start_date = pno .get ("DS" )
227
- trip_start_date = make_datetime_json_serializable (start_date , None )
266
+ activity_datetime_utc = make_datetime (start_date , None )
267
+ trip_start_date = serialize_datetime (activity_datetime_utc )
228
268
229
269
children = tagged_children (pno )
230
270
@@ -257,15 +297,20 @@ def parse_pno(pno):
257
297
value ["latitude" ] = try_float (lat )
258
298
value ["longitude" ] = try_float (lon )
259
299
260
- data = {"log_type" : "PNO" , "value" : value }
300
+ data = {
301
+ "activity_datetime_utc" : activity_datetime_utc ,
302
+ "log_type" : "PNO" ,
303
+ "value" : value ,
304
+ }
261
305
262
306
return data
263
307
264
308
265
309
def parse_lan (lan ):
266
310
date = lan .get ("DA" )
267
311
time = lan .get ("TI" )
268
- landing_datetime_utc = make_datetime_json_serializable (date , time )
312
+ activity_datetime_utc = make_datetime (date , time )
313
+ landing_datetime_utc = serialize_datetime (activity_datetime_utc )
269
314
270
315
value = {
271
316
"landingDatetimeUtc" : landing_datetime_utc ,
@@ -279,24 +324,34 @@ def parse_lan(lan):
279
324
catches = [parse_spe (spe ) for spe in children ["SPE" ]]
280
325
value ["catchLanded" ] = catches
281
326
282
- data = {"log_type" : "LAN" , "value" : value }
327
+ data = {
328
+ "activity_datetime_utc" : activity_datetime_utc ,
329
+ "log_type" : "LAN" ,
330
+ "value" : value ,
331
+ }
283
332
284
333
return data
285
334
286
335
287
336
def parse_eof (eof ):
288
337
date = eof .get ("DA" )
289
338
time = eof .get ("TI" )
290
- end_of_fishing_datetime_utc = make_datetime_json_serializable (date , time )
339
+ activity_datetime_utc = make_datetime (date , time )
340
+ end_of_fishing_datetime_utc = serialize_datetime (activity_datetime_utc )
291
341
value = {"endOfFishingDatetimeUtc" : end_of_fishing_datetime_utc }
292
- data = {"log_type" : "EOF" , "value" : value }
342
+ data = {
343
+ "activity_datetime_utc" : activity_datetime_utc ,
344
+ "log_type" : "EOF" ,
345
+ "value" : value ,
346
+ }
293
347
return data
294
348
295
349
296
350
def parse_rtp (rtp ):
297
351
date = rtp .get ("DA" )
298
352
time = rtp .get ("TI" )
299
- return_datetime_utc = make_datetime_json_serializable (date , time )
353
+ activity_datetime_utc = make_datetime (date , time )
354
+ return_datetime_utc = serialize_datetime (activity_datetime_utc )
300
355
301
356
value = {
302
357
"returnDatetimeUtc" : return_datetime_utc ,
@@ -310,6 +365,10 @@ def parse_rtp(rtp):
310
365
gear = [parse_gea (gea ) for gea in children ["GEA" ]]
311
366
value ["gearOnboard" ] = gear
312
367
313
- data = {"log_type" : "RTP" , "value" : value }
368
+ data = {
369
+ "activity_datetime_utc" : activity_datetime_utc ,
370
+ "log_type" : "RTP" ,
371
+ "value" : value ,
372
+ }
314
373
315
374
return data
0 commit comments