# coding: utf-8 ''' Created on 05.05.2014 @author: Victor B. ''' import json from uuid import uuid4 from ru.curs.celesta.showcase.utils import XMLJSONConverter from umk._umk_orm import edu_contentCursor, umk_versionCursor 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'''Данные для карточки.''' sessionjson = json.loads(session)["sessioncontext"] gridContext = sessionjson["related"]["gridContext"] complex_program_id = gridContext['currentRecordId'] # Структура данных xformsdata = {"schema": {"@xmlns":"", "data": { "mode": "empty", "modes": [{'@label': 'Пустой УМК', '@value': 'empty'}, {'@label': 'Копированием версии УМК', '@value': 'copy'} ], "selected_version_id": "", "selected_version_name": "", "complex_program_id": complex_program_id } } } # Первоначальная xformssettings xformssettings = {"properties":{"event":[{"@name":"single_click", "@linkId": "1", "action":{ '#sorted': [ {"main_context": "current"}, {"datapanel": {"@type": "current", "@tab": "current", "element": {"@id":'umkVersionGrid', "add_context": "" } }}]] } }] } } return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)), XMLJSONConverter.jsonToXml(json.dumps(xformssettings))) def cardSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None): u'''Сохранение карточки. ''' xformsdata = json.loads(xformsdata)['schema']['data'] umk_version = umk_versionCursor(context) edu_content = edu_contentCursor(context) umk_version.setRange('complex_program_id', xformsdata['complex_program_id']) umk_version.orderBy('number DESC') if umk_version.tryFirst(): next_num = umk_version.number + 1 else: next_num = 1 # создание версии umk_version.uid = unicode(uuid4()) umk_version.complex_program_id = xformsdata['complex_program_id'] umk_version.number = next_num umk_version.status_id = 0 umk_version.insert() umk_version_id = umk_version.uid # копирование УМК - сделаем потом if xformsdata['mode'] == 'copy': # Словарь связи старых и новых идентификаторов элементов учебного содержания selected_umk_version_id = xformsdata['selected_version_id'] # Копирование элементов учебного содержания и привязанных к ним ЭОРов с параметрами edu_content.setRange('umk_version', selected_umk_version_id) edu_content.orderBy('sortvalue') for edu_content in edu_content.iterate(): edu_content.uid = unicode(uuid4()) edu_content.umk_version = umk_version_id edu_content.insert() def deleteCardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Данные для карточки.''' string_bool = lambda x: x and 'true' or 'false' # Структура данных xforms_data = { 'schema': { '@xmlns': '', 'data': { 'form_text': 'Вы действительно хотите удалить данную версию УМК?' } } } # Первоначальная xforms_settings xforms_settings = { 'properties': { 'event': [ { '@name': 'single_click', '@linkId': '1', 'action': { '@keep_user_settings': string_bool(True), '#sorted': [ {'main_context': 'current',} {'datapanel': { '@type': 'current', '@tab': 'current', 'element': { '@id': 'umkVersionGrid', 'add_context': '' } }} ] } } ] } } return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xforms_data)), XMLJSONConverter.jsonToXml(json.dumps(xforms_settings))) def deleteCardSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None): u'''Сохранение карточки. ''' edu_content = edu_contentCursor(context) umk_version = umk_versionCursor(context) current_id = json.loads(session)['sessioncontext']['related']['gridContext']['currentRecordId'] # удаляем все эл-ты УС edu_content.setRange('umk_version', current_id) edu_content.deleteAll() # удаляем версию УМК umk_version.get(current_id) umk_version.delete()