def valid_conclusion(request): """ Given a conclusion id, query the object from the database and return it in the request. :param request: :return: """ conclusion_id = request.json_body.get('conclusion_id') issue = request.validated.get('issue') _tn = Translator(get_language_from_cookie(request)) if not issue: find_issue_in_request = issue_handler.get_issue_id(request) if find_issue_in_request: issue = DBDiscussionSession.query(Issue).get( issue_handler.get_issue_id(request)) else: add_error(request, 'Issue is missing', _tn.get(_.issueNotFound)) return False if conclusion_id and isinstance(conclusion_id, int): db_statement2issue = DBDiscussionSession.query( StatementToIssue).filter( StatementToIssue.issue_uid == issue.uid, StatementToIssue.statement_uid == conclusion_id).first() if db_statement2issue: db_conclusion = DBDiscussionSession.query(Statement).filter_by( uid=conclusion_id, is_disabled=False).first() if db_conclusion: request.validated['conclusion'] = db_conclusion return True add_error(request, 'Conclusion id is missing', _tn.get(_.conclusionIsMissing)) return False
def test_get_issue_id(self): request = testing.DummyRequest(matchdict={'issue': 1}) response = ih.get_issue_id(request) self.assertEqual(1, response) request = testing.DummyRequest(params={'issue': 2}) response = ih.get_issue_id(request) self.assertEqual(2, response) request = testing.DummyRequest(session={'issue': 3}) response = ih.get_issue_id(request) self.assertEqual(3, response) request = testing.DummyRequest(json_body={'issue': 4}) response = ih.get_issue_id(request) self.assertEqual(4, response)
def __get_issue(request: Request, slug: str, db_last_topic: Issue) -> Issue: """ :param request: :param slug: :param db_last_topic: :return: """ if 'slug' in request.matchdict: slug = request.matchdict['slug'] if not isinstance(request.matchdict['slug'], str) and len(request.matchdict['slug']) > 0: slug = request.matchdict['slug'][0] if not slug and db_last_topic: issue = db_last_topic elif slug: issue = issue_handler.get_id_of_slug(slug) else: issue = issue_handler.get_issue_id(request) if not issue: raise HTTPNotFound() if isinstance(issue, int): db_issue = DBDiscussionSession.query(Issue).get(issue) else: db_issue = issue return db_issue
def test_get_issue_id(self): request = construct_dummy_request(match_dict={'issue': 1}) issue1 = ih.get_issue_id(request) self.assertEqual(issue1, 1) request = testing.DummyRequest(params={'issue': 2}) issue2 = ih.get_issue_id(request) self.assertEqual(issue2, 2) request = testing.DummyRequest(session={'issue': 3}) issue3 = ih.get_issue_id(request) self.assertEqual(issue3, 3) request = testing.DummyRequest(json_body={'issue': 4}) issue4 = ih.get_issue_id(request) self.assertEqual(issue4, 4)
def prepare_request_dict(request: Request): """ :param request: :return: """ logger('Renderer', 'def') db_user = request.validated['user'] nickname = db_user.nickname if db_user.nickname != nick_of_anonymous_user else None db_last_topic = history_handler.get_saved_issue(db_user) slug = None if 'slug' in request.matchdict: slug = request.matchdict['slug'] if not isinstance(request.matchdict['slug'], str) and len(request.matchdict['slug']) > 0: slug = request.matchdict['slug'][0] if not slug and db_last_topic: issue = db_last_topic elif slug: issue = issue_handler.get_id_of_slug(slug) else: issue = issue_handler.get_issue_id(request) ui_locales = get_language_from_cookie(request) if not issue: raise HTTPNotFound() if isinstance(issue, int): db_issue = DBDiscussionSession.query(Issue).get(issue) else: db_issue = issue issue_handler.save_issue_id_in_session(db_issue.uid, request) history = history_handler.handle_history(request, db_user, db_issue) set_language_for_visit(request) return { 'nickname': nickname, 'user': db_user, 'path': request.path, 'app_url': request.application_url, 'matchdict': request.matchdict, 'params': request.params, 'session': request.session, 'registry': request.registry, 'issue': db_issue, 'history': history, 'ui_locales': ui_locales }
def valid_any_issue_by_id(request): """ Query issue from database and put it into the request, even if it is disabled :param request: :return: """ issue_id = issue_handler.get_issue_id(request) if issue_id: db_issue: Issue = DBDiscussionSession.query(Issue).get(issue_id) request.validated['issue'] = db_issue return True add_error(request, 'Invalid issue {}'.format(issue_id)) return False
def valid_issue_by_id(request): """ Query issue from database and put it into the request. :param request: :return: """ issue_id = issue_handler.get_issue_id(request) if issue_id: db_issue: Issue = DBDiscussionSession.query(Issue).get(issue_id) if db_issue and db_issue.is_disabled: add_error(request, 'Issue no longer available', status_code=410) return False else: request.validated['issue'] = db_issue return True add_error(request, 'Invalid issue') return False