Example #1
0
def get_image_vector(uv_task):
    task_tag = "AVI: GETTING IMAGE VECTOR"

    print "\n\n************** %s [START] ******************\n" % task_tag
    uv_task.setStatus(302)

    from lib.Worker.Models.uv_document import UnveillanceDocument
    from conf import ANNEX_DIR
    import pypuzzle

    image = UnveillanceDocument(_id=uv_task.doc_id)
    puzz = pypuzzle.Puzzle()

    try:
        cvec = puzz.get_cvec_from_file(os.path.join(ANNEX_DIR,
                                                    image.file_name))
    except Exception as e:
        error_msg = "Could not get image vector because %s" % e

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg)
        return

    from vars import ASSET_TAGS

    if not image.addAsset(cvec,
                          "image_cvec.json",
                          as_literal=False,
                          tags=[ASSET_TAGS['IMAGE_CVEC']]):
        error_msg = "could not save cvec asset!"

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg)
        return

    print "\n\n************** %s [END] ******************\n" % task_tag
    uv_task.finish()
def evaluate_JSON_media(uv_task):
    task_tag = "EVALUATE JSON MEDIA"

    print "\n\n************** %s [START] ******************\n" % task_tag
    uv_task.setStatus(302)

    import os
    from json import loads

    from lib.Worker.Models.uv_document import UnveillanceDocument
    from conf import ANNEX_DIR, DEBUG

    doc = UnveillanceDocument(_id=uv_task.doc_id)

    try:
        if DEBUG:
            print doc.emit()
    except Exception as e:
        print e

    content = None

    try:
        content = loads(doc.loadFile(doc.file_name))
    except Exception as e:
        error_msg = "could not load content at all: %s" % e

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg)
        return

    # match keys to object
    mention_set = ["mimeType", "headers", "parts", "body", "filename"]

    if len(set(content.keys()).intersection(mention_set)) == len(
            content.keys()):
        from lib.Worker.Models.dl_FD_mention import FoxyDoxxingMention
        doc = FoxyDoxxingMention(inflate=doc.emit())
    else:
        error_msg = "document not really usable."

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg)
        return

    doc.addCompletedTask(uv_task.task_path)

    from vars import MIME_TYPE_TASKS

    uv_task.task_queue = [uv_task.task_path]

    try:
        uv_task.task_queue.extend(MIME_TYPE_TASKS[doc.mime_type])
        uv_task.routeNext()
    except Exception as e:
        error_msg = "cannot get task queue for mime type %s: %s" % (
            doc.mime_type, e)

        print error_msg
        print "\n\n************** %s [WARN] ******************\n" % task_tag

    print "\n\n************** %s [END] ******************\n" % task_tag
    uv_task.finish()
Example #3
0
def compare_avis(uv_task):
    task_tag = "CLUSTER: COMPARING 2 AVIS"
    print "\n\n************** %s [START] ******************\n" % task_tag

    uv_task.setStatus(302)

    if not hasattr(uv_task, 'avis') or len(uv_task.avis != 2):
        error_msg = "Cannot compare anything."

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg, status=412)
        return

    from lib.Worker.Models.uv_document import UnveillanceDocument

    try:
        avis = map(lambda a: UnveillanceDocument(_id=a), uv_task.avis)
    except Exception as e:
        error_msg = "could not load up avis as UnveillanceDocuments: %s" % e

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg, status=412)
        return

    from conf import ANNEX_DIR
    from vars import ASSET_TAGS

    from json import loads
    import pypuzzle

    puzz = pypuzzle.Puzzle()

    try:
        compare_avi = puzz.get_distance_from_cvec(
            *(map(lambda a: loads(a.loadAsset("image_cvec.json")), avis)))
    except Exception as e:
        error_msg = "could not get one or more image vectors because %s" % e

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg, status=412)
        return

    if type(compare_avi) not in [int, float]:
        error_msg = "non-numerical result for comparaison."

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg, status=412)
        return

    c_map = {
        'avis': map(lambda a: {
            'file_name': a.file_name,
            '_id': a._id
        }, avis),
        'compared': compare_avi
    }

    if not uv_task.addAsset(c_map,
                            "compare_avi_output.json",
                            as_literal=False,
                            tags=[ASSET_TAGS['C_RES']]):
        error_msg = "could not save result asset to this task."

        print error_msg
        print "\n\n************** %s [ERROR] ******************\n" % task_tag

        uv_task.fail(message=error_msg)
        return

    print "\n\n************** %s [END] ******************\n" % task_tag
    uv_task.finish()