def create(self): """Create a new corpus resource and return it. :URL: ``POST /corpora`` :request body: JSON object representing the corpus to create. :returns: the newly created corpus. """ try: schema = CorpusSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.config = config data = schema.to_python(values, state) corpus = create_new_corpus(data) Session.add(corpus) Session.commit() create_corpus_dir(corpus) return corpus 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 corpus resource and return it. :URL: ``POST /corpora`` :request body: JSON object representing the corpus to create. :returns: the newly created corpus. """ try: schema = CorpusSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.config = config data = schema.to_python(values, state) corpus = create_new_corpus(data) Session.add(corpus) Session.commit() create_corpus_dir(corpus) return corpus 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 corpus and return it. :URL: ``PUT /corpora/id`` :Request body: JSON object representing the corpus with updated attribute values. :param str id: the ``id`` value of the corpus to be updated. :returns: the updated corpus model. """ corpus = h.eagerload_corpus(Session.query(Corpus)).get(int(id)) if corpus: try: schema = CorpusSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id state.config = config data = schema.to_python(values, state) corpus_dict = corpus.get_dict() corpus = update_corpus(corpus, data) # corpus will be False if there are no changes (cf. update_corpus). if corpus: backup_corpus(corpus_dict) Session.add(corpus) Session.commit() return corpus 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 corpus and return it. :URL: ``PUT /corpora/id`` :Request body: JSON object representing the corpus with updated attribute values. :param str id: the ``id`` value of the corpus to be updated. :returns: the updated corpus model. """ corpus = h.eagerload_corpus(Session.query(Corpus)).get(int(id)) if corpus: try: schema = CorpusSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id state.config = config data = schema.to_python(values, state) corpus_dict = corpus.get_dict() corpus = update_corpus(corpus, data) # corpus will be False if there are no changes (cf. update_corpus). if corpus: backup_corpus(corpus_dict) Session.add(corpus) Session.commit() return corpus 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()}