Exemple #1
0
    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
Exemple #3
0
    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 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 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
 def _extract_reponses(self, task):
     responses = remote_json_request(task.client_id,
         '@@task-responses-extract',
         path=task.physical_path)
     return responses