aboutsummaryrefslogtreecommitdiff
path: root/src/web/models/right_mixin.py
diff options
context:
space:
mode:
authorCédric Bonhomme <cedric@cedricbonhomme.org>2016-04-07 00:00:37 +0200
committerCédric Bonhomme <cedric@cedricbonhomme.org>2016-04-07 00:00:37 +0200
commit181ee8dced7cccc687136c6f35faf2bff1d22d23 (patch)
tree7a2aea7553433957be0455694a7b39e91668dd42 /src/web/models/right_mixin.py
parentcommit the session after deleting old articles. (diff)
parentFixed merge conflicts. (diff)
downloadnewspipe-181ee8dced7cccc687136c6f35faf2bff1d22d23.tar.gz
newspipe-181ee8dced7cccc687136c6f35faf2bff1d22d23.tar.bz2
newspipe-181ee8dced7cccc687136c6f35faf2bff1d22d23.zip
Fixed merge conflicts.
Diffstat (limited to 'src/web/models/right_mixin.py')
-rw-r--r--src/web/models/right_mixin.py54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/web/models/right_mixin.py b/src/web/models/right_mixin.py
new file mode 100644
index 00000000..c4d92008
--- /dev/null
+++ b/src/web/models/right_mixin.py
@@ -0,0 +1,54 @@
+class RightMixin:
+
+ @staticmethod
+ def _fields_base_write():
+ return {}
+
+ @staticmethod
+ def _fields_base_read():
+ return {'id'}
+
+ @staticmethod
+ def _fields_api_write():
+ return {}
+
+ @staticmethod
+ def _fields_api_read():
+ return {'id'}
+
+ @classmethod
+ def fields_base_write(cls):
+ return cls._fields_base_write()
+
+ @classmethod
+ def fields_base_read(cls):
+ return cls._fields_base_write().union(cls._fields_base_read())
+
+ @classmethod
+ def fields_api_write(cls):
+ return cls.fields_base_write().union(cls._fields_api_write())
+
+ @classmethod
+ def fields_api_read(cls):
+ return cls.fields_base_read().union(cls._fields_api_read())
+
+ def __getitem__(self, key):
+ if not hasattr(self, '__dump__'):
+ self.__dump__ = {}
+ return self.__dump__.get(key)
+
+ def __setitem__(self, key, value):
+ if not hasattr(self, '__dump__'):
+ self.__dump__ = {}
+ self.__dump__[key] = value
+
+ def dump(self, role='admin'):
+ if role == 'admin':
+ dico = {k: getattr(self, k) for k in self.__table__.columns.keys()}
+ elif role == 'api':
+ dico = {k: getattr(self, k) for k in self.fields_api_read()}
+ else:
+ dico = {k: getattr(self, k) for k in self.fields_base_read()}
+ if hasattr(self, '__dump__'):
+ dico.update(self.__dump__)
+ return dico
bgstack15