Esempio n. 1
0
    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()}
Esempio n. 2
0
    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
            }
Esempio n. 3
0
    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}
Esempio n. 4
0
    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
            }
Esempio n. 5
0
    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}
Esempio n. 6
0
    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()}
Esempio n. 7
0
    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()}
Esempio n. 8
0
    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}
Esempio n. 9
0
    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
            }
Esempio n. 10
0
    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()}