def update_model(request): ''' Returns Model object in JSON. - This method varies slightly from the common object method in that if we don't specify a model ID, we: - update the current active model if it exists or... - generate a 'Not Found' exception. ''' log_prefix = 'req({0}): update_model():'.format(id(request)) log.info('>>' + log_prefix) ret = None try: json_request = ujson.loads(request.body.decode('utf-8')) except Exception: raise cors_exception(request, HTTPBadRequest) if 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)) obj_id = obj_id_from_req_payload(json_request) if obj_id: active_model = get_session_object(obj_id, request) else: active_model = get_active_model(request) if active_model: try: if UpdateObject(active_model, json_request, get_session_objects(request)): set_session_object(active_model, request) ret = active_model.serialize(options=web_ser_opts) except Exception: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: session_lock.release() log.info(' ' + log_prefix + 'session lock released...') else: session_lock.release() log.info(' {} session lock released (sess:{}, thr_id: {})'.format( log_prefix, id(session_lock), current_thread().ident)) msg = ("raising cors_exception() in update_model. " "Updating model before it exists.") log.warning(' ' + log_prefix + msg) raise cors_exception(request, HTTPNotFound) log.info('<<' + log_prefix) return ret
def update_model(request): ''' Returns Model object in JSON. - This method varies slightly from the common object method in that if we don't specify a model ID, we: - update the current active model if it exists or... - generate a 'Not Found' exception. ''' log_prefix = 'req({0}): update_model():'.format(id(request)) log.info('>>' + log_prefix) ret = None 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) gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() log.info(' ' + log_prefix + 'semaphore acquired...') obj_id = obj_id_from_req_payload(json_request) if obj_id: active_model = get_session_object(obj_id, request) else: active_model = get_active_model(request) if active_model: try: if UpdateObject(active_model, json_request, get_session_objects(request)): set_session_object(active_model, request) ret = active_model.serialize() except: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) finally: gnome_sema.release() log.info(' ' + log_prefix + 'semaphore released...') else: gnome_sema.release() log.info(' ' + log_prefix + 'semaphore released...') msg = ("raising cors_exception() in update_model. " "Updating model before it exists.") log.warning(' ' + log_prefix + msg) raise cors_exception(request, HTTPNotFound) log.info('<<' + log_prefix) return ret
def update_map(request): '''Updates a Gnome Map object.''' try: json_request = json.loads(request.body) except: raise HTTPBadRequest() if not JSONImplementsOneOf(json_request, implemented_types): raise HTTPNotImplemented() obj = get_session_object(obj_id_from_req_payload(json_request), request.session) if obj: try: UpdateObject(obj, json_request, request.session['objects']) except ValueError as e: raise HTTPUnsupportedMediaType(e) else: raise HTTPNotFound() set_session_object(obj, request.session) return obj.serialize()
def update_model(request): ''' Returns Model object in JSON. - This method varies slightly from the common object method in that if we don't specify a model ID, we: - update the current active model if it exists or... - generate a 'Not Found' exception. ''' ret = None try: json_request = json.loads(request.body) except: raise HTTPBadRequest() if not JSONImplementsOneOf(json_request, implemented_types): raise HTTPNotImplemented() gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() obj_id = obj_id_from_req_payload(json_request) if obj_id: my_model = get_session_object(obj_id, request.session) else: my_model = get_active_model(request.session) if my_model: if UpdateObject(my_model, json_request, get_session_objects(request.session)): set_session_object(my_model, request.session) ret = my_model.serialize() else: gnome_sema.release() raise HTTPNotFound() gnome_sema.release() return ret
def update_map(request): '''Updates a Gnome Map object.''' try: json_request = ujson.loads(request.body.decode('utf-8')) except Exception: raise cors_exception(request, HTTPBadRequest) if not JSONImplementsOneOf(json_request, implemented_types): raise cors_exception(request, HTTPNotImplemented) obj = get_session_object(obj_id_from_req_payload(json_request), request) if obj: try: UpdateObject(obj, json_request, get_session_objects(request)) except Exception: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) else: raise cors_exception(request, HTTPNotFound) set_session_object(obj, request) return obj.serialize(options=web_ser_opts)
def update_map(request): '''Updates a Gnome Map object.''' 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) obj = get_session_object(obj_id_from_req_payload(json_request), request) if obj: try: UpdateObject(obj, json_request, get_session_objects(request)) except: raise cors_exception(request, HTTPUnsupportedMediaType, with_stacktrace=True) else: raise cors_exception(request, HTTPNotFound) set_session_object(obj, request) return obj.serialize()