# coding: utf-8 from java.util import ArrayList import json from edu._edu_orm import vw_module_courseCursor from nci._nci_orm import vw_regionCursor, edu_organizationCursor, \ org_addressCursor from ru.curs.celesta.showcase.utils import XMLJSONConverter try: from ru.curs.showcase.core.jython import JythonDTO 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 JythonDTO def regionList(context, main=None, add=None, filterinfo=None, session=None, params=None, curValue=None, startsWith=None, firstRecord=None, recordCount=None): '''Список регионов''' region = vw_regionCursor(context) vw_module_course = vw_module_courseCursor(context) edu_organization = edu_organizationCursor(context) org_address = org_addressCursor(context) if params: filter_data = json.loads(XMLJSONConverter.xmlToJson(params))["schema"]["filter"] if not isinstance(filter_data, list): filter_data = [filter_data] for filter_item in filter_data: if filter_item.get("module_id"): vw_module_course.setRange("module_id", filter_item["module_id"]) region.setRange("region_id", '-1') if vw_module_course.count(): edu_org_list = ["'%s'" % vw_module_course.course_edu_org_id for vw_module_course in vw_module_course.iterate()] edu_organization.setFilter("uid", "|".join(edu_org_list)) if edu_organization.count(): address_list = ["'%s'" % edu_organization.address_id for edu_organization in edu_organization.iterate()] org_address.setFilter("address_id", "|".join(address_list)) if org_address.count(): region_list = ["'%s'" % org_address.region_id for org_address in org_address.iterate()] region.setFilter("region_id", "|".join(region_list)) if not region.count(): context.error(u"Нет доступных регионов") region.orderBy('region_name') region.setFilter('region_name', "@%s'%s'%%" % ("%"*(not startsWith), curValue)) region.limit(firstRecord, recordCount) recordList = ArrayList() for region in region.iterate(): rec = DataRecord() rec.id = str(region.region_id) rec.name = region.region_name recordList.add(rec) return ResultSelectorData(recordList, 0) def regionCount(context, main=None, add=None, filterinfo=None, session=None, params=None, curValue=None, startsWith=None): '''Счетчик регионов''' region = vw_regionCursor(context) vw_module_course = vw_module_courseCursor(context) edu_organization = edu_organizationCursor(context) org_address = org_addressCursor(context) if params: filter_data = json.loads(XMLJSONConverter.xmlToJson(params))["schema"]["filter"] if not isinstance(filter_data, list): filter_data = [filter_data] for filter_item in filter_data: if filter_item.get("module_id"): vw_module_course.setRange("module_id", filter_item["module_id"]) region.setRange("region_id", '-1') if vw_module_course.count(): edu_org_list = ["'%s'" % vw_module_course.course_edu_org_id for vw_module_course in vw_module_course.iterate()] edu_organization.setFilter("uid", "|".join(edu_org_list)) if edu_organization.count(): address_list = ["'%s'" % edu_organization.address_id for edu_organization in edu_organization.iterate()] org_address.setFilter("address_id", "|".join(address_list)) if org_address.count(): region_list = ["'%s'" % org_address.region_id for org_address in org_address.iterate()] region.setFilter("region_id", "|".join(region_list)) region.setFilter('region_name', "@%s'%s'%%" % ("%"*(not startsWith), curValue)) return ResultSelectorData(None, region.count())