예제 #1
0
    def api_store_thumbnail(self, logger=None):
        """
            Store thumbnails using remote API
        """
        _uuid = self.document_revision.uuid
        file_content = None
        thumbnail_path = None
        e = None
        try:
            # file_content = document_api_client.proxy.retrive_thumbnails(
            #     _uuid,
            #     self.number
            # )

            thumbnail_path = document_api_client.proxy.get_thumbnail_path(
                _uuid,
                self.number
            )

        except CommunicationError, e:
            document_api_client.connect()
            if logger:
                logger.error(e)
예제 #2
0
    def api_process_document(self, logger=None):
        status = {}
        e = None
        try:
            if logger:
                logger.info("Start processing DocumentRevision: %s" % repr({
                    "uuid": self.uuid,
                    "pk": self.pk,
                    "size": self.get_size(),
                    "name": unicode(self.file_data)
                }))

            status = document_api_client.proxy.upload_document(
                open(self.file_data.path, "r").read(),
                self.uuid
            )

            if logger:
                logger.info("Upload DocumentRevision to Mayan done: %s" % repr(status))

            pages_count = status.get("pages", 0)
            self._pages_count = pages_count

            pi = 0
            for i in xrange(1, pages_count + 1):
                self.pages.create(number=i)
                pi += 1

            ti = 0
            for page in self.pages.iterator():
                page.api_store_thumbnail(logger)
                ti += 1

            if logger:
                logger.info("Processing DocumentRevision: %s" % repr({
                    "created_pages": pi,
                    "thumbnails_retrived": ti
                }))

        except CommunicationError, e:
            connection_success = document_api_client.connect()
            if logger:
                logger.error(u"api_process_document: CommunicationError: %s" % (unicode(e)))

            if connection_success:
                raise e  # it will retry task
            else:
                logger.error(u"Pyro connection fail")