# coding: utf-8 from java.util import ArrayList import json from fias._fias_orm import addrobjCursor try: from ru.curs.showcase.util import XMLJSONConverter except: from ru.curs.celesta.showcase.utils import XMLJSONConverter try: from ru.curs.showcase.core.selector import ResultSelectorData from ru.beta2.extra.gwt.ui.selector.api import DataRecord except: from ru.curs.celesta.showcase import DataRecord, ResultSelectorData def aoByLevelCount(context, main, add, filterinfo, session, params, curvalue, startswith): u'''в params приходит уровень (aolevel) и parentId''' params = json.loads(XMLJSONConverter.xmlToJson(params))["schema"]["filter"] paramsLevel = params[0]["level"]["#text"] if "parentId" in params[1]: parentId = params[1]["parentId"]["#text"] else: parentId = "" addrobj = addrobjCursor(context) addrobj.setRange("aolevel", int(paramsLevel)) addrobj.setRange("actstatus", 1) addrobj.setRange("parentguid", parentId) if curvalue: addrobj.setFilter("formalname_lowercase", "'%s'%%" % curvalue.lower()) count = addrobj.count() return ResultSelectorData(None, count) def aoByLevelList(context, main=None, add=None, filterinfo=None, session=None, params=None, curvalue=None, startswith=None, firstrecord=None, recordcount=None): addrobj = addrobjCursor(context) params = json.loads(XMLJSONConverter.xmlToJson(params))["schema"]["filter"] paramsLevel = params[0]["level"]["#text"] if "parentId" in params[1]: parentId = params[1]["parentId"]["#text"] else: parentId = "" addrobj.setRange("aolevel", int(paramsLevel)) addrobj.setRange("actstatus", 1) addrobj.setRange("parentguid", parentId) if curvalue: addrobj.setFilter("formalname_lowercase", "'%s'%%" % curvalue.lower()) if not addrobj.count() and not curvalue: context.error(u"Данные на выбранном уровне не найдены") addrobj.orderBy("formalname_lowercase") addrobj.limit(firstrecord, recordcount) recordList = ArrayList() for addrobj in addrobj.iterate(): rec = DataRecord() rec.id = addrobj.aoguid # записываем в id ссылку на АО rec.name = "%s %s " % (addrobj.formalname, addrobj.shortname) rec.addParameter("aoid", addrobj.aoid) # записываем в aoid ссылку на первичный ключ rec.addParameter("postcode", addrobj.postalcode) rec.addParameter("regioncode", addrobj.regioncode) recordList.add(rec) return ResultSelectorData(recordList, 0)