# coding: utf-8 ''' Created on 11.11.2014 @author: m.prudyvus ''' import json from workflow.processUtils import ActivitiObject try: from ru.curs.showcase.core.jython import JythonDTO except: from ru.curs.celesta.showcase import JythonDTO try: 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 ResultSelectorData, DataRecord from java.io import InputStream, FileInputStream from jarray import zeros from ru.curs.celesta.showcase.utils import XMLJSONConverter def cardData(context, main=None, add=None, filterinfo=None, session=None, elementId=None): u'''Карточка утверждения задачи''' if add == "added": xformsdata = {"schema": {"@xmlns":'', "data": {"@type":'hide'}}} else: activiti = ActivitiObject() session = json.loads(session)['sessioncontext'] if isinstance(session['urlparams']['urlparam'], list): for params in session['urlparams']['urlparam']: if params['@name'] == 'taskId': taskId = params['@value'][0] xformsdata = {"schema": {"@xmlns":'', "data": {"@type":'add', "@approveValue": "", "@docDescription": activiti.taskService.getVariable(taskId, 'docDescription'), "docRefs": {"ref": []}, "approves": {"approve": [{"@value": "true", "@label": u"Утвердить"}, {"@value": "false", "@label": u"Отклонить"}]}, "@comment": ""}}} docRef = activiti.taskService.getVariable(taskId, 'docRef') docName = activiti.taskService.getVariable(taskId, 'docName') if docRef is not None and docName is not None: docRef = json.loads(activiti.taskService.getVariable(taskId, 'docRef')) if not isinstance(docRef, dict) else docRef docName = json.loads(activiti.taskService.getVariable(taskId, 'docName')) if not isinstance(docName, dict) else docName docIdList = docRef.keys() for docId in docIdList: xformsdata["schema"]["data"]["docRefs"]["ref"].append({"@value": docRef[docId], "@name": docName[docId]}) xformssettings = {"properties": {"event": [{"@name": "single_click", "@linkId": "1", "action": {"#sorted":[{"main_context": "current"}, {"datapanel": {"@type": "current", "@tab": "current", "element": {"@id":'approveTaskCard', "add_context":"added"}}}]}}]}} jsonData = XMLJSONConverter.jsonToXml(json.dumps(xformsdata)) jsonSettings = XMLJSONConverter.jsonToXml(json.dumps(xformssettings)) return JythonDTO(jsonData, jsonSettings) def cardDataSave(context, main=None, add=None, filterinfo=None, session=None, elementId=None, xformsdata=None): u'''Утверждение задачи''' session = json.loads(session)['sessioncontext'] sid = session['sid'] if isinstance(session['urlparams']['urlparam'], list): for params in session['urlparams']['urlparam']: if params['@name'] == 'taskId': taskId = params['@value'][0] elif params['@name'] == 'processId': processId = params['@value'][0] activiti = ActivitiObject() jsonData = json.loads(xformsdata)["schema"]["data"] if ' '.join(jsonData["@comment"].split(' ')) != '': activiti.addCommentWithUserId(context, taskId, processId, jsonData["@comment"], sid) activiti.taskService.setVariableLocal(taskId, 'approved', jsonData["@approveValue"]) activiti.taskService.complete(taskId) return context.message(u'Задача %s' % (u'утверждена' if jsonData["@approveValue"] == 'true' else u'отклонена'))