summaryrefslogtreecommitdiff
path: root/wsmeext/sqlalchemy/controllers.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsmeext/sqlalchemy/controllers.py')
-rw-r--r--wsmeext/sqlalchemy/controllers.py97
1 files changed, 0 insertions, 97 deletions
diff --git a/wsmeext/sqlalchemy/controllers.py b/wsmeext/sqlalchemy/controllers.py
deleted file mode 100644
index 504a46a..0000000
--- a/wsmeext/sqlalchemy/controllers.py
+++ /dev/null
@@ -1,97 +0,0 @@
-from wsme.rest import expose, validate
-import wsme.types
-
-from wsmeext.sqlalchemy.types import SQLAlchemyRegistry
-
-
-class CRUDControllerMeta(type):
- def __init__(cls, name, bases, dct):
- if cls.__saclass__ is not None:
- if cls.__registry__ is None:
- cls.__registry__ = wsme.types.registry
- if cls.__wstype__ is None:
- cls.__wstype__ = cls.__registry__.resolve_type(
- SQLAlchemyRegistry.get(
- cls.__registry__).getdatatype(cls.__saclass__))
-
- cls.create = expose(
- cls.__wstype__,
- method='PUT',
- wrap=True
- )(cls.create)
- cls.create = validate(cls.__wstype__)(cls.create)
-
- cls.read = expose(
- cls.__wstype__,
- method='GET',
- wrap=True
- )(cls.read)
- cls.read = validate(cls.__wstype__)(cls.read)
-
- cls.update = expose(
- cls.__wstype__,
- method='POST',
- wrap=True
- )(cls.update)
- cls.update = validate(cls.__wstype__)(cls.update)
-
- cls.delete = expose(
- method='DELETE',
- wrap=True
- )(cls.delete)
- cls.delete = validate(cls.__wstype__)(cls.delete)
-
- super(CRUDControllerMeta, cls).__init__(name, bases, dct)
-
-
-class CRUDControllerBase(object):
- __registry__ = None
- __saclass__ = None
- __wstype__ = None
- __dbsession__ = None
-
- def _create_one(self, data):
- obj = self.__saclass__()
- data.to_instance(obj)
- self.__dbsession__.add(obj)
- return obj
-
- def _get_one(self, ref):
- q = self.__dbsession__.query(self.__saclass__)
- q = q.filter(ref.get_ref_criterion())
- return q.one()
-
- def _update_one(self, data):
- obj = self._get_one(data)
- if obj is None:
- raise ValueError("No match for data=%s" % data)
- data.to_instance(obj)
- return obj
-
- def _delete(self, ref):
- obj = self._get_one(ref)
- self.__dbsession__.delete(obj)
-
- def create(self, data):
- obj = self._create_one(data)
- self.__dbsession__.flush()
- return self.__wstype__(obj)
-
- def read(self, ref):
- obj = self._get_one(ref)
- return self.__wstype__(obj)
-
- def update(self, data):
- obj = self._update_one(data)
- self.__dbsession__.flush()
- return self.__wstype__(obj)
-
- def delete(self, ref):
- self._delete(ref)
- self.__dbsession__.flush()
- return None
-
-
-CRUDController = CRUDControllerMeta(
- 'CRUDController', (CRUDControllerBase,), {}
-)