Source code for devilry.apps.extjshelpers.storeintegration

from modelintegration import get_extjs_modelname, restfulcls_to_extjsmodel

[docs]def get_extjs_storeid(restfulcls, storeidsuffix=''): """ Get the ExtJS store id for the given restful class. Generated from the store id and class name of ``restfulcls._meta.simplified`` :param storeidsuffix: This string added to the end of the id. """ simplified = restfulcls._meta.simplified prefix = get_extjs_modelname(restfulcls) return '{prefix}Store{storeidsuffix}'.format(prefix=prefix, storeidsuffix=storeidsuffix)
[docs]def restfulcls_to_extjsstore(restfulcls, integrateModel=False, modelkwargs={}, storeidsuffix=''): """ Create an extjs store from the given restful class. :param restfulcls: A class defined using the :ref:`RESTful API <restful>`. :param integrateModel: Make the model a part of the store. Uses Uses :func:`~devilry.apps.extjshelpers.modelintegration.restfulcls_to_extjsmodel` with ``modelkwargs`` as arguments. :param modelkwargs: See ``integrateModel``. :param storeidsuffix: Forwarded to func:`get_extjs_storeid` to generate the ``id`` of the store and to func:`devilry.extjshelpers.modelintegration.get_extjs_modelname` (as modelnamesuffix) to generate the model name. """ if integrateModel: modelkwargs['modelnamesuffix'] = storeidsuffix model = restfulcls_to_extjsmodel(restfulcls, **modelkwargs) else: model = "'{modelname}'".format(modelname=get_extjs_modelname(restfulcls, storeidsuffix)) return """Ext.create('Ext.data.Store', {{ model: {model}, id: '{id}', remoteFilter: true, remoteSort: true, autoSync: true }})""".format(model=model, id=get_extjs_storeid(restfulcls, storeidsuffix))