From dbc442153f3ca7e8d5eac92d4d6ba4c8b80cce3c Mon Sep 17 00:00:00 2001 From: bigfang Date: Fri, 26 Oct 2018 15:59:12 +0800 Subject: [PATCH 1/2] added EnumExt implementation --- docs/changelog.rst | 4 ++++ hobbit_core/flask_hobbit/db.py | 33 +++++++++++++++++++++++++++++---- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/docs/changelog.rst b/docs/changelog.rst index 6e70b1a..5324b29 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -1,6 +1,10 @@ Change history ============== +1.2.5a1 (2018-10-25) + +* Added EnumExt implementation + 1.2.5a0 (2018-10-22) * Enhance utils.use_kwargs. diff --git a/hobbit_core/flask_hobbit/db.py b/hobbit_core/flask_hobbit/db.py index fa0d2b3..3063f7f 100644 --- a/hobbit_core/flask_hobbit/db.py +++ b/hobbit_core/flask_hobbit/db.py @@ -61,8 +61,33 @@ def reference_col(tablename, nullable=False, pk_name='id', **kwargs): class EnumExt(enum.Enum): + """ serialize/deserialize sqlalchemy enum field """ - TODO: - * extension. - """ - pass + @classmethod + def strict_dump(cls, key, verbose=False): + pos = 1 if verbose else 0 + return cls[key].value[pos] + + @classmethod + def dump(cls, key, verbose=False): + ret = {'key': cls[key].value[0], 'value': cls[key].value[1]} + if verbose: + ret.update({'label': key}) + return ret + + @classmethod + def load(cls, val): + pos = 1 if isinstance(val, str) else 0 + for elem in cls: + if elem.value[pos] == val: + return elem.name + + @classmethod + def to_opts(cls, verbose=False): + opts = [] + for elem in cls: + opt = {'key': elem.value[0], 'value': elem.value[1]} + if verbose: + opt.update({'label': elem.name}) + opts.append(opt) + return opts From 7ae2a29477ac50b9b97f3a466879a43276d41c22 Mon Sep 17 00:00:00 2001 From: bigfang Date: Fri, 26 Oct 2018 16:03:28 +0800 Subject: [PATCH 2/2] update version --- hobbit_core/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hobbit_core/__init__.py b/hobbit_core/__init__.py index 638530f..ad51bc8 100644 --- a/hobbit_core/__init__.py +++ b/hobbit_core/__init__.py @@ -1 +1 @@ -VERSION = [1, 2, 5, 'a0'] +VERSION = [1, 2, 5, 'a1']