def obtener_todos_los_archivos(nombre_carpeta): contenidos_tambien = request.args.get('base64') == 'true' carpeta = carpeta_service.obtener_por_nombre(nombre_carpeta, contenidos_tambien) archivos_dict = [archivo.to_dict() for archivo in carpeta.archivos] return jsonify(archivos_dict)
def _obtener_carpeta_y_archivo(nombre_carpeta: str, nombre_archivo: str) -> Tuple[Carpeta, Archivo]: ''' Obtiene la carpeta y el archivo correspondiente ''' carpeta = carpeta_service.obtener_por_nombre(nombre_carpeta, False) archivo = carpeta.buscar_archivo(nombre_archivo) if not archivo: mensaje = f'La carpeta {nombre_carpeta} no posee el archivo {nombre_archivo}' raise AppException('ARCHIVO_NO_ENCONTRADO', mensaje) return carpeta, archivo
def nuevo_contenido_archivo(nombre_carpeta, nombre_archivo): carpeta = carpeta_service.obtener_por_nombre(nombre_carpeta, False) archivo = carpeta.buscar_archivo(nombre_archivo) if archivo != None: mensaje = f'El archivo con nombre {nombre_archivo}, ya existe' raise AppException(Errores.ARCHIVO_YA_EXISTENTE, mensaje) archivo_nuevo = Archivo(nombre_archivo, request.get_data()) carpeta.agregar_archivo(archivo_nuevo) carpeta_service.actualizar(carpeta) return '', HTTPStatus.CREATED
def borrar_contenido(carpeta_nombre: str, tipo_carpeta_nombre: str, archivo_nombre: str): try: tipo_carpeta = TipoCarpeta.desde_str(tipo_carpeta_nombre) except Exception: mensaje = f'No se reconoce el tipo de carpeta {tipo_carpeta_nombre}' raise AppException(Errores.TIPO_CARPETA_NO_VALIDO, mensaje) if tipo_carpeta == TipoCarpeta.MODELO: mensaje = f'No esta permitido el borrado manual de los archivos del tipo MODELO' raise AppException(Errores.BORRADO_DE_MODELO_NO_PERMITIDO, mensaje) carpeta_existe = carpeta_service.obtener_por_nombre(carpeta_nombre, False) if not carpeta_existe: mensaje = f'La carpeta {carpeta_nombre} NO existe' raise AppException(Errores.CARPETA_NO_EXISTE, mensaje) archivo_service.borrar_contenido_por_tipo(tipo_carpeta, carpeta_nombre, archivo_nombre) return ''
def obtener_archivo(carpeta_nombre: str, tipo_carpeta_nombre: str, archivo_nombre: str): try: tipo_carpeta = TipoCarpeta.desde_str(tipo_carpeta_nombre) except Exception: mensaje = f'No se reconoce el tipo de carpeta {tipo_carpeta_nombre}' raise AppException(Errores.TIPO_CARPETA_NO_VALIDO, mensaje) carpeta_existe = carpeta_service.obtener_por_nombre(carpeta_nombre, False) if not carpeta_existe: mensaje = f'La carpeta {carpeta_nombre} NO existe' raise AppException(Errores.CARPETA_NO_EXISTE, mensaje) contenido = archivo_service.obtener_contenido_por_tipo_y_nombre( tipo_carpeta, carpeta_nombre, archivo_nombre) return send_file(BytesIO(contenido), mimetype='application/octet-stream', as_attachment=True, attachment_filename=archivo_nombre)
def md_a_md(nombre_carpeta, nombre_entrada, nombre_salida): json_body = request.json nombre_entrada = nombre_con_extension(nombre_entrada, 'md') nombre_salida = nombre_con_extension(nombre_salida, 'md') carpeta = carpeta_service.obtener_por_nombre(nombre_carpeta, True) contenido_resultado = conversor_service.texto_a_texto(carpeta, json_body, nombre_entrada, nombre_salida) guardar_resultado = request.args.get('guardar') == 'true' if not guardar_resultado: archivo_service.borrar_contenido_por_tipo(TipoCarpeta.MD, nombre_carpeta, nombre_salida) return send_file(BytesIO(contenido_resultado), mimetype='application/octet-stream', as_attachment=True, attachment_filename=nombre_salida)
def html_a_pdf(nombre_carpeta, nombre_html, nombre_pdf): json_body = request.json nombre_html = nombre_con_extension(nombre_html, 'html') nombre_pdf = nombre_con_extension(nombre_pdf, 'pdf') modelo = carpeta_service.obtener_por_nombre(nombre_carpeta, True) contenido_pdf = conversor_service.html_a_pdf(modelo, json_body, nombre_html, nombre_pdf) guardar_pdf = request.args.get('guardar') == 'true' if not guardar_pdf: archivo_service.borrar_contenido_por_tipo(TipoCarpeta.PDF, nombre_carpeta, nombre_pdf) return send_file(BytesIO(contenido_pdf), mimetype='application/octet-stream', as_attachment=True, attachment_filename=nombre_pdf)
def obtener(nombre): contenidos_tambien = request.args.get('base64') == 'true' carpeta = carpeta_service.obtener_por_nombre(nombre, contenidos_tambien) return jsonify(carpeta.to_dict())