# coding: utf-8 import json from nci._nci_orm import vw_status_model_statusCursor from edu._edu_orm import course_cycleCursor from security.functions import userHasPermission from ru.curs.celesta.showcase.utils import XMLJSONConverter from datetime import datetime 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 cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Данные для карточки.''' record_id = json.loads(session)['sessioncontext']['related']['gridContext']['currentRecordId'] course_cycle = course_cycleCursor(context) course_cycle.get(record_id) # Структура данных xformsdata = {"schema": {"@xmlns":"", "data": { "record_id": record_id, "oldstatus": course_cycle.status_id, "newstatus": course_cycle.status_id, "comment": "" } } } # действия в зависимости от статуса vw_status_model_status = vw_status_model_statusCursor(context) vw_status_model_status.setRange('model_id', 5) print vw_status_model_status.count(), '////////////' vw_status_model_status.setRange('status_id1', course_cycle.status_id) print course_cycle.status_id, '|||||||||||||' xformsdata['schema']['data']['actions'] = [] xformsdata['schema']['data']['actions'].append({'@label': u'Оставить в текущем статусе', '@value': int(course_cycle.status_id)}) print vw_status_model_status.count(), '++++++++++' for vw_status_model_status in vw_status_model_status.iterate(): # if vw_status_model_s # if not userHasPermission(context,sid) xformsdata['schema']['data']['actions'].append({'@label': vw_status_model_status.transition_text, '@value': int(vw_status_model_status.status_id2)}) # Первоначальная xformssettings xformssettings = {"properties":{"event":[{"@name":"single_click", "@linkId": "1", "action":{"@keep_user_settings": "true", '#sorted': [ {"main_context": "current"}, {"datapanel": {"@type": "current", "@tab": "current", "element": {"@id":'courseCycleGrid', "add_context": "" } }}] } }, {"@name":"single_click", "@linkId": "2", "action":{"@keep_user_settings": "true", '#sorted': [ {"main_context": "current"}, {"datapanel": {"@type": "current", "@tab": "current" , "element": {"@id":elementId, "add_context": "hide" } }}] } }] } } return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)), XMLJSONConverter.jsonToXml(json.dumps(xformssettings))) def cardDataSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None): u'''Сохранение карточки. ''' data_dict = json.loads(xformsdata) course_cycle = course_cycleCursor(context) course_cycle.get(data_dict['schema']['data']['record_id']) # статус должен измениться if data_dict['schema']['data']['newstatus'] != data_dict['schema']['data']['oldstatus']: course_cycle.status_id = int(data_dict['schema']['data']['newstatus']) course_cycle.update()