elody 0.0.177__py3-none-any.whl → 0.0.179__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
elody/csv.py CHANGED
@@ -11,6 +11,7 @@ from elody.exceptions import (
11
11
  )
12
12
  from elody.validator import validate_json
13
13
  from elody.schemas import entity_schema, mediafile_schema
14
+ from dateutil import parser
14
15
 
15
16
 
16
17
  class CSVParser:
@@ -207,6 +208,16 @@ class CSVMultiObject(CSVParser):
207
208
  return False
208
209
  return bool(value)
209
210
 
211
+ def is_datetime(self, value):
212
+ try:
213
+ parser.parse(value)
214
+ return True
215
+ except (ValueError, TypeError):
216
+ return False
217
+
218
+ def parse_datetime(self, value):
219
+ return parser.parse(value)
220
+
210
221
  def __fill_objects_from_csv(self):
211
222
  indexed_dict = dict()
212
223
  external_mediafiles_ids = []
@@ -300,6 +311,8 @@ class CSVMultiObject(CSVParser):
300
311
  metadata_key = metadata_info.get("map_to", key)
301
312
  indexed_dict[type][id].setdefault("metadata", list())
302
313
  options = metadata_info.get("value_options")
314
+ if self.is_datetime(value):
315
+ value = self.parse_datetime(value)
303
316
  if options and value not in options:
304
317
  if "invalid_value" not in self.get_errors():
305
318
  self.set_error("invalid_value", list())
@@ -17,8 +17,8 @@ class BaseObjectConfiguration(ABC):
17
17
  overwrite=overwrite,
18
18
  **kwargs,
19
19
  ),
20
- "nested_matcher_builder": lambda object_lists, keys_info, value: self.__build_nested_matcher(
21
- object_lists, keys_info, value
20
+ "nested_matcher_builder": lambda object_lists, keys_info, value, **kwargs: self.__build_nested_matcher(
21
+ object_lists, keys_info, value, **kwargs
22
22
  ),
23
23
  "post_crud_hook": lambda **kwargs: None,
24
24
  "pre_crud_hook": lambda *, document, **kwargs: document,
@@ -142,11 +142,16 @@ class BaseObjectConfiguration(ABC):
142
142
  sort_keys(document)
143
143
  return document
144
144
 
145
- def __build_nested_matcher(self, object_lists, keys_info, value, index=0):
145
+ def __build_nested_matcher(
146
+ self, object_lists, keys_info, value, *, index=0, **kwargs
147
+ ):
146
148
  if index == 0 and not any(info["object_list"] for info in keys_info):
147
149
  if value in ["ANY_MATCH", "NONE_MATCH"]:
148
150
  value = {"$exists": value == "ANY_MATCH"}
149
- return {".".join(info["key"] for info in keys_info): value}
151
+ matcher = {".".join(info["key"] for info in keys_info): value}
152
+ if inner_exact_matches := kwargs.get("inner_exact_matches"):
153
+ matcher.update(inner_exact_matches)
154
+ return matcher
150
155
 
151
156
  info = keys_info[index]
152
157
 
@@ -155,7 +160,7 @@ class BaseObjectConfiguration(ABC):
155
160
  "$elemMatch": {
156
161
  object_lists[info["object_list"]]: info["object_key"],
157
162
  **self.__build_nested_matcher(
158
- object_lists, keys_info[index + 1 :], value, 0
163
+ object_lists, keys_info[index + 1 :], value, index=0, **kwargs
159
164
  ),
160
165
  }
161
166
  }
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: elody
3
- Version: 0.0.177
3
+ Version: 0.0.179
4
4
  Summary: elody SDK for Python
5
5
  Author-email: Inuits <developers@inuits.eu>
6
6
  License: GNU GENERAL PUBLIC LICENSE
@@ -1,7 +1,7 @@
1
1
  __init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
