def status(request): # Programas externos avconvver = utils.avconv_version() meltver = utils.melt_version() mediainfover = utils.mediainfo_version() mp4boxver = utils.mp4box_version() exes = { "AVCONV": { "path": config.get_option("AVCONV_PATH"), "status": True if avconvver else False, "version": avconvver, }, "MELT": {"path": config.get_option("MELT_PATH"), "status": True if meltver else False, "version": meltver}, "crontab": { "path": config.get_option("CRONTAB_PATH"), "status": utils.is_exec(config.get_option("CRONTAB_PATH")), "version": "N/A", }, "mediainfo": { "path": config.get_option("MEDIAINFO_PATH"), "status": True if mediainfover else False, "version": mediainfover, }, "MP4Box": { "path": config.get_option("MP4BOX_PATH"), "status": True if mp4boxver else False, "version": mp4boxver, }, } # Directorios dirs = dict() for i in [("library", "VIDEO_LIBRARY_PATH"), ("input", "VIDEO_INPUT_PATH"), ("previews", "PREVIEWS_PATH")]: data = {"path": config.get_option(i[1])} if utils.check_dir(data["path"]): df = utils.df(data["path"]) data["info"] = {"total": df[0], "used": df[1], "left": df[2], "perc": df[3], "mount": df[4]} dirs[i[0]] = data # Tareas Programadas if request.method == "POST": if "status_process" in request.POST: if request.POST["status_process"] == "1": crontab.stop("procesar_video") messages.warning(request, "Tareas programadas de codificación desactivadas") else: crontab.start("procesar_video") messages.success(request, "Tareas programadas de codificacion activadas") if "status_publish" in request.POST: if request.POST["status_publish"] == "1": crontab.stop("publicar_video") messages.warning(request, "Tareas programadas de publicación desactivadas") else: crontab.start("publicar_video") messages.success(request, "Tareas programadas de publicación activadas") cron = {"process": crontab.status("procesar_video"), "publish": crontab.status("publicar_video")} return render_to_response( "section-status.html", {"exes": exes, "dirs": dirs, "cron": cron}, context_instance=RequestContext(request) )
def alerts(request): lista = list() # Añade los vídeos incompletos. for i in Video.objects.filter(status="INC"): lista.append({"tipo": "video-incompleto", "v": i, "fecha": i.informeproduccion.fecha_produccion}) # Añade las tareas fallidas. for i in Cola.objects.filter(status="ERR"): lista.append({"tipo": "trabajo-fail", "t": i, "fecha": i.comienzo}) # Añade los tokens caducados. for i in token.get_expired_tokens(): lista.append({"tipo": "token-caducado", "t": i, "fecha": token.get_expire_time(i)}) # Comprueba los ejecutables. if not utils.avconv_version(): lista.append({"tipo": "ejecutable", "exe": "avconv", "fecha": datetime.datetime.min}) if not utils.melt_version(): lista.append({"tipo": "ejecutable", "exe": "melt", "fecha": datetime.datetime.min}) if not utils.mediainfo_version(): lista.append({"tipo": "ejecutable", "exe": "mediainfo", "fecha": datetime.datetime.min}) if not utils.mp4box_version(): lista.append({"tipo": "ejecutable", "exe": "MP4Box", "fecha": datetime.datetime.min}) if not utils.is_exec(config.get_option("CRONTAB_PATH")): lista.append({"tipo": "ejecutable", "exe": "crontab", "fecha": datetime.datetime.min}) # Comprueba las rutas a los directorios. for i in [config.get_option(x) for x in ["VIDEO_LIBRARY_PATH", "VIDEO_INPUT_PATH", "PREVIEWS_PATH"]]: if not utils.check_dir(i): lista.append({"tipo": "ruta", "path": i, "fecha": datetime.datetime.min}) else: cap = utils.df(i)[3] if int(cap.rstrip("%")) > 90: lista.append({"tipo": "disco", "path": i, "cap": cap, "fecha": datetime.datetime.min}) # Comprueba las tareas programadas if not crontab.status("procesar_video"): lista.append({"tipo": "cron_proc", "fecha": datetime.datetime.min}) if not crontab.status("publicar_video"): lista.append({"tipo": "cron_pub", "fecha": datetime.datetime.min}) # Ordena los elementos cronológicamente lista = sorted(lista, key=lambda it: it["fecha"]) if request.is_ajax(): return render_to_response( "ajax/content-alertas.html", {"lista": lista[:5]}, context_instance=RequestContext(request) ) else: return render_to_response("section-alertas.html", {"lista": lista}, context_instance=RequestContext(request))
def status(request): # Programas externos ffmpegver = utils.ffmpeg_version() meltver = utils.melt_version() mediainfover = utils.mediainfo_version() exes = { 'FFMPEG' : { 'path' : config.get_option('FFMPEG_PATH'), 'status' : True if ffmpegver else False, 'version' : ffmpegver, }, 'MELT' : { 'path' : config.get_option('MELT_PATH'), 'status' : True if meltver else False, 'version' : meltver, }, 'crontab' : { 'path' : config.get_option('CRONTAB_PATH'), 'status' : utils.is_exec(config.get_option('CRONTAB_PATH')), 'version' : 'N/A', }, 'mediainfo' : { 'path' : config.get_option('MEDIAINFO_PATH'), 'status' : True if mediainfover else False, 'version' : mediainfover, }, } # Directorios dirs = dict() for i in [('library', 'VIDEO_LIBRARY_PATH'), ('input', 'VIDEO_INPUT_PATH'), ('previews', 'PREVIEWS_PATH')]: data = { 'path' : config.get_option(i[1]) } if utils.check_dir(data['path']): df = utils.df(data['path']) data['info'] = { 'total' : df[0], 'used' : df[1], 'left' : df[2], 'perc' : df[3], 'mount' : df[4] } dirs[i[0]] = data # Tareas Programadas if request.method == 'POST': if request.POST['status'] == '1': crontab.stop() messages.warning(request, 'Tareas programadas desactivadas') else: crontab.start() messages.success(request, 'Tareas programadas activadas') cron = crontab.status() return render_to_response("postproduccion/section-status.html", { 'exes' : exes, 'dirs' : dirs, 'cron' : cron }, context_instance=RequestContext(request))
def alerts(request): lista = list() # Añade los vídeos incompletos. for i in Video.objects.filter(status='INC'): lista.append({ 'tipo' : 'video-incompleto', 'v' : i, 'fecha' : i.informeproduccion.fecha_produccion }) # Añade las tareas fallidas. for i in Cola.objects.filter(status='ERR'): lista.append({ 'tipo' : 'trabajo-fail', 't' : i, 'fecha' : i.comienzo }) # Añade los tokens caducados. for i in token.get_expired_tokens(): lista.append({ 'tipo' : 'token-caducado', 't' : i, 'fecha' : token.get_expire_time(i) }) # Comprueba los ejecutables. if not utils.avconv_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'avconv', 'fecha' : datetime.datetime.min }) if not utils.melt_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'melt', 'fecha' : datetime.datetime.min }) if not utils.mediainfo_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'mediainfo', 'fecha' : datetime.datetime.min }) if not utils.mp4box_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'MP4Box', 'fecha' : datetime.datetime.min }) if not utils.is_exec(config.get_option('CRONTAB_PATH')): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'crontab', 'fecha' : datetime.datetime.min }) # Comprueba las rutas a los directorios. for i in [config.get_option(x) for x in ['VIDEO_LIBRARY_PATH', 'VIDEO_INPUT_PATH', 'PREVIEWS_PATH']]: if not utils.check_dir(i): lista.append({ 'tipo' : 'ruta', 'path' : i, 'fecha' : datetime.datetime.min }) else: cap = utils.df(i)[3] if int(cap.rstrip('%')) > 90: lista.append({ 'tipo' : 'disco', 'path' : i, 'cap' : cap, 'fecha' : datetime.datetime.min }) # Comprueba las tareas programadas if not crontab.status('procesar_video'): lista.append({ 'tipo' : 'cron_proc', 'fecha' : datetime.datetime.min }) if not crontab.status('publicar_video'): lista.append({ 'tipo' : 'cron_pub', 'fecha' : datetime.datetime.min }) # Ordena los elementos cronológicamente lista = sorted(lista, key=lambda it: it['fecha']) if request.is_ajax(): return render_to_response("ajax/content-alertas.html", { 'lista' : lista[:5] }, context_instance=RequestContext(request)) else: return render_to_response("section-alertas.html", { 'lista' : lista }, context_instance=RequestContext(request))
def status(request): # Programas externos avconvver = utils.avconv_version() meltver = utils.melt_version() mediainfover = utils.mediainfo_version() mp4boxver = utils.mp4box_version() exiftoolver = utils.exiftool_version() exes = { 'AVCONV' : { 'path' : config.get_option('AVCONV_PATH'), 'status' : True if avconvver else False, 'version' : avconvver, }, 'MELT' : { 'path' : config.get_option('MELT_PATH'), 'status' : True if meltver else False, 'version' : meltver, }, 'crontab' : { 'path' : config.get_option('CRONTAB_PATH'), 'status' : utils.is_exec(config.get_option('CRONTAB_PATH')), 'version' : 'N/A', }, 'mediainfo' : { 'path' : config.get_option('MEDIAINFO_PATH'), 'status' : True if mediainfover else False, 'version' : mediainfover, }, 'MP4Box' : { 'path' : config.get_option('MP4BOX_PATH'), 'status' : True if mp4boxver else False, 'version' : mp4boxver, }, 'exiftool' : { 'path' : config.get_option('EXIFTOOL_PATH'), 'status' : True if exiftoolver else False, 'version' : exiftoolver, }, } # Directorios dirs = dict() for i in [('library', 'VIDEO_LIBRARY_PATH'), ('input', 'VIDEO_INPUT_PATH'), ('previews', 'PREVIEWS_PATH')]: data = { 'path' : config.get_option(i[1]) } if utils.check_dir(data['path']): df = utils.df(data['path']) data['info'] = { 'total' : df[0], 'used' : df[1], 'left' : df[2], 'perc' : df[3], 'mount' : df[4] } dirs[i[0]] = data # Tareas Programadas if request.method == 'POST': if 'status_process' in request.POST: if request.POST['status_process'] == '1': crontab.stop('procesar_video') messages.warning(request, 'Tareas programadas de codificación desactivadas') else: crontab.start('procesar_video') messages.success(request, 'Tareas programadas de codificacion activadas') if 'status_publish' in request.POST: if request.POST['status_publish'] == '1': crontab.stop('publicar_video') messages.warning(request, 'Tareas programadas de publicación desactivadas') else: crontab.start('publicar_video') messages.success(request, 'Tareas programadas de publicación activadas') cron = { 'process' : crontab.status('procesar_video'), 'publish' : crontab.status('publicar_video') } # Información de la versión dpcatinfo = utils.dpcat_info() version = [ ['Versión', dpcatinfo['version']], ['Rama', dpcatinfo['branch']], ['Commit', dpcatinfo['commit']], ['Repositorio', dpcatinfo['url']], ['Fecha', dpcatinfo['date']], ['Autor', dpcatinfo['author']], ['Mensaje', dpcatinfo['message']] ] return render_to_response("postproduccion/section-status.html", { 'exes' : exes, 'dirs' : dirs, 'cron' : cron, 'version' : version }, context_instance=RequestContext(request))
def alerts(request): lista = list() tipo = { 'video-incompleto' : 'Video incompleto', 'trabajo-fail' : 'Tarea fallida', 'token-caducado' : 'Token caducado', 'video-aceptado' : 'Video sin validar', 'ejecutable' : 'Ejecutable', 'ruta' : 'Ruta', 'disco' : 'Disco', 'cron_proc' : 'Tarea programada' } tipoVideo = request.GET.get('tipoVideo') # Añade los vídeos incompletos. for i in Video.objects.filter(status='INC'): lista.append({ 'tipo' : 'video-incompleto', 'v' : i, 'fecha' : i.informeproduccion.fecha_produccion }) # Añade las tareas fallidas. for i in Cola.objects.filter(status='ERR'): lista.append({ 'tipo' : 'trabajo-fail', 't' : i, 'fecha' : i.comienzo }) # Añade los tokens caducados. for i in token.get_expired_tokens(): lista.append({ 'tipo' : 'token-caducado', 't' : i, 'fecha' : token.get_expire_time(i) }) # Añade los vídeos aceptados pendientes de validación. for i in InformeProduccion.objects.filter( video=Video.objects.filter(status='ACE'), fecha_produccion__lt = datetime.datetime.today() - datetime.timedelta(days = 15)): lista.append({ 'tipo' : 'video-aceptado', 'v' : i.video , 'fecha' : i.fecha_produccion }) # Comprueba los ejecutables. if not utils.avconv_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'avconv', 'fecha' : datetime.datetime.min }) if not utils.melt_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'melt', 'fecha' : datetime.datetime.min }) if not utils.mediainfo_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'mediainfo', 'fecha' : datetime.datetime.min }) if not utils.mp4box_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'MP4Box', 'fecha' : datetime.datetime.min }) if not utils.exiftool_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'exiftool', 'fecha' : datetime.datetime.min }) if not utils.is_exec(config.get_option('CRONTAB_PATH')): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'crontab', 'fecha' : datetime.datetime.min }) # Comprueba las rutas a los directorios. for i in [config.get_option(x) for x in ['VIDEO_LIBRARY_PATH', 'VIDEO_INPUT_PATH', 'PREVIEWS_PATH']]: if not utils.check_dir(i): lista.append({ 'tipo' : 'ruta', 'path' : i, 'fecha' : datetime.datetime.min }) else: cap = utils.df(i)[3] if int(cap.rstrip('%')) > 90: lista.append({ 'tipo' : 'disco', 'path' : i, 'cap' : cap, 'fecha' : datetime.datetime.min }) # Comprueba las tareas programadas if not crontab.status('procesar_video'): lista.append({ 'tipo' : 'cron_proc', 'fecha' : datetime.datetime.min }) if not crontab.status('publicar_video'): lista.append({ 'tipo' : 'cron_pub', 'fecha' : datetime.datetime.min }) # Filtrar por tipo de video if tipoVideo is not None: lista = [element for element in lista if element['tipo'] == tipoVideo] # Ordena los elementos cronológicamente lista = sorted(lista, key=lambda it: it['fecha']) if request.is_ajax(): return render_to_response("postproduccion/ajax/content-alertas.html", { 'lista' : lista[:5] }, context_instance=RequestContext(request)) else: return render_to_response("postproduccion/section-alertas.html", { 'lista' : lista , 'tipoAlerta' : tipo}, context_instance=RequestContext(request))