Example #1
0
def upload_map(request):
    file_path = process_upload(request, 'new_map').split(os.path.sep)[-1]
    request.body = ujson.dumps({'obj_type': 'gnome.map.MapFromBNA',
                                'filename': file_path,
                                'refloat_halflife': 6.0,
                                'json_': 'webapi'
                                })
    map_obj = create_map(request)
    resp = Response(ujson.dumps(map_obj))

    return cors_response(request, resp)
Example #2
0
def upload_map(request):
    file_path = process_upload(request, 'new_map').split(os.path.sep)[-1]
    request.body = ujson.dumps({
        'obj_type': 'gnome.map.MapFromBNA',
        'filename': file_path,
        'refloat_halflife': 6.0,
        'json_': 'webapi'
    })
    map_obj = create_map(request)
    resp = Response(ujson.dumps(map_obj))

    return cors_response(request, resp)
Example #3
0
def upload_model(request):
    '''
        Uploads a new model in the form of a zipfile and registers it as the
        current active model.

        We are generating our own filename instead of trusting
        the incoming filename since that might result in insecure paths.

        We may want to eventually use something other than /tmp,
        and if you write to an untrusted location you will need to do
        some extra work to prevent symlink attacks.
    '''
    clean_session_dir(request)
    file_path = process_upload(request, 'new_model')
    # Now that we have our file, we will now try to load the model into
    # memory.
    # Now that we have our file, is it a zipfile?
    if not is_savezip_valid(file_path):
        raise cors_response(
            request, HTTPBadRequest('Incoming file is not a '
                                    'valid zipfile!'))

    # now we try to load our model from the zipfile.
    gnome_sema = request.registry.settings['py_gnome_semaphore']
    gnome_sema.acquire()
    log.info('semaphore acquired.')
    try:
        log.info('loading our model from zip...')
        new_model = load(file_path)
        new_model._cache.enabled = False

        init_session_objects(request, force=True)

        RegisterObject(new_model, request)

        log.info('setting active model...')
        set_active_model(request, new_model.id)
    except:
        raise cors_exception(request, HTTPBadRequest, with_stacktrace=True)
    finally:
        gnome_sema.release()
        log.info('semaphore released.')

    # We will want to clean up our tempfile when we are done.
    os.remove(file_path)

    return cors_response(request, Response('OK'))
Example #4
0
def upload_model(request):
    '''
        Uploads a new model in the form of a zipfile and registers it as the
        current active model.

        We are generating our own filename instead of trusting
        the incoming filename since that might result in insecure paths.

        We may want to eventually use something other than /tmp,
        and if you write to an untrusted location you will need to do
        some extra work to prevent symlink attacks.
    '''
    clean_session_dir(request)
    file_path = process_upload(request, 'new_model')
    # Now that we have our file, we will now try to load the model into
    # memory.
    # Now that we have our file, is it a zipfile?
    if not is_savezip_valid(file_path):
        raise cors_response(request, HTTPBadRequest('Incoming file is not a '
                                                    'valid zipfile!'))

    # now we try to load our model from the zipfile.
    gnome_sema = request.registry.settings['py_gnome_semaphore']
    gnome_sema.acquire()
    log.info('semaphore acquired.')
    try:
        log.info('loading our model from zip...')
        new_model = load(file_path)
        new_model._cache.enabled = False

        init_session_objects(request, force=True)

        RegisterObject(new_model, request)

        log.info('setting active model...')
        set_active_model(request, new_model.id)
    except:
        raise cors_exception(request, HTTPBadRequest, with_stacktrace=True)
    finally:
        gnome_sema.release()
        log.info('semaphore released.')

    # We will want to clean up our tempfile when we are done.
    os.remove(file_path)

    return cors_response(request, Response('OK'))
Example #5
0
def environment_upload(request):
    filename, name = process_upload(request, 'new_environment')
    resp = Response(ujson.dumps({'filename': filename, 'name': name}))

    return cors_response(request, resp)
Example #6
0
def upload_mover(request):
    file_path = process_upload(request, 'new_mover')
    resp = Response(ujson.dumps({'filename': file_path}))

    return cors_response(request, resp)
Example #7
0
def environment_upload(request):
    filename = process_upload(request, "new_environment")
    resp = Response(ujson.dumps({"filename": filename}))

    return cors_response(request, resp)
Example #8
0
def upload_mover(request):
    file_path = process_upload(request, 'new_mover')
    resp = Response(ujson.dumps({'filename': file_path}))

    return cors_response(request, resp)