def delete(self): """Remove a question from the datastore in response to DELETE.""" key = self.request.get('key') if not self.assert_xsrf_token_or_fail( self.request, self.XSRF_TOKEN, {'key': key}): return if not CourseOutlineRights.can_delete(self): transforms.send_json_response( self, 401, 'Access denied.', {'key': key}) return question = QuestionDAO.load(key) if not question: transforms.send_json_response( self, 404, 'Question not found.', {'key': key}) return used_by = QuestionDAO.used_by(question.id) if used_by: group_names = ['"%s"' % x for x in used_by] transforms.send_json_response( self, 403, ('Question in use by question groups:\n%s.\nPlease delete it ' 'from those groups and try again.') % ',\n'.join(group_names), {'key': key}) return QuestionDAO.delete(question) transforms.send_json_response(self, 200, 'Deleted.')
def delete(self): """Remove a question from the datastore in response to DELETE.""" key = self.request.get('key') if not self.assert_xsrf_token_or_fail(self.request, self.XSRF_TOKEN, {'key': key}): return if not CourseOutlineRights.can_delete(self): transforms.send_json_response(self, 401, 'Access denied.', {'key': key}) return question = QuestionDAO.load(key) if not question: transforms.send_json_response(self, 404, 'Question not found.', {'key': key}) return used_by = QuestionDAO.used_by(question.id) if used_by: group_names = ['"%s"' % x for x in used_by] transforms.send_json_response( self, 403, ('Question in use by question groups:\n%s.\nPlease delete it ' 'from those groups and try again.') % ',\n'.join(group_names), {'key': key}) return QuestionDAO.delete(question) transforms.send_json_response(self, 200, 'Deleted.')
def is_deletion_allowed(self, question): used_by = QuestionDAO.used_by(question.id) if used_by: group_names = sorted(['"%s"' % x.description for x in used_by]) transforms.send_json_response( self, 403, ('Question in use by question groups:\n%s.\nPlease delete it ' 'from those groups and try again.') % ',\n'.join(group_names), {'key': question.id}) return False else: return True