2
  elody/__init__.py,sha256=d0Q6Fn44e7wFfLabDOBxpcJ1DPKWlFunGYDUBmO-4hA,22
3
3
  elody/client.py,sha256=VFjUUaE9edtK1XuAF5T3ayem2UEBr-Anww8AhITYLdI,8575
4
- elody/csv.py,sha256=5LZfr6p8eeK0IDHICfyBgKSMRCM-YXzXaomzl7G1-bc,15518
4
+ elody/csv.py,sha256=7ZTqwmB4CQzqN3ddoaTOKPgFHpk2UyJte-oN2994dIg,15911
5
5
  elody/error_codes.py,sha256=7ZLY69YScCB0Ghxqf2LiCt-U_JCYA_T8jTMlIDlvv2s,4179
6
6
  elody/exceptions.py,sha256=5KSw2sPCZz3lDIJX4LiR2iL9n4m4KIil04D1d3X5rd0,968
7
7
  elody/job.py,sha256=wpq1dSxYxMv1Jv1hSvyxvFI1qNbRkDNghRLhndo57rU,3923
@@ -12,7 +12,7 @@ elody/validator.py,sha256=G7Ya538EJHCFzOxEri2OcFMabfLBCtTKxuf4os_KuNw,260
12
12
  elody/migration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  elody/migration/base_object_migrator.py,sha256=n8uvgGfjEUy60G47RD7Y-oxp1vHLOauwPMDl87LcxtU,436
14
14
  elody/object_configurations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
- elody/object_configurations/base_object_configuration.py,sha256=L8K2AW-A3Bo4_Q_jl3S4hnwEGuZo3XmJH5Izditf6CM,6538
15
+ elody/object_configurations/base_object_configuration.py,sha256=dXhzQLWtIEQHx3WSPs2R-dvN3ulcPA27G3oNGAsImBQ,6756
16
16
  elody/object_configurations/elody_configuration.py,sha256=uoTYN0lzWh3Z0uN4k-o-SbRnt9YrA9AkUnIi80LWcGI,5428
17
17
  elody/object_configurations/job_configuration.py,sha256=simi4TBiZ5cQePlzFHAd-C-khViWN9VUbAOKq9FYwk8,2057
18
18
  elody/policies/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -40,8 +40,8 @@ tests/data.py,sha256=Q3oxduf-E3m-Z5G_p3fcs8jVy6g10I7zXKL1m94UVMI,2906
40
40
  tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
41
  tests/unit/test_csv.py,sha256=NQaOhehfQ4GuXku0Y1SA8DYjJeqqidbF50zEHAi8RZA,15923
42
42
  tests/unit/test_utils.py,sha256=g63szcEZyHhCOtrW4BnNbcgVca3oYPIOLjBdIzNwwN0,8784
43
- elody-0.0.177.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
44
- elody-0.0.177.dist-info/METADATA,sha256=XKT6US19rLl15m3KTJkM_yt3gCFfTGJM-kk_x1YMw6k,23336
45
- elody-0.0.177.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
46
- elody-0.0.177.dist-info/top_level.txt,sha256=E0mImupLj0KmtUUCXRYEoLDRaSkuiGaOIIseAa0oQ-M,21
47
- elody-0.0.177.dist-info/RECORD,,
43
+ elody-0.0.179.dist-info/LICENSE,sha256=gXf5dRMhNSbfLPYYTY_5hsZ1r7UU1OaKQEAQUhuIBkM,18092
44
+ elody-0.0.179.dist-info/METADATA,sha256=4Kb7mlZGeCFnIX6T_27wFLYSQmK0Fc3NQOAHM1B2IsQ,23336
45
+ elody-0.0.179.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
46
+ elody-0.0.179.dist-info/top_level.txt,sha256=E0mImupLj0KmtUUCXRYEoLDRaSkuiGaOIIseAa0oQ-M,21
47
+ elody-0.0.179.dist-info/RECORD,,