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 edit(self, id): """Return a morpheme language model and the data needed to update it. :URL: ``GET /morphemelanguagemodels/id/edit`` :param str id: the ``id`` value of the morpheme language model that will be updated. :returns: a dictionary of the form:: {"morpheme_language_model": {...}, "data": {...}} where the value of the ``morpheme_language_model`` key is a dictionary representation of the morpheme_language_model and the value of the ``data`` key is the data structure returned by the ``new`` action. """ lm = h.eagerload_morpheme_language_model( Session.query(MorphemeLanguageModel)).get(id) if lm: return { 'data': get_data_for_new_edit(dict(request.GET)), 'morpheme_language_model': lm } else: response.status_int = 404 return { 'error': 'There is no morpheme language model with id %s' % id }
def show(self, id): """Return a morpheme language model. :URL: ``GET /morphemelanguagemodels/id`` :param str id: the ``id`` value of the morpheme language model to be returned. :returns: a morpheme language model model object. """ lm = h.eagerload_morpheme_language_model(Session.query(MorphemeLanguageModel)).get(id) if lm: return lm else: response.status_int = 404 return {'error': 'There is no morpheme language model with id %s' % id}
def show(self, id): """Return a morpheme language model. :URL: ``GET /morphemelanguagemodels/id`` :param str id: the ``id`` value of the morpheme language model to be returned. :returns: a morpheme language model model object. """ lm = h.eagerload_morpheme_language_model( Session.query(MorphemeLanguageModel)).get(id) if lm: return lm else: response.status_int = 404 return { 'error': 'There is no morpheme language model with id %s' % id }
def delete(self, id): """Delete an existing morpheme language model and return it. :URL: ``DELETE /morphemelanguagemodels/id`` :param str id: the ``id`` value of the morpheme language model to be deleted. :returns: the deleted morpheme language model model. """ lm = h.eagerload_morpheme_language_model(Session.query(MorphemeLanguageModel)).get(id) if lm: lm_dict = lm.get_dict() backup_morpheme_language_model(lm_dict) Session.delete(lm) Session.commit() lm.remove_directory() return lm else: response.status_int = 404 return {'error': 'There is no morpheme language model with id %s' % id}
def index(self): """Get all morpheme language model resources. :URL: ``GET /morphemelanguagemodels`` with optional query string parameters for ordering and pagination. :returns: a list of all morpheme language model resources. .. note:: See :func:`utils.add_order_by` and :func:`utils.add_pagination` for the query string parameters that effect ordering and pagination. """ try: query = h.eagerload_morpheme_language_model(Session.query(MorphemeLanguageModel)) query = h.add_order_by(query, dict(request.GET), self.query_builder) return h.add_pagination(query, dict(request.GET)) 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 edit(self, id): """Return a morpheme language model and the data needed to update it. :URL: ``GET /morphemelanguagemodels/id/edit`` :param str id: the ``id`` value of the morpheme language model that will be updated. :returns: a dictionary of the form:: {"morpheme_language_model": {...}, "data": {...}} where the value of the ``morpheme_language_model`` key is a dictionary representation of the morpheme_language_model and the value of the ``data`` key is the data structure returned by the ``new`` action. """ lm = h.eagerload_morpheme_language_model(Session.query(MorphemeLanguageModel)).get(id) if lm: return {'data': get_data_for_new_edit(dict(request.GET)), 'morpheme_language_model': lm} else: response.status_int = 404 return {'error': 'There is no morpheme language model with id %s' % id}
def delete(self, id): """Delete an existing morpheme language model and return it. :URL: ``DELETE /morphemelanguagemodels/id`` :param str id: the ``id`` value of the morpheme language model to be deleted. :returns: the deleted morpheme language model model. """ lm = h.eagerload_morpheme_language_model( Session.query(MorphemeLanguageModel)).get(id) if lm: lm_dict = lm.get_dict() backup_morpheme_language_model(lm_dict) Session.delete(lm) Session.commit() lm.remove_directory() return lm else: response.status_int = 404 return { 'error': 'There is no morpheme language model with id %s' % id }
def index(self): """Get all morpheme language model resources. :URL: ``GET /morphemelanguagemodels`` with optional query string parameters for ordering and pagination. :returns: a list of all morpheme language model resources. .. note:: See :func:`utils.add_order_by` and :func:`utils.add_pagination` for the query string parameters that effect ordering and pagination. """ try: query = h.eagerload_morpheme_language_model( Session.query(MorphemeLanguageModel)) query = h.add_order_by(query, dict(request.GET), self.query_builder) return h.add_pagination(query, dict(request.GET)) except Invalid, e: response.status_int = 400 return {'errors': e.unpack_errors()}