def update(self, id): """Update an elicitation method and return it. :URL: ``PUT /elicitationmethods/id`` :Request body: JSON object representing the elicitation method with updated attribute values. :param str id: the ``id`` value of the elicitation method to be updated. :returns: the updated elicitation method model. """ elicitation_method = Session.query(ElicitationMethod).get(int(id)) if elicitation_method: try: schema = ElicitationMethodSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) elicitation_method = update_elicitation_method(elicitation_method, data) # elicitation_method will be False if there are no changes (cf. update_elicitation_method). if elicitation_method: Session.add(elicitation_method) Session.commit() return elicitation_method 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 collection resource and return it. :URL: ``POST /collections`` :request body: JSON object representing the collection to create. :returns: the newly created collection. """ try: unrestricted_users = h.get_unrestricted_users() user = session['user'] schema = CollectionSchema() values = json.loads(unicode(request.body, request.charset)) collections_referenced = get_collections_referenced(values['contents'], user, unrestricted_users) values = add_contents_unpacked_to_values(values, collections_referenced) values = add_form_ids_list_to_values(values) state = h.get_state_object(values) data = schema.to_python(values, state) collection = create_new_collection(data, collections_referenced) Session.add(collection) Session.commit() return collection.get_full_dict() except h.JSONDecodeError: response.status_int = 400 return h.JSONDecodeErrorResponse except InvalidCollectionReferenceError, e: response.status_int = 400 return {'error': u'Invalid collection reference error: there is no collection with id %d' % e.args[0]}
def update(self, id): """Update a syntactic category and return it. :URL: ``PUT /syntacticcategorys/id`` :Request body: JSON object representing the syntactic category with updated attribute values. :param str id: the ``id`` value of the syntactic category to be updated. :returns: the updated syntactic category model. """ syntactic_category = Session.query(SyntacticCategory).get(int(id)) if syntactic_category: try: old_name = syntactic_category.name schema = SyntacticCategorySchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) syntactic_category = update_syntactic_category(syntactic_category, data) # syntactic_category will be False if there are no changes (cf. update_syntactic_category). if syntactic_category: Session.add(syntactic_category) Session.commit() if syntactic_category.name != old_name: update_forms_referencing_this_category(syntactic_category) return syntactic_category 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 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 collection resource and return it. :URL: ``POST /collections`` :request body: JSON object representing the collection to create. :returns: the newly created collection. """ try: unrestricted_users = h.get_unrestricted_users() user = session['user'] schema = CollectionSchema() values = json.loads(unicode(request.body, request.charset)) collections_referenced = get_collections_referenced( values['contents'], user, unrestricted_users) values = add_contents_unpacked_to_values(values, collections_referenced) values = add_form_ids_list_to_values(values) state = h.get_state_object(values) data = schema.to_python(values, state) collection = create_new_collection(data, collections_referenced) Session.add(collection) Session.commit() return collection.get_full_dict() except h.JSONDecodeError: response.status_int = 400 return h.JSONDecodeErrorResponse except InvalidCollectionReferenceError, e: response.status_int = 400 return { 'error': u'Invalid collection reference error: there is no collection with id %d' % e.args[0] }
def update(self, id): """Update a form search and return it. :URL: ``PUT /formsearches/id`` :Request body: JSON object representing the form search with updated attribute values. :param str id: the ``id`` value of the form search to be updated. :returns: the updated form search model. """ form_search = h.eagerload_form_search(Session.query(FormSearch)).get(int(id)) if form_search: try: schema = FormSearchSchema() 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) form_search = update_form_search(form_search, data) # form_search will be False if there are no changes (cf. update_form_search). if form_search: Session.add(form_search) Session.commit() return form_search 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 source and return it. :URL: ``PUT /sources/id`` :Request body: JSON object representing the source with updated attribute values. :param str id: the ``id`` value of the source to be updated. :returns: the updated source model. """ source = Session.query(Source).get(int(id)) if source: try: schema = SourceSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) source = update_source(source, data) # source will be False if there are no changes (cf. update_source). if source: Session.add(source) Session.commit() return source 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 keyboard and return it. :URL: ``PUT /keyboards/id`` :Request body: JSON object representing the keyboard with updated attribute values. :param str id: the ``id`` value of the keyboard to be updated. :returns: the updated keyboard model. """ keyboard = Session.query(Keyboard).get(int(id)) if keyboard: try: schema = KeyboardSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) keyboard = update_keyboard(keyboard, data) # keyboard will be False if there are no changes (cf. # update_keyboard). if keyboard: Session.add(keyboard) Session.commit() return keyboard else: response.status_int = 400 return {'error': (u'The update request failed because the' u' 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 user and return it. :URL: ``PUT /users/id`` :Request body: JSON object representing the user with updated attribute values. :param str id: the ``id`` value of the user to be updated. :returns: the updated user model. """ user = Session.query(User).get(int(id)) if user: try: schema = UserSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.user_to_update = user.get_full_dict() current_user = Session.query(User).get(session['user'].id) state.user = current_user.get_full_dict() data = schema.to_python(values, state) user = update_user(user, data) # user will be False if there are no changes (cf. update_user). if user: Session.add(user) Session.commit() return user.get_full_dict() 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 collection and return it. :URL: ``PUT /collections/id`` :Request body: JSON object representing the collection with updated attribute values. :param str id: the ``id`` value of the collection to be updated. :returns: the updated collection model. """ collection = h.eagerload_collection(Session.query(Collection), eagerload_forms=True).get(int(id)) if collection: unrestricted_users = h.get_unrestricted_users() user = session['user'] if h.user_is_authorized_to_access_model(user, collection, unrestricted_users): try: schema = CollectionSchema() values = json.loads(unicode(request.body, request.charset)) collections_referenced = get_collections_referenced( values['contents'], user, unrestricted_users, id) values = add_contents_unpacked_to_values(values, collections_referenced) values = add_form_ids_list_to_values(values) state = h.get_state_object(values) data = schema.to_python(values, state) collection_dict = collection.get_full_dict() collection, restricted, contents_changed = update_collection( collection, data, collections_referenced) # collection will be False if there are no changes (cf. update_collection). if collection: backup_collection(collection_dict) update_collections_that_reference_this_collection(collection, self.query_builder, restricted=restricted, contents_changed=contents_changed) Session.add(collection) Session.commit() return collection.get_full_dict() 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 CircularCollectionReferenceError, e: response.status_int = 400 return {'error': u'Circular collection reference error: collection %d references collection %d.' % (id, e.args[0])} except InvalidCollectionReferenceError, e: response.status_int = 400 return {'error': u'Invalid collection reference error: there is no collection with id %d' % e.args[0]} except UnauthorizedCollectionReferenceError: response.status_int = 403 return {'error': u'Unauthorized collection reference error: you are not authorized to access collection %d' % e.args[0]}
def update(self, id): """Update an orthography and return it. :URL: ``PUT /orthographies/id`` :Request body: JSON object representing the orthography with updated attribute values. :param str id: the ``id`` value of the orthography to be updated. :returns: the updated orthography model. .. note:: Contributors can only update orthographies that are not used in the active application settings. """ orthography = Session.query(Orthography).get(int(id)) user = session['user'] if orthography: app_set = h.get_application_settings() if user.role == u'administrator' or orthography not in ( app_set.storage_orthography, app_set.input_orthography, app_set.output_orthography): try: schema = OrthographySchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id result = schema.to_python(values, state) orthography = update_orthography(orthography, result) # orthography will be False if there are no changes (cf. update_orthography). if orthography: Session.add(orthography) Session.commit() return orthography 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()} else: response.status = 403 return { 'error': u'Only administrators are permitted to update orthographies that are used in the active application settings.' }
def update(self, id): """Update an orthography and return it. :URL: ``PUT /orthographies/id`` :Request body: JSON object representing the orthography with updated attribute values. :param str id: the ``id`` value of the orthography to be updated. :returns: the updated orthography model. .. note:: Contributors can only update orthographies that are not used in the active application settings. """ orthography = Session.query(Orthography).get(int(id)) user = session['user'] if orthography: app_set = h.get_application_settings() if user.role == u'administrator' or orthography not in ( app_set.storage_orthography, app_set.input_orthography, app_set.output_orthography): try: schema = OrthographySchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id result = schema.to_python(values, state) orthography = update_orthography(orthography, result) # orthography will be False if there are no changes (cf. update_orthography). if orthography: Session.add(orthography) Session.commit() return orthography 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()} else: response.status = 403 return {'error': u'Only administrators are permitted to update orthographies that are used in the active application settings.'}
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 syntactic category and return it. :URL: ``PUT /syntacticcategorys/id`` :Request body: JSON object representing the syntactic category with updated attribute values. :param str id: the ``id`` value of the syntactic category to be updated. :returns: the updated syntactic category model. """ syntactic_category = Session.query(SyntacticCategory).get(int(id)) if syntactic_category: try: old_name = syntactic_category.name schema = SyntacticCategorySchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) syntactic_category = update_syntactic_category( syntactic_category, data) # syntactic_category will be False if there are no changes (cf. update_syntactic_category). if syntactic_category: Session.add(syntactic_category) Session.commit() if syntactic_category.name != old_name: update_forms_referencing_this_category( syntactic_category) return syntactic_category 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 form search and return it. :URL: ``PUT /formsearches/id`` :Request body: JSON object representing the form search with updated attribute values. :param str id: the ``id`` value of the form search to be updated. :returns: the updated form search model. """ form_search = h.eagerload_form_search(Session.query(FormSearch)).get( int(id)) if form_search: try: schema = FormSearchSchema() 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) form_search = update_form_search(form_search, data) # form_search will be False if there are no changes (cf. update_form_search). if form_search: Session.add(form_search) Session.commit() return form_search 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()}
def create(self): """Create a new source resource and return it. :URL: ``POST /sources`` :request body: JSON object representing the source to create. :returns: the newly created source. """ try: schema = SourceSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) data = schema.to_python(values, state) source = create_new_source(data) Session.add(source) Session.commit() return source 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 keyboard and return it. :URL: ``PUT /keyboards/id`` :Request body: JSON object representing the keyboard with updated attribute values. :param str id: the ``id`` value of the keyboard to be updated. :returns: the updated keyboard model. """ keyboard = Session.query(Keyboard).get(int(id)) if keyboard: try: schema = KeyboardSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) keyboard = update_keyboard(keyboard, data) # keyboard will be False if there are no changes (cf. # update_keyboard). if keyboard: Session.add(keyboard) Session.commit() return keyboard else: response.status_int = 400 return { 'error': (u'The update request failed because the' u' 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 user and return it. :URL: ``PUT /users/id`` :Request body: JSON object representing the user with updated attribute values. :param str id: the ``id`` value of the user to be updated. :returns: the updated user model. """ user = Session.query(User).get(int(id)) if user: try: schema = UserSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.user_to_update = user.get_full_dict() current_user = Session.query(User).get(session['user'].id) state.user = current_user.get_full_dict() data = schema.to_python(values, state) user = update_user(user, data) # user will be False if there are no changes (cf. update_user). if user: Session.add(user) Session.commit() return user.get_full_dict() 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 form search resource and return it. :URL: ``POST /formsearches`` :request body: JSON object representing the form search to create. :returns: the newly created form search. """ try: schema = FormSearchSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.config = config data = schema.to_python(values, state) form_search = create_new_form_search(data) Session.add(form_search) Session.commit() return form_search 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 an elicitation method and return it. :URL: ``PUT /elicitationmethods/id`` :Request body: JSON object representing the elicitation method with updated attribute values. :param str id: the ``id`` value of the elicitation method to be updated. :returns: the updated elicitation method model. """ elicitation_method = Session.query(ElicitationMethod).get(int(id)) if elicitation_method: try: schema = ElicitationMethodSchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) elicitation_method = update_elicitation_method( elicitation_method, data) # elicitation_method will be False if there are no changes (cf. update_elicitation_method). if elicitation_method: Session.add(elicitation_method) Session.commit() return elicitation_method 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()}
def update(self, id): """Update a phonology and return it. :URL: ``PUT /phonologies/id`` :Request body: JSON object representing the phonology with updated attribute values. :param str id: the ``id`` value of the phonology to be updated. :returns: the updated phonology model. """ phonology = h.eagerload_phonology(Session.query(Phonology)).get(int(id)) if phonology: try: schema = PhonologySchema() values = json.loads(unicode(request.body, request.charset)) state = h.get_state_object(values) state.id = id data = schema.to_python(values, state) phonology_dict = phonology.get_dict() phonology = update_phonology(phonology, data) # phonology will be False if there are no changes (cf. update_phonology). if phonology: backup_phonology(phonology_dict) Session.add(phonology) Session.commit() phonology.save_script() return phonology 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 collection and return it. :URL: ``PUT /collections/id`` :Request body: JSON object representing the collection with updated attribute values. :param str id: the ``id`` value of the collection to be updated. :returns: the updated collection model. """ collection = h.eagerload_collection(Session.query(Collection), eagerload_forms=True).get(int(id)) if collection: unrestricted_users = h.get_unrestricted_users() user = session['user'] if h.user_is_authorized_to_access_model(user, collection, unrestricted_users): try: schema = CollectionSchema() values = json.loads(unicode(request.body, request.charset)) collections_referenced = get_collections_referenced( values['contents'], user, unrestricted_users, id) values = add_contents_unpacked_to_values( values, collections_referenced) values = add_form_ids_list_to_values(values) state = h.get_state_object(values) data = schema.to_python(values, state) collection_dict = collection.get_full_dict() collection, restricted, contents_changed = update_collection( collection, data, collections_referenced) # collection will be False if there are no changes (cf. update_collection). if collection: backup_collection(collection_dict) update_collections_that_reference_this_collection( collection, self.query_builder, restricted=restricted, contents_changed=contents_changed) Session.add(collection) Session.commit() return collection.get_full_dict() 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 CircularCollectionReferenceError, e: response.status_int = 400 return { 'error': u'Circular collection reference error: collection %d references collection %d.' % (id, e.args[0]) } except InvalidCollectionReferenceError, e: response.status_int = 400 return { 'error': u'Invalid collection reference error: there is no collection with id %d' % e.args[0] } except UnauthorizedCollectionReferenceError: response.status_int = 403 return { 'error': u'Unauthorized collection reference error: you are not authorized to access collection %d' % e.args[0] }