예제 #1
0
파일: views.py 프로젝트: adrianrv/dpCat
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)
    )
예제 #2
0
파일: views.py 프로젝트: adrianrv/dpCat
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))
예제 #3
0
파일: views.py 프로젝트: pchinea/dpCat
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))
예제 #4
0
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))
예제 #5
0
파일: views.py 프로젝트: Madh93/dpCat
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))
예제 #6
0
파일: views.py 프로젝트: Madh93/dpCat
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))