def update(self, id): """Update a morpheme language model and return it. :URL: ``PUT /morphemelanguagemodels/id`` :Request body: JSON object representing the morpheme language model with updated attribute values. :param str id: the ``id`` value of the morpheme language model to be updated. :returns: the updated morpheme language model model. """ morpheme_language_model = h.eagerload_morpheme_language_model(Session.query(MorphemeLanguageModel)).get(int(id)) if morpheme_language_model: try: schema = MorphemeLanguageModelSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) morpheme_language_model_dict = morpheme_language_model.get_dict() morpheme_language_model = update_morpheme_language_model(morpheme_language_model, data) # morpheme_language_model will be False if there are no changes (cf. update_morpheme_language_model). if morpheme_language_model: backup_morpheme_language_model(morpheme_language_model_dict) Session.add(morpheme_language_model) Session.commit() return morpheme_language_model else: response.status_int = 400 return {'error': u'The update request failed because the submitted data were not new.'} except h.JSONDecodeError: response.status_int = 400 return h.JSONDecodeErrorResponse except Invalid, e: response.status_int = 400 return {'errors': e.unpack_errors()}
def update(self, id): """Update a morpheme language model and return it. :URL: ``PUT /morphemelanguagemodels/id`` :Request body: JSON object representing the morpheme language model with updated attribute values. :param str id: the ``id`` value of the morpheme language model to be updated. :returns: the updated morpheme language model model. """ morpheme_language_model = h.eagerload_morpheme_language_model( Session.query(MorphemeLanguageModel)).get(int(id)) if morpheme_language_model: try: schema = MorphemeLanguageModelSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) morpheme_language_model_dict = morpheme_language_model.get_dict( ) morpheme_language_model = update_morpheme_language_model( morpheme_language_model, data) # morpheme_language_model will be False if there are no changes (cf. update_morpheme_language_model). if morpheme_language_model: backup_morpheme_language_model( morpheme_language_model_dict) Session.add(morpheme_language_model) Session.commit() return morpheme_language_model else: response.status_int = 400 return { 'error': u'The update request failed because the submitted data were not new.' } except h.JSONDecodeError: response.status_int = 400 return h.JSONDecodeErrorResponse except Invalid, e: response.status_int = 400 return {'errors': e.unpack_errors()}
def create(self): """Create a new morpheme language model resource and return it. :URL: ``POST /morphemelanguagemodels`` :request body: JSON object representing the morpheme language model to create. :returns: the newly created morpheme language model. """ try: schema = MorphemeLanguageModelSchema() values = json.loads(unicode(request.body, request.charset)) data = schema.to_python(values) lm = create_new_morpheme_language_model(data) Session.add(lm) Session.commit() lm.make_directory_safely(lm.directory) return lm except h.JSONDecodeError: response.status_int = 400 return h.JSONDecodeErrorResponse except Invalid, e: response.status_int = 400 return {'errors': e.unpack_errors()}