# coding: utf-8 import json from common.sysfunctions import toHexForXml from ru.curs.celesta.showcase.utils import XMLJSONConverter from workflow.processUtils import ActivitiObject from workflow._workflow_orm import formCursor from common.sysfunctions import getGridWidth, getGridHeight try: from ru.curs.showcase.core.jython import JythonDTO, JythonDownloadResult except: from ru.curs.celesta.showcase import JythonDTO, JythonDownloadResult def getData(context, main=None, add=None, filterinfo=None, session=None, elementId=None, sortColumnList=None, firstrecord=None, pagesize=None): u'''Функция получения списка всех форм процесса. ''' session = json.loads(session) processKey = session['sessioncontext']['related']['gridContext']['currentRecordId'] form = formCursor(context) data = {"records":{"rec":[]}} _header = {"id":["~~id"], "pid":[u"Код процесса"], "name":[u"Название формы"], "description":[u"Описание"], "version":[u"Версия"], "isStartForm":[u'Форма инициализации'], "file":[u"Файл"], "schema":[u"Схема"], "startProcess":[u"Старт процесса"], "properties":[u"properties"], "link":[u"Ссылка"]} for column in _header: _header[column].append(toHexForXml(_header[column][0])) form.setRange('processKey',processKey) # Проходим по таблице и заполняем data for form in form.iterate(): procDict = {} procDict[_header["id"][1]] = form.id procDict[_header["name"][1]] = form.id procDict[_header["link"][1]] = form.link if form.isStartForm: procDict[_header["isStartForm"][1]] = u'Форма инициализации' else: procDict[_header["isStartForm"][1]] = u'Обычная форма' procDict[_header["properties"][1]] = {} data["records"]["rec"].append(procDict) res = XMLJSONConverter.jsonToXml(json.dumps(data)) return JythonDTO(res, None) def getMeta(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Функция получения списка всех форм процесса. ''' session = json.loads(session) # gridWidth = getGridWidth(session,60) gridHeigth = getGridHeight(session,2,55,80) processKey = session['sessioncontext']['related']['gridContext']['currentRecordId'] form = formCursor(context) form.setRange('processKey',processKey) rowsCount = form.count() _header = {"id":["~~id"], "pid":[u"Код процесса"], "name":[u"Название формы"], "description":[u"Описание"], "version":[u"Версия"], "isStartForm":[u'Форма инициализации'], "file":[u"Файл"], "schema":[u"Схема"], "startProcess":[u"Старт процесса"], "properties":[u"properties"], "link":[u"Ссылка"]} for column in _header: _header[column].append(toHexForXml(_header[column][0])) # Определяем список полей таблицы для отображения settings = {} settings["gridsettings"] = {"columns": {"col":[]}, "properties": {"@pagesize":"50", "@gridWidth": "100%", "@gridHeight": gridHeigth, "@totalCount": rowsCount, "@profile":"default.properties"}, "labels":{"header":"Формы процесса"} } # Добавляем поля для отображения в gridsettings #settings["gridsettings"]["columns"]["col"].append({"@id":_header["pid"][0], "@width": "150px"}) settings["gridsettings"]["columns"]["col"].append({"@id":_header["name"][0], "@width": "300px"}) settings["gridsettings"]["columns"]["col"].append({"@id":_header["link"][0], "@width": "300px"}) settings["gridsettings"]["columns"]["col"].append({"@id":_header["isStartForm"][0], "@width": "100px"}) res = XMLJSONConverter.jsonToXml(json.dumps(settings)) return JythonDTO(None, res) def gridDataAndMeta(context, main=None, add=None, filterinfo=None, session=None, elementId=None, sortColumnList=[]): u'''Функция получения списка всех форм процесса. ''' session = json.loads(session) gridWidth = getGridWidth(session,60) gridHeigth = getGridHeight(session,2,55,80) processKey = session['sessioncontext']['related']['gridContext']['currentRecordId'] form = formCursor(context) data = {"records":{"rec":[]}} _header = {"id":["~~id"], "pid":[u"Код процесса"], "name":[u"Название формы"], "description":[u"Описание"], "version":[u"Версия"], "isStartForm":[u'Форма инициализации'], "file":[u"Файл"], "schema":[u"Схема"], "startProcess":[u"Старт процесса"], "properties":[u"properties"], "link":[u"Ссылка"]} for column in _header: _header[column].append(toHexForXml(_header[column][0])) form.setRange('processKey',processKey) # Проходим по таблице и заполняем data for form in form.iterate(): procDict = {} procDict[_header["id"][1]] = form.id procDict[_header["name"][1]] = form.id procDict[_header["link"][1]] = form.link if form.isStartForm: procDict[_header["isStartForm"][1]] = u'Форма инициализации' else: procDict[_header["isStartForm"][1]] = u'Обычная форма' procDict[_header["properties"][1]] = {} data["records"]["rec"].append(procDict) # Определяем список полей таблицы для отображения settings = {} settings["gridsettings"] = {"columns": {"col":[]}, "properties": {"@pagesize":"50", "@gridWidth": gridWidth, "@gridHeight": gridHeigth, "@totalCount": form.count(), "@profile":"default.properties"}, "labels":{"header":"Формы процесса"} } # Добавляем поля для отображения в gridsettings #settings["gridsettings"]["columns"]["col"].append({"@id":_header["pid"][0], "@width": "150px"}) settings["gridsettings"]["columns"]["col"].append({"@id":_header["name"][0], "@width": "300px"}) settings["gridsettings"]["columns"]["col"].append({"@id":_header["link"][0], "@width": "300px"}) settings["gridsettings"]["columns"]["col"].append({"@id":_header["isStartForm"][0], "@width": "100px"}) res1 = XMLJSONConverter.jsonToXml(json.dumps(data)) res2 = XMLJSONConverter.jsonToXml(json.dumps(settings)) return JythonDTO(res1, res2) def gridToolBar(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Toolbar для грида. ''' session = json.loads(session) for gridContext in session["sessioncontext"]["related"]["gridContext"]: if gridContext["@id"] == "processesGrid": processKey = gridContext["currentRecordId"] if gridContext["@id"] == "processFormsGrid": if 'currentRecordId' in gridContext: style = "false" else: style = "true" data = {"gridtoolbar":{"item":[]}} data["gridtoolbar"]["item"].append({ "@text":"Добавить форму", "@hint":"Добавление формы процесса", "@disable": "false", "action":{"@show_in": "MODAL_WINDOW", "#sorted":[{"main_context":"current"}, {"modalwindow":{"@caption": "Добавление формы", "@height": "300", "@width": "500" } }, {"datapanel":{"@type": "current", "@tab": "current", "element": {"@id": "processFormCard", "add_context":"add"} } } ] } }) data["gridtoolbar"]["item"].append({"@text":"Редактировать форму", "@hint":"Редактирование формы процесс", "@disable": style, "action":{"@show_in": "MODAL_WINDOW", "#sorted":[{"main_context":"current"}, {"modalwindow":{"@caption": "Редактирование формы", "@height": "300", "@width": "500"} }, {"datapanel":{"@type": "current", "@tab": "current", "element": {"@id": "processFormCard", "add_context":"edit"} } }] } }) data["gridtoolbar"]["item"].append({"@text":"Удалить форму", "@hint":"Удаление формы процесса", "@disable": style, "action":{"@show_in": "MODAL_WINDOW", "#sorted":[{"main_context":"current"}, {"modalwindow":{"@caption": "Удаление формы", "@height": "300", "@width": "500"} }, {"datapanel":{"@type": "current", "@tab": "current", "element": {"@id": "processFormDeleteCard", "add_context":"del"} } }] } }) return XMLJSONConverter.jsonToXml(json.dumps(data))