aboutsummaryrefslogtreecommitdiff
path: root/src/ee/ds/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/ee/ds/__init__.py')
-rw-r--r--src/ee/ds/__init__.py36
1 files changed, 33 insertions, 3 deletions
diff --git a/src/ee/ds/__init__.py b/src/ee/ds/__init__.py
index e48cab6..adf741f 100644
--- a/src/ee/ds/__init__.py
+++ b/src/ee/ds/__init__.py
@@ -80,8 +80,38 @@ class Object(object):
for k in other._ot.fields:
self.set(k, other.get(k))
- def has(self, *keys: str):
- return self.object_type.has(*keys)
+ def has_values(self, *keys: str) -> bool:
+ return all([len(value) > 0 for value in [self.get(key) for key in keys] if value is not None])
+
+ def values(self, *keys: str, strip: bool = False, required: bool = True) -> List[Optional[str]]:
+ """Looks up all values for all keys.
+
+ If required=True, strip is also set to True
+
+
+ If strip is True, all values are stripped with str.strip(). None values are preserved.
+
+ If required=True, all values has to have a len() > 0. If any fails the requirement, a list with only None values
+ is returned.
+ """
+
+ values = []
+
+ strip = True if required else strip
+
+ for key in keys:
+ v = self.get(key)
+
+ if strip:
+ v = v.strip() if v else v
+
+ if required:
+ if v is None or len(v) == 0:
+ return [None] * len(keys)
+
+ values.append(v)
+
+ return values
def get(self, key: str) -> Optional[str]:
idx = self._ot.index_of(key)
@@ -437,6 +467,6 @@ class LazyRwDataSet(object):
def create_message(data_set: DataSet, message: str, level: str):
- return data_set.create_object("message", "message-{}".format(str(hash(message)))). \
+ return data_set.create_object("message", "message-{}".format(str(abs(hash(message))))). \
set("message", message). \
set("level", level)