# coding: utf-8 ''' Created on 05.05.2014 @author: Victor B. ''' import datetime import json import uuid from flute._flute_orm import tasksCursor from nci._nci_orm import person_edu_organizationCursor, edu_organizationCursor from nci.functions.persons import getPersonIdBySid from ru.curs.celesta.showcase.utils import XMLJSONConverter from security.functions import userHasPermission 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 from ru.curs.celesta.showcase import UserMessage from ru.curs.celesta.showcase import MessageType except: from ru.curs.celesta.showcase import JythonDTO def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Данные для карточки.''' session = json.loads(session)['sessioncontext'] sid = session['sid'] person_id = getPersonIdBySid(context, sid) # Структура данных xformsdata = {"schema": {"@xmlns":"", "data": { "edu_org_id":'', "edu_org_name":'', "edu_organization":[], "date_to":'', "date_from":'', "method": "false", "report":'' } } } if userHasPermission(context, sid, 'allEduOrgCourse'): xformsdata['schema']['data']['method'] = 'true' else: person_org = person_edu_organizationCursor(context) edu_organization = edu_organizationCursor(context) person_org.setRange("person_id", person_id) person_org.setRange('role', 'staff') for person_org in person_org.iterate(): edu_organization.get(person_org.edu_organization_id) xformsdata['schema']['data']['edu_organization'].append({ '@label': edu_organization.shortname if edu_organization.shortname else edu_organization.name, '@value': person_org.edu_organization_id}) xformsdata['schema']['data']['edu_organization_id'] = \ xformsdata['schema']['data']['edu_organization'][0]['@value'] # виды отчетов xformsdata['schema']['data']['reports'] = [] xformsdata['schema']['data']['reports'].append({'@label': u'Отчёт по реализации возможности обучения по специальностям с использованием образовательного сертификата', '@value': 'specialityReport'} ) xformsdata['schema']['data']['reports'].append({'@label': u'Сводный отчёт по реализации возможности обучения по специальностям с использованием образовательного сертификата', '@value': 'consolidateSpecialityReport'} ) xformsdata['schema']['data']['reports'].append({'@label': u'Отчёт по формированию организациями, осуществляющими образовательную деятельность, реестра образовательных программ подготовки медицинских работников с применением', '@value': 'programReport'} ) xformsdata['schema']['data']['reports'].append({'@label': u'Сводный отчёт по формированию организациями, осуществляющими образовательную деятельность, реестра образовательных программ подготовки медицинских работников с применением', '@value': 'consolidatedProgramReport'} ) xformsdata['schema']['data']['reports'].append({'@label': u'Справка по обучению специалистов по образовательным сертификатам организацией, осуществляющей образовательную деятельность', '@value': 'studentReport'} ) # если кафедра, то заполняем cath_id и cath_name # Первоначальная xformssettings xformssettings = {"properties":{"event":[{"@name":"single_click", "@linkId": "1", "action":{ '#sorted': [ {"main_context": "current"}, {"datapanel": {"@type": "current", "@tab": "current", "element": {"@id":'reportsGrid', "add_context": "" } }}] } }, {"@name":"single_click", "@linkId": "2", "action":{ '#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 cardSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None): u'''Сохранение карточки. ''' sid = json.loads(session)['sessioncontext']['sid'] personid = getPersonIdBySid(context, sid) data_dict = json.loads(xformsdata) if data_dict['schema']['data']['edu_org_id']: edu_org_id = data_dict['schema']['data']['edu_org_id'] else: edu_org_id = None method = True if data_dict['schema']['data']['method'] == 'true' else False arg_dict = {} arg_dict['request_id'] = uuid.uuid4() if data_dict['schema']['data']['report'] == 'specialityReport': arg_dict['script'] = 'edu.reports.specialityReport.printToFlute' arg_dict['params'] = {u'edu_org_id': edu_org_id, u'method': method} elif data_dict['schema']['data']['report'] == 'consolidateSpecialityReport': arg_dict['script'] = 'edu.reports.specialityReport.printConsolidateToFlute' arg_dict['params'] = {u'edu_org_id': edu_org_id, u'method': method} elif data_dict['schema']['data']['report'] == 'programReport': arg_dict['script'] = 'edu.reports.programReport.printToFlute' arg_dict['params'] = {u'edu_org_id': edu_org_id, u'method': method} elif data_dict['schema']['data']['report'] == 'consolidatedProgramReport': arg_dict['script'] = 'edu.reports.programReport.printConsolidateToFlute' arg_dict['params'] = {u'edu_org_id': edu_org_id, u'method': method} elif data_dict['schema']['data']['report'] == 'studentReport': arg_dict['script'] = 'edu.reports.studentReport.printToFlute' arg_dict['params'] = {u'edu_org_id': edu_org_id, u'method': method, 'date_from': data_dict['schema']['data']['date_from'], 'date_to':data_dict['schema']['data']['date_to']} # добавляем в таблицу флейты xlreports = tasksCursor(context) xlreports.script = arg_dict['script'] if 'params' in arg_dict: xlreports.parameters = json.dumps(arg_dict['params']) xlreports.request_id = arg_dict['request_id'] xlreports.user = personid xlreports.status = 0 xlreports.datecreated = datetime.datetime.now() xlreports.insert()