コード例 #1
0
ファイル: views.py プロジェクト: Ocropodium/ocropodium-ui
def run_preset(request):
    """
    Execute a script (sent as JSON).
    """
    evalnode = request.POST.get("node", "")
    jsondata = request.POST.get("script")
    nodes = json.loads(jsondata)
    tree = script.Script(nodes)
    errors = tree.validate()
    if errors:
        return HttpResponse(json.dumps(dict(
            status="VALIDATION",
            errors=errors,
        )), mimetype="application/json")

    term = tree.get_node(evalnode)
    if term is None:
        terms = tree.get_terminals()
        if not terms:
            return HttpResponse(json.dumps(dict(
                status="NOSCRIPT",
            )), mimetype="application/json")
        term = terms[0]
    async = OcrTask.run_celery_task("run.script", (evalnode, nodes,
            request.output_path, _cache_name(request)),
            untracked=True, asyncronous=True, queue="interactive")
    out = dict(
        node=evalnode,
        task_id=async.task_id,
        status=async.status,
        results=async.result
    )
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #2
0
ファイル: views.py プロジェクト: Ocropodium/ocropodium-ui
def abort(request, task_id):
    """
    Kill a running celery task.
    """
    OcrTask.revoke_celery_task(task_id, kill=True)
    out = dict(task_id=task_id, status="ABORT")
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #3
0
ファイル: views.py プロジェクト: Ocropodium/ocropodium-ui
def result(request, task_id):
    """
    Fetch the result for one Celery task id.
    """
    async = OcrTask.get_celery_result(task_id)
    out = dict(task_id=async .task_id,
               status=async .status,
               results=async .result)
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #4
0
ファイル: views.py プロジェクト: vitorio/ocropodium
def abort(request, task_id):
    """
    Kill a running celery task.
    """
    OcrTask.revoke_celery_task(task_id, kill=True)
    out = dict(
        task_id=task_id,
        status="ABORT"
    )
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #5
0
ファイル: views.py プロジェクト: vitorio/ocropodium
def result(request, task_id):
    """
    Fetch the result for one Celery task id.
    """
    async = OcrTask.get_celery_result(task_id)
    out = dict(
        task_id=async.task_id,
        status=async.status,
        results=async.result
    )
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #6
0
ファイル: views.py プロジェクト: vitorio/ocropodium
def results(request, task_ids):
    """
    Fetch the results of several Celery task ids.
    """
    out = []
    for task_id in task_ids.split(","):
        async = OcrTask.get_celery_result(task_id)
        out.append(dict(
            result=_flatten_result(async.result),
            task_id=task_id,
            status=async.status,
        ))
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #7
0
ファイル: views.py プロジェクト: Ocropodium/ocropodium-ui
def results(request, task_ids):
    """
    Fetch the results of several Celery task ids.
    """
    out = []
    for task_id in task_ids.split(","):
        async = OcrTask.get_celery_result(task_id)
        out.append(
            dict(
                result=_flatten_result(async .result),
                task_id=task_id,
                status=async .status,
            ))
    response = HttpResponse(mimetype="application/json")
    json.dump(out, response, ensure_ascii=False)
    return response
コード例 #8
0
def dispatch_batch(batch, pids):
    """Dispatch a batch task."""
    # hack - sort the incoming list of pids
    storage = batch.project.get_storage()
    pid = storage.sort_pidlist(storage.namespace, pids)

    options = dict(loglevel=60, retries=2)
    ocrtasks = []
    for pid in pids:
        docscript = script_for_document(batch.script, batch.project, pid)
        tid = OcrTask.get_new_task_id()
        args = (
            batch.project.pk,
            pid,
            docscript,
        )
        kwargs = dict()
        ocrtask = OcrTask(
            task_id=tid,
            user=batch.user,
            batch=batch,
            project=batch.project,
            page_name=pid,  # FIXME: This is wrong
            task_name=batch.task_type,
            status="INIT",
            args=args,
            kwargs=kwargs,
        )
        ocrtask.save()
        ocrtasks.append(ocrtask)
    OcrTask.run_celery_task_multiple(batch.task_type, ocrtasks, **options)
コード例 #9
0
ファイル: views.py プロジェクト: vitorio/ocropodium
def binary(request, pid):
    """
    Trigger a re-binarization of the image for viewing purposes.
    """
    taskname = "create.docdzi"
    doc = request.project.get_storage().get(pid)
    if not request.is_ajax():
        response = HttpResponse(mimetype=doc.binary_mimetype)
        with doc.binary_content as handle:
            response.write(handle.read())
        return response
    
    if doc.binary_empty:
        return HttpResponseNotFound
    async = OcrTask.run_celery_task(taskname, (request.project.pk, pid, "binary"),
            untracked=True,
            queue="interactive", asyncronous=request.POST.get("async", False))
    out = dict(task_id=async.task_id, status=async.status,
        results=async.result)
    return HttpResponse(json.dumps(out), mimetype="application/json")
コード例 #10
0
ファイル: views.py プロジェクト: vitorio/ocropodium
def dispatch_batch(batch, pids):
    """Dispatch a batch task."""
    # hack - sort the incoming list of pids
    storage = batch.project.get_storage()
    pid = storage.sort_pidlist(storage.namespace, pids)

    options = dict(loglevel=60, retries=2)
    ocrtasks = []
    for pid in pids:
        docscript = script_for_document(batch.script,
                batch.project, pid)
        tid = OcrTask.get_new_task_id()
        args = (batch.project.pk, pid, docscript,)
        kwargs = dict()
        ocrtask = OcrTask(
            task_id=tid,
            user=batch.user,
            batch=batch,
            project=batch.project,
            page_name=pid, # FIXME: This is wrong
            task_name=batch.task_type,
            status="INIT",
            args=args,
            kwargs=kwargs,
        )
        ocrtask.save()
        ocrtasks.append(ocrtask)
    OcrTask.run_celery_task_multiple(batch.task_type, ocrtasks, **options)
コード例 #11
0
def binary(request, pid):
    """
    Trigger a re-binarization of the image for viewing purposes.
    """
    taskname = "create.docdzi"
    doc = request.project.get_storage().get(pid)
    if not request.is_ajax():
        response = HttpResponse(mimetype=doc.binary_mimetype)
        with doc.binary_content as handle:
            response.write(handle.read())
        return response

    if doc.binary_empty:
        return HttpResponseNotFound
    async = OcrTask.run_celery_task(taskname,
                                    (request.project.pk, pid, "binary"),
                                    untracked=True,
                                    queue="interactive",
                                    asyncronous=request.POST.get(
                                        "async", False))
    out = dict(task_id=async .task_id,
               status=async .status,
               results=async .result)
    return HttpResponse(json.dumps(out), mimetype="application/json")