def put_list(self, request, response): if not self.authorized(request): logger.info("Unauthorized request.", extra={'location': request.url, 'details': repr(request.authorization)}) raise CustomUnauthorized() if request.mimetype != "application/json": logger.warning("Unsupported MIME type.", extra={'location': request.url, 'details': request.mimetype}) raise UnsupportedMediaType() try: data = json.load(request.stream) except (TypeError, ValueError): logger.warning("Wrong JSON.", extra={'location': request.url}) raise BadRequest() try: self.store.merge_list(data) except InvalidData: logger.warning("Invalid data.", exc_info=True, extra={'location': request.url, 'details': data}) raise BadRequest() response.status_code = 204
def delete_subchange(self, key): # Delete the subchange from the (sorted) list and reset the # history. for i in range(len(self._changes)): if self._changes[i].key == key: del self._changes[i] self.reset_history() logger.info("Reset history after deleting subchange '" + key + "'")
def delete_list(self, request, response): if not self.authorized(request): logger.info("Unauthorized request.", extra={'location': request.url, 'details': repr(request.authorization)}) raise CustomUnauthorized() self.store.delete_list() response.status_code = 204
def update_subchange(self, key, subchange): # Update the subchange inside the (sorted) list and, # regardless of its position in that list, reset the history. for i in range(len(self._changes)): if self._changes[i].key == key: self._changes[i] = subchange self.reset_history() logger.info("Reset history for user '" + self._submissions[subchange.submission].user + "' and task '" + self._submissions[subchange.submission].user + "' after updating subchange '" + key + "' for submission '" + subchange.submission + "'")
def delete(self, request, response, key): # Limit charset of keys. if re.match("^[A-Za-z0-9_]+$", key) is None: return NotFound() if key not in self.store: raise NotFound() if not self.authorized(request): logger.info("Unauthorized request.", extra={'location': request.url, 'details': repr(request.authorization)}) raise CustomUnauthorized() self.store.delete(key) response.status_code = 204
def create_subchange(self, key, subchange): # Insert the subchange at the right position inside the # (sorted) list and call the appropriate method (append_change # or reset_history) if len(self._changes) == 0 or \ subchange.time > self._changes[-1].time or \ (subchange.time == self._changes[-1].time and subchange.key > self._changes[-1].key): self._changes.append(subchange) self.append_change(subchange) else: for idx, val in enumerate(self._changes): if subchange.time < val.time or \ (subchange.time == val.time and subchange.key < val.key): self._changes.insert(idx, subchange) break self.reset_history() logger.info("Reset history for user '" + self._submissions[subchange.submission].user + "' and task '" + self._submissions[subchange.submission].user + "' after creating subchange '" + key + "' for submission '" + subchange.submission + "'")
def delete_subchange(self, key): # Delete the subchange from the (sorted) list and reset the # history. self._changes = filter(lambda a: a.key != key, self._changes) self.reset_history() logger.info("Reset history after deleting subchange '" + key + "'")