def borrar_contenido(carpeta: Carpeta, nombre: str):
    '''
    Elimina el archivo del sistema de archivos
    '''
    ruta = util.ruta_archivo(carpeta.tipo.value, carpeta.nombre, nombre)
    _validar_existencia_ruta(ruta)
    os.remove(ruta)
def obtener_contenido_por_nombre(carpeta: Carpeta, nombre: str) -> bytes:
    '''
    Devuelve el contenido del archivo
    '''
    ruta = util.ruta_archivo(carpeta.tipo.value, carpeta.nombre, nombre)
    _validar_existencia_ruta(ruta)
    return obtener_contenido(ruta)
def html_a_pdf(carpeta: Carpeta, datos: dict, nombre_html: str,
               nombre_pdf: str) -> bytes:
    '''
    Genera un reporte en pdf aplicando los datos al modelo
    Devuelve el contenido del archivo generado
    '''
    html = carpeta.buscar_archivo(nombre_html)
    if html is None:
        mensaje = f'El archivo {nombre_html} no existe'
        raise AppException(Errores.ARCHIVO_NO_EXISTE, mensaje)

    html_renderizado = _renderizar_archivo(html, datos, f'{uuid.uuid4()}.html')

    archivo_service.guardar_archivo(carpeta, html_renderizado)

    directorio_pdf = archivos_util.ruta_tipo_carpeta(TipoCarpeta.PDF.value,
                                                     carpeta.nombre)
    archivos_util.crear_directorio_si_no_existe(directorio_pdf)

    ruta_pdf = os.path.join(directorio_pdf, nombre_pdf)
    ruta_html = archivos_util.ruta_archivo(carpeta.tipo.value, carpeta.nombre,
                                           html_renderizado.nombre)

    pdfkit.from_file(ruta_html, ruta_pdf)

    archivo_service.borrar_contenido(carpeta, html_renderizado.nombre)

    return archivos_util.obtener_archivo(directorio_pdf, nombre_pdf)
Example #4
0
def borrar(carpeta: Carpeta):
    '''
    Borra un Carpeta
    '''
    ruta_completa = archivos_util.ruta_archivo(carpeta.tipo.value,
                                               carpeta.nombre,
                                               _METADATA_NOMBRE)
    os.remove(ruta_completa)
def borrar_contenido_por_tipo(tipo: TipoCarpeta, nombre_carpeta: str,
                              nombre_archivo: str):
    '''
    Elimina el archivo del sistema de archivos
    '''
    ruta = util.ruta_archivo(tipo.value, nombre_carpeta, nombre_archivo)
    _validar_existencia_ruta(ruta)
    os.remove(ruta)
def obtener_contenido_por_tipo_y_nombre(tipo: TipoCarpeta, nombre_carpeta: str,
                                        nombre_archivo: str) -> bytes:
    '''
    Devuelve el contenido del archivo
    '''
    ruta = util.ruta_archivo(tipo.value, nombre_carpeta, nombre_archivo)
    _validar_existencia_ruta(ruta)
    return obtener_contenido(ruta)
def guardar_archivo(carpeta: Carpeta, archivo: Archivo):
    '''
    Crea el archivo en el sistema de archivos, la estructura que maneja
    es:

    {carpeta.nombre}/{carpeta.tipo}/{archivo.nombre}

    IMPORTANTE: el nombre debe incluir la extension del archivo
    '''
    directorio = util.ruta_tipo_carpeta(carpeta.tipo.value, carpeta.nombre)
    if not os.path.exists(directorio):
        os.makedirs(directorio)

    ruta = util.ruta_archivo(carpeta.tipo.value, carpeta.nombre,
                             archivo.nombre)

    with open(ruta, 'wb+') as archivo_python:
        archivo_python.write(archivo.contenido)