- @authenticate
- def _update(self, query, db_keys):
- if self.json_args is None:
- raises.BadRequest(message.no_body())
-
- # check old data exist
- from_data = yield self._eval_db_find_one(query)
- if from_data is None:
- raises.NotFound(message.not_found(self.table, query))
-
- data = self.table_cls.from_dict(from_data)
- # check new data exist
- equal, new_query = self._update_query(db_keys, data)
- if not equal:
- to_data = yield self._eval_db_find_one(new_query)
- if to_data is not None:
- raises.Forbidden(message.exist(self.table, new_query))
-
- # we merge the whole document """
- edit_request = self._update_requests(data)
-
- """ Updating the DB """
- yield self._eval_db(self.table, 'update', query, edit_request,
- check_keys=False)
- edit_request['_id'] = str(data._id)
- self.finish_request(edit_request)
+ @check.authenticate
+ @check.no_body
+ @check.not_exist
+ @check.updated_one_not_exist
+ def _update(self, data, query=None, **kwargs):
+ data = self.table_cls.from_dict(data)
+ update_req = self._update_requests(data)
+ yield dbapi.db_update(self.table, query, update_req)
+ update_req['_id'] = str(data._id)
+ self.finish_request(update_req)
+
+ @check.authenticate
+ @check.no_body
+ @check.not_exist
+ @check.updated_one_not_exist
+ def pure_update(self, data, query=None, **kwargs):
+ data = self.table_cls.from_dict(data)
+ update_req = self._update_requests(data)
+ yield dbapi.db_update(self.table, query, update_req)
+ self.finish_request()