summaryrefslogtreecommitdiff
path: root/wsmeext/extdirect/datastore.py
diff options
context:
space:
mode:
Diffstat (limited to 'wsmeext/extdirect/datastore.py')
-rw-r--r--wsmeext/extdirect/datastore.py121
1 files changed, 0 insertions, 121 deletions
diff --git a/wsmeext/extdirect/datastore.py b/wsmeext/extdirect/datastore.py
deleted file mode 100644
index 287e3a7..0000000
--- a/wsmeext/extdirect/datastore.py
+++ /dev/null
@@ -1,121 +0,0 @@
-import wsme
-import wsme.types
-
-try:
- import simplejson as json
-except ImportError:
- import json
-
-
-class ReadResultBase(wsme.types.Base):
- total = int
- success = bool
- message = wsme.types.text
-
-
-def make_readresult(datatype):
- ReadResult = type(
- datatype.__name__ + 'ReadResult',
- (ReadResultBase,), {
- 'data': [datatype]
- }
- )
- return ReadResult
-
-
-class DataStoreControllerMeta(type):
- def __init__(cls, name, bases, dct):
- if cls.__datatype__ is None:
- return
- if getattr(cls, '__readresulttype__', None) is None:
- cls.__readresulttype__ = make_readresult(cls.__datatype__)
-
- cls.create = wsme.expose(
- cls.__readresulttype__,
- extdirect_params_notation='positional')(cls.create)
- cls.create = wsme.validate(cls.__datatype__)(cls.create)
-
- cls.read = wsme.expose(
- cls.__readresulttype__,
- extdirect_params_notation='named')(cls.read)
- cls.read = wsme.validate(str, str, int, int, int)(cls.read)
-
- cls.update = wsme.expose(
- cls.__readresulttype__,
- extdirect_params_notation='positional')(cls.update)
- cls.update = wsme.validate(cls.__datatype__)(cls.update)
-
- cls.destroy = wsme.expose(
- cls.__readresulttype__,
- extdirect_params_notation='positional')(cls.destroy)
- cls.destroy = wsme.validate(cls.__idtype__)(cls.destroy)
-
-
-class DataStoreControllerMixin(object):
- __datatype__ = None
- __idtype__ = int
-
- __readresulttype__ = None
-
- def create(self, obj):
- pass
-
- def read(self, query=None, sort=None, page=None, start=None, limit=None):
- pass
-
- def update(self, obj):
- pass
-
- def destroy(self, obj_id):
- pass
-
- def model(self):
- tpl = """
-Ext.define('%(appns)s.model.%(classname)s', {
- extend: 'Ext.data.Model',
- fields: %(fields)s,
-
- proxy: {
- type: 'direct',
- api: {
- create: %(appns)s.%(controllerns)s.create,
- read: %(appns)s.%(controllerns)s.read,
- update: %(appns)s.%(controllerns)s.update,
- destroy: %(appns)s.%(controllerns)s.destroy
- },
- reader: {
- root: 'data'
- }
- }
-});
- """
- fields = [
- attr.name for attr in self.__datatype__._wsme_attributes
- ]
- d = {
- 'appns': 'Demo',
- 'controllerns': 'stores.' + self.__datatype__.__name__.lower(),
- 'classname': self.__datatype__.__name__,
- 'fields': json.dumps(fields)
- }
- return tpl % d
-
- def store(self):
- tpl = """
-Ext.define('%(appns)s.store.%(classname)s', {
- extend: 'Ext.data.Store',
- model: '%(appns)s.model.%(classname)s'
-});
-"""
- d = {
- 'appns': 'Demo',
- 'classname': self.__datatype__.__name__,
- }
-
- return tpl % d
-
-
-DataStoreController = DataStoreControllerMeta(
- 'DataStoreController',
- (DataStoreControllerMixin,), {}
-)