Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
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
    }
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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