# coding: UTF-8 from datetime import datetime from java.util import ArrayList import json from fias._fias_orm import houseCursor 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 houseCount(context, main, add, filterinfo, session, params, curvalue, startswith): ''' в params приходит гуид того АО, который самый низший по уровню был выбран ранее (aoguid) ''' params = json.loads(XMLJSONConverter.xmlToJson(params)) if 'parentId' in params["schema"]["filter"][0]: parentId = params["schema"]["filter"][0]["parentId"]["#text"] else: parentId = '' house = houseCursor(context) house.setComplexFilter(u'''aoguid = '%s' and enddate > '%s' ''' % (unicode(parentId), datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) house.setFilter('housenum', "@'%s'%%" % curvalue) count = house.count() return ResultSelectorData(None, count) def houseList(context, main=None, add=None, filterinfo=None, session=None, params=None, curvalue=None, startswith=None, firstrecord=None, recordcount=None): params = json.loads(XMLJSONConverter.xmlToJson(params)) if 'parentId' in params["schema"]["filter"][0]: parentId = params["schema"]["filter"][0]["parentId"]["#text"] else: parentId = '' if not parentId: context.error(u"Выберите родительский элемент") house = houseCursor(context) # есть записи с истекшей датой => enddate>now house.setComplexFilter(u'''aoguid = '%s' and enddate > '%s' ''' % (unicode(parentId), datetime.now().strftime("%Y-%m-%d %H:%M:%S"))) house.setFilter('housenum', "@'%s'%%" % curvalue) house.orderBy('housenum') house.limit(firstrecord, recordcount) recordList = ArrayList() houseDict = {1: u'влд ', # владение 2: u'д ', # дом 3: u'двлд ', # домовладение 4: u'уч ', # участок } for house in house.iterate(): rec = DataRecord() rec.id = unicode(house.houseid) housenum = house.housenum # номер дома(домовладения, участка) houseType = houseDict.get(house.eststatus, None) nameList = [houseType, housenum] if house.buildnum: # номер корпуса nameList.extend([u"корп.", unicode(house.buildnum)]) if house.strucnum: # номер строения nameList.extend([u"стр.", unicode(house.strucnum)]) rec.name = " ".join(nameList) rec.addParameter("postcode", house.postalcode) # почтовый индекс recordList.add(rec) if not house.count(): context.error(u"Данные о домах не найдены") return ResultSelectorData(recordList, 0)