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.ffmpeg_version(): lista.append({ 'tipo' : 'ejecutable', 'exe' : 'ffmpeg', '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.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(): lista.append({ 'tipo' : 'cron', '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("postproduccion/ajax/content-alertas.html", { 'lista' : lista[:5] }, context_instance=RequestContext(request)) else: return render_to_response("postproduccion/section-alertas.html", { 'lista' : lista }, context_instance=RequestContext(request))