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) )
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)