示例#1
0
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")
示例#2
0
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)
示例#3
0
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
示例#4
0
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&quot;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