def get_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: - return the current active model if it exists or... - return the specification. ''' ret = None obj_id = obj_id_from_url(request) gnome_sema = request.registry.settings['py_gnome_semaphore'] gnome_sema.acquire() if not obj_id: my_model = get_active_model(request.session) if my_model: ret = my_model.serialize() else: # - return a Model specification ret = get_specifications(request, implemented_types) else: obj = get_session_object(obj_id, request.session) if obj: if ObjectImplementsOneOf(obj, implemented_types): set_active_model(request.session, obj.id) ret = obj.serialize() else: raise HTTPUnsupportedMediaType() else: raise HTTPNotFound() gnome_sema.release() 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