def create_map(request): '''Creates a Gnome Map object.''' log_prefix = 'req({0}): create_map():'.format(id(request)) init_session_objects(request) try: json_request = ujson.loads(request.body) except: raise cors_exception(request, HTTPBadRequest) if not JSONImplementsOneOf(json_request, implemented_types): raise cors_exception(request, HTTPNotImplemented) if 'filename' in json_request: json_request['filename'] = get_file_path(request, json_request=json_request) gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() log.info(' ' + log_prefix + 'semaphore acquired...') try: obj = CreateObject(json_request, get_session_objects(request)) except: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: gnome_sema.release() log.info(' ' + log_prefix + 'semaphore released...') set_session_object(obj, request) return obj.serialize()
def create_map(request): '''Creates a Gnome Map object.''' log_prefix = 'req({0}): create_map():'.format(id(request)) init_session_objects(request) try: json_request = ujson.loads(request.body) except: raise cors_exception(request, HTTPBadRequest) if not JSONImplementsOneOf(json_request, implemented_types): raise cors_exception(request, HTTPNotImplemented) if 'filename' in json_request: json_request['filename'] = get_file_path(request, json_request=json_request) gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() log.info(' ' + log_prefix + 'semaphore acquired...') try: obj = CreateObject(json_request, get_session_objects(request)) except: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: gnome_sema.release() log.info(' ' + log_prefix + 'semaphore released...') set_session_object(obj, request) return obj.serialize()
def create_model(request): ''' Creates a new model ''' log_prefix = 'req({0}): create_object():'.format(id(request)) log.info('>>' + log_prefix) try: json_request = ujson.loads(request.body.decode('utf-8')) except Exception: json_request = None if json_request and not JSONImplementsOneOf(json_request, implemented_types): raise cors_exception(request, HTTPNotImplemented) session_lock = acquire_session_lock(request) log.info(' {} session lock acquired (sess:{}, thr_id: {})'.format( log_prefix, id(session_lock), current_thread().ident)) try: clean_session_dir(request) init_session_objects(request, force=True) if json_request: new_model = CreateObject(json_request, get_session_objects(request)) else: new_model = Model() set_session_object(new_model, request) set_active_model(request, new_model.id) except Exception: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: session_lock.release() log.info(' {} session lock released (sess:{}, thr_id: {})'.format( log_prefix, id(session_lock), current_thread().ident)) log.info('<<' + log_prefix) return new_model.serialize(options=web_ser_opts)
def create_model(request): ''' Creates a new model ''' log_prefix = 'req({0}): create_object():'.format(id(request)) log.info('>>' + log_prefix) try: json_request = ujson.loads(request.body) except: json_request = None if json_request and not JSONImplementsOneOf(json_request, implemented_types): raise cors_exception(request, HTTPNotImplemented) gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() log.info(' ' + log_prefix + 'semaphore acquired...') try: init_session_objects(request, force=True) if json_request: new_model = CreateObject(json_request, get_session_objects(request)) else: new_model = Model() set_session_object(new_model, request) set_session_object(new_model._map, request) set_active_model(request, new_model.id) except: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: gnome_sema.release() log.info(' ' + log_prefix + 'semaphore released...') log.info('<<' + log_prefix) return new_model.serialize()
def create_model(request): ''' Creates a new model ''' log_prefix = 'req({0}): create_object():'.format(id(request)) log.info('>>' + log_prefix) try: json_request = ujson.loads(request.body) except: json_request = None if json_request and not JSONImplementsOneOf(json_request, implemented_types): raise cors_exception(request, HTTPNotImplemented) gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() log.info(' ' + log_prefix + 'semaphore acquired...') try: init_session_objects(request, force=True) if json_request: new_model = CreateObject(json_request, get_session_objects(request)) else: new_model = Model() set_session_object(new_model, request) set_session_object(new_model._map, request) set_active_model(request, new_model.id) except: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: gnome_sema.release() log.info(' ' + log_prefix + 'semaphore released...') log.info('<<' + log_prefix) return new_model.serialize()
def create_map(request): '''Creates a Gnome Map object.''' init_session_objects(request.session) try: json_request = json.loads(request.body) except: raise HTTPBadRequest() if not JSONImplementsOneOf(json_request, implemented_types): raise HTTPNotImplemented() # TODO: should we tie our data directory to the installation path? # or should we be more flexible? map_dir = get_map_dir_from_config(request) json_request['filename'] = os.path.join(map_dir, json_request['filename']) obj = CreateObject(json_request, request.session['objects']) set_session_object(obj, request.session) return obj.serialize()
def create_model(request): ''' Creates a new model ''' log_prefix = 'req({0}): create_object():'.format(id(request)) print '>>', log_prefix try: json_request = json.loads(request.body) except: json_request = None if json_request and not JSONImplementsOneOf(json_request, implemented_types): raise HTTPNotImplemented() gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() print ' ', log_prefix, 'semaphore acquired...' try: init_session_objects(request.session, force=True) if json_request: new_model = CreateObject(json_request, get_session_objects(request.session)) else: new_model = Model() set_session_object(new_model, request.session) set_session_object(new_model._map, request.session) set_active_model(request.session, new_model.id) finally: gnome_sema.release() print ' ', log_prefix, 'semaphore released...' print '<<', log_prefix return new_model.serialize()