Exemplo n.º 1
0
 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()
Exemplo n.º 2
0
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