Coverage for portality / models / export.py: 90%
83 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-04 09:41 +0100
« prev ^ index » next coverage.py v7.13.5, created at 2026-05-04 09:41 +0100
1from portality.lib.seamless import SeamlessMixin
2from portality.dao import DomainObject
3from portality.lib.coerce import COERCE_MAP
4from portality.lib import es_data_mapping
5from portality.core import app
7import json
9EXPORT_STRUCT = {
10 "fields" : {
11 "id" : {"coerce" : "unicode"},
12 "created_date" : {"coerce" : "utcdatetime"},
13 "last_updated" : {"coerce" : "utcdatetime"},
14 "es_type": {"coerce": "unicode"},
15 "requester": {"coerce": "unicode"},
16 "request_date": {"coerce": "utcdatetime"},
17 "generated_date": {"coerce": "utcdatetime"},
18 "name": {"coerce": "unicode"},
19 "filename": {"coerce": "unicode"},
20 "constraints": {"coerce": "unicode"},
21 "model": {"coerce": "unicode"}
22 }
23}
25MAPPING_OPTS = {
26 "dynamic": None,
27 "coerces": app.config["DATAOBJ_TO_MAPPING_DEFAULTS"]
28}
30class Export(SeamlessMixin, DomainObject):
31 __type__ = 'export'
33 __SEAMLESS_STRUCT__ = [EXPORT_STRUCT]
34 __SEAMLESS_COERCE__ = COERCE_MAP
36 def __init__(self, **kwargs):
37 # FIXME: hack, to deal with ES integration layer being improperly abstracted
38 if "_source" in kwargs:
39 kwargs = kwargs["_source"]
40 super(Export, self).__init__(raw=kwargs)
42 def mappings(self):
43 return es_data_mapping.create_mapping(self.__seamless_struct__.raw, MAPPING_OPTS)
45 @property
46 def data(self):
47 return self.__seamless__.data
49 @property
50 def id(self):
51 return self.__seamless__.get_single("id")
53 @id.setter
54 def id(self, value):
55 self.__seamless__.set_with_struct("id", value)
57 @property
58 def created_date(self):
59 return self.__seamless__.get_single("created_date")
61 @created_date.setter
62 def created_date(self, value):
63 self.__seamless__.set_with_struct("created_date", value)
65 @property
66 def last_updated(self):
67 return self.__seamless__.get_single("last_updated")
69 @last_updated.setter
70 def last_updated(self, value):
71 self.__seamless__.set_with_struct("last_updated", value)
73 @property
74 def requester(self):
75 return self.__seamless__.get_single("requester")
77 @requester.setter
78 def requester(self, value):
79 self.__seamless__.set_with_struct("requester", value)
81 @property
82 def request_date(self):
83 return self.__seamless__.get_single("request_date")
85 @request_date.setter
86 def request_date(self, value):
87 self.__seamless__.set_with_struct("request_date", value)
89 @property
90 def generated_date(self):
91 return self.__seamless__.get_single("generated_date")
93 @generated_date.setter
94 def generated_date(self, value):
95 self.__seamless__.set_with_struct("generated_date", value)
97 @property
98 def name(self):
99 return self.__seamless__.get_single("name")
101 @name.setter
102 def name(self, value):
103 self.__seamless__.set_with_struct("name", value)
105 @property
106 def filename(self):
107 return self.__seamless__.get_single("filename")
109 @filename.setter
110 def filename(self, value):
111 self.__seamless__.set_with_struct("filename", value)
113 @property
114 def constraints(self):
115 return json.loads(self.__seamless__.get_single("constraints"))
117 @constraints.setter
118 def constraints(self, value):
119 if not isinstance(value, str):
120 value = json.dumps(value)
121 self.__seamless__.set_with_struct("constraints", value)
123 @property
124 def model(self):
125 return self.__seamless__.get_single("model")
127 @model.setter
128 def model(self, value):
129 self.__seamless__.set_with_struct("model", value)