def store_copy_in_remote_yearfolder(self, refusing_unit_id): transporter = Transporter() jsondata = json.dumps(transporter.extract(self.context)) request_data = {REQUEST_KEY: jsondata, } response = dispatch_json_request( refusing_unit_id, '@@store_refused_forwarding', data=request_data) if response.get('status') not in [ STATUS_SUCCESSFULL, STATUS_ALLREADY_DONE]: raise Exception( 'Storing the forwarding on remote yearfolder failed') remote_task = response.get('remote_task') if response.get('status') != STATUS_ALLREADY_DONE: # transport responses response_transporter = IResponseTransporter(self.context) response_transporter.send_responses( refusing_unit_id, remote_task) # transport documents for document in get_documents_of_task(self.context): transporter.transport_to( document, refusing_unit_id, remote_task) return self.get_remote_task_url(refusing_unit_id, remote_task)
def store_copy_in_remote_yearfolder(self, refusing_unit_id): transporter = Transporter() jsondata = json.dumps(transporter.extract(self.context)) request_data = { REQUEST_KEY: jsondata, } response = dispatch_json_request(refusing_unit_id, '@@store_refused_forwarding', data=request_data) if response.get('status') not in [ STATUS_SUCCESSFULL, STATUS_ALLREADY_DONE ]: raise Exception( 'Storing the forwarding on remote yearfolder failed') remote_task = response.get('remote_task') if response.get('status') != STATUS_ALLREADY_DONE: # transport responses response_transporter = IResponseTransporter(self.context) response_transporter.send_responses(refusing_unit_id, remote_task) # transport documents for document in get_documents_of_task(self.context): transporter.transport_to(document, refusing_unit_id, remote_task) return self.get_remote_task_url(refusing_unit_id, remote_task)
def __call__(self): transporter = Transporter() data = [] for doc in self.get_documents(): data.append(transporter.extract(doc)) # Set correct content type for JSON response self.request.response.setHeader("Content-type", "application/json") return json.dumps(data)
def deliver_documents_and_complete_task(self, formdata, response): """Delivers the selected documents to the predecesser task and complete the task: - Copy the documents to the predecessor task (no new responses) - Execute workflow transition (no new response) - Add a new response indicating the workflow transition, the added documents and containing the entered response text. """ # add documents to the response response.added_object = PersistentList() predecessor = Task.query.by_oguid(self.context.predecessor) transporter = Transporter() intids = getUtility(IIntIds) data = {'documents': [], 'text': formdata['text'], 'transition': formdata['transition']} related_ids = [] if getattr(self.context, 'relatedItems'): related_ids = [item.to_id for item in self.context.relatedItems] for doc_intid in formdata['documents']: doc = intids.getObject(int(doc_intid)) data['documents'].append(transporter.extract(doc)) # add a releation when a document from the dossier was selected if int(doc_intid) not in related_ids: # check if its a relation if aq_parent(aq_inner(doc)) != self.context: # add relation to doc on task if self.context.relatedItems: self.context.relatedItems.append( RelationValue(int(doc_intid))) else: self.context.relatedItems = [ RelationValue(int(doc_intid))] # add response change entry for this relation if not response.relatedItems: response.relatedItems = [RelationValue(int(doc_intid))] else: response.relatedItems.append( RelationValue(int(doc_intid))) # set relation flag doc._v__is_relation = True response.add_change('relatedItems', _(u'label_related_items', default=u"Related Items"), '', linked(doc, doc.Title())) else: # add entry to the response for this document response.added_object.append(RelationValue(int(doc_intid))) else: # append only the relation on the response doc._v__is_relation = True response.add_change('relatedItems', _(u'label_related_items', default=u"Related Items"), '', linked(doc, doc.Title())) request_data = {'data': json.dumps(data)} response = dispatch_request( predecessor.admin_unit_id, '@@complete_successor_task-receive_delivery', predecessor.physical_path, data=request_data) if response.read().strip() != 'OK': raise Exception('Delivering documents and updating task failed ' 'on remote client %s.' % predecessor.admin_unit_id)
def deliver_documents_and_complete_task(self, formdata, response): """Delivers the selected documents to the predecesser task and complete the task: - Copy the documents to the predecessor task (no new responses) - Execute workflow transition (no new response) - Add a new response indicating the workflow transition, the added documents and containing the entered response text. """ predecessor = Task.query.by_oguid(self.context.predecessor) transporter = Transporter() intids = getUtility(IIntIds) data = { 'documents': [], 'text': formdata['text'], 'transition': formdata['transition'] } related_ids = [] if getattr(self.context, 'relatedItems'): related_ids = [item.to_id for item in self.context.relatedItems] for doc_intid in formdata['documents']: doc = intids.getObject(int(doc_intid)) data['documents'].append(transporter.extract(doc)) # add a releation when a document from the dossier was selected if int(doc_intid) not in related_ids: # check if its a relation if aq_parent(aq_inner(doc)) != self.context: # add relation to doc on task if self.context.relatedItems: self.context.relatedItems.append( RelationValue(int(doc_intid))) else: self.context.relatedItems = [ RelationValue(int(doc_intid)) ] # add response change entry for this relation response.add_related_item(RelationValue(int(doc_intid))) # set relation flag doc._v__is_relation = True response.add_change( 'relatedItems', '', linked(doc, doc.Title()), _(u'label_related_items', default=u"Related Items")) else: # add entry to the response for this document response.added_objects.append(RelationValue( int(doc_intid))) else: # append only the relation on the response doc._v__is_relation = True response.add_change( 'relatedItems', '', linked(doc, doc.Title()), _(u'label_related_items', default=u"Related Items")) request_data = {'data': json.dumps(data)} response = dispatch_request( predecessor.admin_unit_id, '@@complete_successor_task-receive_delivery', predecessor.physical_path, data=request_data) response_body = response.read() if response_body.strip() != 'OK': raise Exception('Delivering documents and updating task failed ' 'on remote client %s.' % predecessor.admin_unit_id)