# coding: utf-8 # from java.text import SimpleDateFormat from java.util import ArrayList import json 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 from edu.constants import * from dirusing.commonfunctions import relatedTableCursorImport from edu._edu_orm import course_cycle_qti_packageCursor from qt._qt_orm import QtiPackageCursor def procListAndCount(context, main=None, add=None, filterinfo=None, session=None, params=None, curValue=None, startsWith=None, firstRecord=None, recordCount=None): courseCycleId = json.loads(session)['sessioncontext']['related']['gridContext']['currentRecordId'] cycleQtiCur = course_cycle_qti_packageCursor(context) qtiPackageCur = QtiPackageCursor(context) # фильтрация записей по данным, введенным пользователем в селекторе qtiPackageCur.setFilter('PackageName', "@%s'%s'%%" % ("%"*(not startsWith), curValue)) # сортировка qtiPackageCur.orderBy('PackageName') # subjectType.limit(firstrecord, recordcount) recordList = ArrayList() # ограничение на единовременный вывод данных a = firstRecord b = firstRecord + recordCount count = 0 for qti in qtiPackageCur.iterate(): qtiId = qti.PackageID if not cycleQtiCur.tryGet(courseCycleId, qtiId): if count>=a and count<b: rec = DataRecord() rec.id = str(qtiId) rec.name = qti.PackageName recordList.add(rec) count += 1 qtiPackageCur.close() cycleQtiCur.close() return ResultSelectorData(recordList, count) def eorListAndCount(context, main=None, add=None, filterinfo=None, session=None, params=None, curValue=None, startsWith=None, firstRecord=None, recordCount=None): courseCycleId = main cycleQtiCur = course_cycle_qti_packageCursor(context) type = int(json.loads(XMLJSONConverter.xmlToJson(params))['schema']['filter']['eorType']) eor_type = EOR_TYPE[type] currentTable = relatedTableCursorImport(eor_type[1], eor_type[2])(context) currentTable.setFilter(eor_type[3], "@%s'%s'%%" % ("%"*(not startsWith), curValue)) currentTable.orderBy(eor_type[3]) recordList = ArrayList() # ограничение на единовременный вывод данных a = firstRecord b = firstRecord + recordCount count = 0 for eor in currentTable.iterate(): eor_id = getattr(eor, eor_type[4]) if not cycleQtiCur.tryGet(courseCycleId, eor_id): if count>=a and count<b: rec = DataRecord() rec.id = str(eor_id) rec.name = getattr(eor, eor_type[3]) recordList.add(rec) count += 1 currentTable.close() cycleQtiCur.close() return ResultSelectorData(recordList, count)