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 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()
def load_location_file(location_file, session): if isdir(location_file): obj = load(location_file) RegisterObject(obj, session) set_active_model(session, obj.id)