def __init__(self): self.render_memcache = VolatileCache() self.render_diskcache = DiskCache(os.path.join(settings.MS_SERVER ["render_diskcache"], "pages"), settings.MS_SERVER ["render_diskcache_maxsize"]) self.doc_diskcache = DiskCache(os.path.join(settings.MS_SERVER ["doc_diskcache"], "blobs"), settings.MS_SERVER ["doc_diskcache_maxsize"]) self.vault = getVault()
def encrypt_and_upload_to_storagevault(document_pk=None, **kwargs): logger = encrypt_and_upload_to_storagevault.get_logger(**kwargs) logger.debug("called with pk %s" % document_pk) try: doc = Document.objects.get(pk=document_pk) except Document.DoesNotExist: logger.warning("Warning, Document with pk %s does not exist" % str(document_pk)) return False vault = getVault() encrypted, encrypted_name = tempfile.mkstemp() os.close(encrypted) encrypted = None #logger.debug("original path %s, uuid %s, encrypted name %s" % (str(doc.file.path), str(doc.uuid_document), encrypted_name)) try: try: gpgutils.encrypt_sign(doc.file.path, encrypted_name, settings.STORAGE_ENCRYPT ['gpghome'], settings.STORAGE_ENCRYPT ["owner"]) except IOError as exceptobj: logger.error("Error, can't encrypt document stored at %s with uuid %s as %r. Exception was %r" % (doc.file.path, doc.uuid_document, encrypted_name, exceptobj)) else: try: encrypted = open(encrypted_name, "rb") vault.add(doc.uuid_document, encrypted) except KeyError as exceptobj: logger.error("Error, can't upload uuid %s from %s to storage vault. Exception was %r " % (doc.uuid_document, encrypted_name, exceptobj)) finally: if hasattr(encrypted, "close"): encrypted.close() if os.path.isfile(encrypted_name): os.remove(encrypted_name) # FIXME: prime mediaserver (depends on resolution of #713) if doc.pages and doc.mimetype == 'application/pdf': extract_and_index_pdf_text.apply_async(args=[doc.pk]) return True