# coding: utf-8 ''' Created on 05.05.2014 @author: Victor B. ''' import json import base64 from flute._flute_orm import tasksCursor try: from ru.curs.showcase.core.jython import JythonDTO from ru.curs.showcase.core.jython import JythonDownloadResult, JythonErrorResult from ru.curs.showcase.app.api import UserMessage, MessageType except: from ru.curs.celesta.showcase import JythonDTO import uuid import os from ru.curs.celesta.showcase.utils import XMLJSONConverter def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Карточка скачивания отчета.''' script_name_xls = {'journals.reports.nonBudgetEnroll.printToFlute': u'Отчет по внебюджетным слушателям (по зачислению)', 'journals.reports.rnimuEmployeesEnroll.printToFlute': u'Отчет о сотрудниках РНИМУ, начавших обучение в период'} # Структура данных xformsdata = {"schema": {"@xmlns":"", "data": { "doc_id": add, "flute_status_id": "", "flute_status_name": "" } } } # проверяем статус задания во флейте xlreports = tasksCursor(context) xlreports.setRange('request_id', xformsdata['schema']['data']['doc_id']) # задание есть if xlreports.tryFirst(): xformsdata['schema']['data']['flute_status_id'] = xlreports.status if xlreports.script in script_name_xls: xformsdata['schema']['data']['doc_name'] = script_name_xls[xlreports.script] xformsdata['schema']['data']['doc_extension'] = '.xls' else: xformsdata['schema']['data']['doc_name'] = u'Отчет' xformsdata['schema']['data']['doc_extension'] = '.xls' if xlreports.status == 0: xformsdata['schema']['data']['flute_status_name'] = u'Идет подготовка печатной формы.' elif xlreports.status == 1: xformsdata['schema']['data']['flute_status_name'] = u'Идет подготовка печатной формы.' elif xlreports.status == 2: xformsdata['schema']['data']['flute_status_name'] = u'Печатная форма готова.' elif xlreports.status == 3: xformsdata['schema']['data']['flute_status_name'] = u'При подготовке печатной формы возникли ошибки.' # Первоначальная 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":'reportsGrid', "add_context": "" } }}] } }] } } return JythonDTO(XMLJSONConverter.jsonToXml(json.dumps(xformsdata)), XMLJSONConverter.jsonToXml(json.dumps(xformssettings))) def downloadDocument(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None, columnId=None): u'''Функция для скачивания файла из карточки. ''' data_dict = json.loads(xformsdata) # Создаем курсор на таблицу отчетов xlreports = tasksCursor(context) xlreports.setRange('request_id', data_dict['schema']['data']['doc_id']) # документ готов xlreports.first() xlreports.calcresult() # Создаем поток data = xlreports.result.getInStream() # Если в потоке что-то есть, тогда вызываем скачивание файла if data: return JythonDownloadResult(data, u'%s%s' % (data_dict['schema']['data']['doc_name'], data_dict['schema']['data']['doc_extension']))