def treeItemsList(context, main=None, add=None, filterinfo=None, session=None, params=None, curvalue=None, startswith=None, parent_id=None): """Функция для получения списка элементов в пределе одного фильтра типа tree itemset""" all_fields, current = (x['filter'] for x in json.loads(XMLJSONConverter.xmlToJson(params))['schema']['filter']) add = repair_add(add) field_name = current["@id"] for necessary_field in context.getData()[add]: if field_name == necessary_field['@id']: current_field = necessary_field break selector_path = current_field['@selector_data'] # if bound_status != 'bound': if selector_path: selector_path = selector_path.split('.') selector_module, selector_function_name = '.'.join(selector_path[:-1]), selector_path[-1] selector_module = import_module(selector_module) selector = getattr(selector_module, selector_function_name) return selector(context, main, add, filterinfo, session, params, curvalue, startswith, parent_id) else: raise NotImplementedError( u"Автоматическая процедура для получения списка элементов не предусмотрена для treeselector")
def itemsListAndCount(context, main=None, add=None, filterinfo=None, session=None, params=None, curvalue=None, startswith=None, firstrecord=None, recordcount=None): """Функция для получения списка элементов в пределе одного фильтра типа itemset""" all_fields, current = (x['filter'] for x in json.loads(XMLJSONConverter.xmlToJson(params))['schema']['filter']) add = repair_add(add) grain, table = context.getData()[add][0]["@tableName"].split('.') field_name = current["@id"] for necessary_field in context.getData()[add]: if field_name == necessary_field['@id']: current_field = necessary_field break selector_path = current_field['@selector_data'] # if bound_status != 'bound': if selector_path: selector_path = selector_path.split('.') selector_module, selector_function_name = '.'.join(selector_path[:-1]), selector_path[-1] selector_module = import_module(selector_module) selector = getattr(selector_module, selector_function_name) return selector(context, main, add, filterinfo, session, params, curvalue, startswith, firstrecord, recordcount) cursor_instance = tableCursorImport(grain, table) cursor = cursor_instance(context) # Булевый флаг для определения, является ли поле числовым is_quotes = current_field['@type'] != 'float' curvalue = curvalue.strip() cursor.orderBy(field_name) recordList = ArrayList() # набираем список значений i = 0 # if curvalue: # cursor.setRange(field_name, curvalue) while cursor.tryFirst() and i < (firstrecord + recordcount): current_name = getattr(cursor, field_name) if is_quotes: current_name = current_name.replace("'", "''") if (i >= firstrecord and not curvalue) or (i > firstrecord and curvalue): rec = DataRecord() rec.setId("rec%i" % i) rec.setName( unicode(current_name.replace('""', '"').replace("''", "'")) if is_quotes else unicode(current_name)) recordList.add(rec) # Определение формы выведения в setFilter для разных типов значений current_filter = ">%s" % ("'%s'" % current_name if is_quotes else int(current_name)) if curvalue: current_filter = """%s&@%s'%s'%%""" % (current_filter, "%" * (not startswith), curvalue.replace("'", "''")) # filtered_function(all_fields, add, cursor) cursor.setFilter(field_name, current_filter) i += 1 return ResultSelectorData(recordList, i)
import json from ru.curs.celesta.showcase.utils import XMLJSONConverter from inspect import isfunction from importlib import import_module try: from ru.curs.showcase.core.jython import JythonDTO #@UnresolvedImport except ImportError: from ru.curs.celesta.showcase import JythonDTO serializeJSON = lambda jsonDict: json.dumps(jsonDict) deserializeJSON = lambda jsonString: json.loads(jsonString) json2xml = lambda jsonString: XMLJSONConverter.jsonToXml(jsonString) xml2json = lambda xmlString: XMLJSONConverter.xmlToJson(xmlString) objectQualifiedName = lambda obj: '%s.%s' % (obj.__module__, obj.__class__. __name__) classQualifiedName = lambda cls: '%s.%s' % (cls.__module__, cls.__name__) def importObject(mod, obj): obj_ = getattr(import_module(mod), obj) return obj_ def getCursor(tableName): """Возвращает класс курсора по полному имени таблицы. @param tableName (@c string) имя таблицы в формате \<гранула>.\<таблица> @return @c Cursor
def pluginDataAndSettings(context, main, add, filterinfo, session, elementId): print 'Get plugin data and setting from Celesta Python procedure.' print 'User %s' % context.userId print 'main "%s".' % main print 'add "%s".' % add print 'filterinfo "%s".' % filterinfo print 'session "%s".' % session print 'elementId "%s".' % elementId data = u''' <items> <item id="1" name="La"zy load item" leaf="false" checked="false"/> <item id="2" name="Расходование денежных средств" column1="Значение2" column2="solutions/default/resources/imagesingrid/test.jpg" cls="folder"> <children> <item id="21" name="Оплата поставщикам за товар" leaf="true" column1="Значение21" column2="solutions/default/resources/imagesingrid/TreeGridLeaf.png" attr1="a" checked="false"/> <item id="22" name="Расходы по таможенному оформлению" leaf="true" column1="Значение22" column2="solutions/default/resources/imagesingrid/test.jpg" attr1="b" checked="false"/> <item id="23" name="Расходы на аренду, коммунальные услуги" column1="Значение3" column2="solutions/default/resources/imagesingrid/TreeGridLeaf.png" cls="folder"> <children> <item id="231" name="Аренда недвижимости" leaf="true" attr1="c" checked="false"/> <item id="232" name="Коммунальные услуги" leaf="true" attr1="d" checked="false"/> <item id="233" name="Расходы на содержание сооружений и оборудования" leaf="true" attr1="e" checked="false"/> </children> </item> <item id="24" name="Расходы на персонал" cls="folder"> <children> <item id="241" name="Расходы на оплату труда" leaf="true" attr1="f" checked="false"/> <item id="242" name="Страхование персонала, мед.услуги" leaf="true" attr1="g" checked="false"/> <item id="243" name="Матпомощь, подарки" leaf="true" attr1="m" checked="false"/> </children> </item> <item id="25" name="Услуги связи" leaf="true" attr1="k" checked="false"/> <item id="26" name="Маркетинг и реклама" leaf="true" attr1="l" checked="false"/> <item id="27" name="Обеспечение безопасности" leaf="true" attr1="n" checked="false"/> </children> </item> <item id="3" name="Поступление денежных средств" cls="folder"> <children> <item id="31" name="Доход от продажи товара" leaf="true" attr1="o" checked="false"/> <item id="32" name="Расходы по таможенному оформлению" leaf="true" attr1="p" checked="false"/> <item id="33" name="Возврат денежных средств от контрагентов" leaf="true" attr1="r" checked="false"/> <item id="34" name="Проценты по депозитам" leaf="true" attr1="s" checked="false"/> </children> </item> </items>''' settings = u''' <properties> </properties> ''' # context.warning('dd2'); # context.message('dd1', u'Заголовок4', u"solutions/default/resources/group_icon_default.png"); # context.error('dd4', u'Заголовок4', u"solutions/default/resources/group_icon_default.png"); #res = JythonDTO(data, settings, UserMessageFactory().build(555, u"Плагин (DataAndSettings) успешно построен из Celesta")) json = XMLJSONConverter.xmlToJson(data) print 'json "%s".' % json xml = XMLJSONConverter.jsonToXml(json) print 'xml "%s".' % xml json = XMLJSONConverter.xmlToJson(xml) print 'json2 "%s".' % json res = JythonDTO(data, settings) return res