def store_copy_in_remote_yearfolder(self, refusing_client_id): transporter = getUtility(ITransporter) jsondata = json.dumps(transporter._extract_data(self.context)) request_data = { REQUEST_KEY: jsondata, } response = remote_json_request(refusing_client_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_client_id, remote_task) # transport documents for document in get_documents_of_task(self.context): transporter.transport_to(document, refusing_client_id, remote_task) return self.get_remote_task_url(refusing_client_id, remote_task)
def _extract_data(self, task): data = remote_json_request(task.client_id, '@@transporter-extract-object-json', task.physical_path) data = encode_after_json(data) data = data.get(u'field-data').get('ITask') return data
def store_copy_in_remote_yearfolder(self, refusing_client_id): transporter = getUtility(ITransporter) jsondata = json.dumps(transporter._extract_data(self.context)) request_data = {REQUEST_KEY: jsondata, } response = remote_json_request( refusing_client_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_client_id, remote_task) # transport documents for document in get_documents_of_task(self.context): transporter.transport_to( document, refusing_client_id, remote_task) return self.get_remote_task_url(refusing_client_id, remote_task)
def _extract_data(self, task): data = remote_json_request( task.client_id, '@@transporter-extract-object-json', task.physical_path) data = encode_after_json(data) data = data.get(u'field-data').get('ITask') return data
def transport_to(self, obj, target_cid, container_path): """ Copies a *object* to another client (*target_cid*). """ jsondata = json.dumps(self._extract_data(obj)) request_data = { REQUEST_KEY: jsondata, } return remote_json_request( target_cid, '@@transporter-receive-object', path=container_path, data=request_data)
def get_documents_of_dossier(self, target_client_id, dossier_path): """ Returns a list of dicts representing documents located in a specific dossier on a remote client Keys of the dict: * path * url * title * review_state """ return remote_json_request(target_client_id, '@@tentacle-documents-of-dossier-json', data=dict(dossier=dossier_path))
def transport_from(self, container, source_cid, path): """ Copies the object under *path* from client with *source_cid* into the local folder *container* *path* is the relative path of the object to its plone site root. """ data = remote_json_request(source_cid, '@@transporter-extract-object-json', path=path) data = encode_after_json(data) obj = self._create_object(container, data) return obj
def transport_to(self, obj, target_cid, container_path): """ Copies a *object* to another client (*target_cid*). """ jsondata = json.dumps(self._extract_data(obj)) request_data = { REQUEST_KEY: jsondata, } return remote_json_request(target_cid, '@@transporter-receive-object', path=container_path, data=request_data)
def get_open_dossiers(self, target_client_id): """ Returns a list of open dossiers hosted on a remote client [ { 'url' : 'http://nohost/other-client/op1/op2/dossier1', 'path' : 'op1/op2/dossier1', 'title' : 'Dossier 1', 'workflow_state' : DOSSIER_STATES_OPEN, 'reference_number' : 'OG 1.2 / 1', } ] """ return remote_json_request(target_client_id, '@@list-open-dossiers-json')
def copy_documents_from_remote_task(self, task, target, documents=None): transporter = getUtility(ITransporter) data = remote_json_request(task.client_id, '@@task-documents-extract', path=task.physical_path, data={'documents': json.dumps(documents)}) intids_mapping = {} intids = getUtility(IIntIds) for item in data: item = encode_after_json(item) obj = transporter._create_object(target, item) oldintid = IAnnotations(obj)[ORIGINAL_INTID_ANNOTATION_KEY] newintid = intids.getId(obj) intids_mapping[oldintid] = newintid # fire the added Event to automaticly create a inital version notify(ObjectAddedEvent(obj)) return intids_mapping
def copy_documents_from_remote_task(self, task, target, documents=None): transporter = getUtility(ITransporter) data = remote_json_request( task.client_id, '@@task-documents-extract', path=task.physical_path, data={'documents': json.dumps(documents)}) intids_mapping = {} intids = getUtility(IIntIds) for item in data: item = encode_after_json(item) obj = transporter._create_object(target, item) oldintid = IAnnotations(obj)[ORIGINAL_INTID_ANNOTATION_KEY] newintid = intids.getId(obj) intids_mapping[oldintid] = newintid # fire the added Event to automaticly create a inital version notify(ObjectAddedEvent(obj)) return intids_mapping
def _extract_reponses(self, task): responses = remote_json_request(task.client_id, '@@task-responses-extract', path=task.physical_path) return responses