Exemplo n.º 1
0
    def test_resolve_issue_uid_to_slug(self):
        # id for issue
        self.assertEqual(lib.resolve_issue_uid_to_slug(uid=1), 'town-has-to-cut-spending')
        self.assertEqual(lib.resolve_issue_uid_to_slug(uid=5), 'unterstutzung-der-sekretariate')

        # id for no issue
        self.assertEqual(lib.resolve_issue_uid_to_slug(uid=0), None)
        self.assertEqual(lib.resolve_issue_uid_to_slug(uid=22222222), None)
        self.assertEqual(lib.resolve_issue_uid_to_slug(uid=-4), None)
Exemplo n.º 2
0
def find_statements_fn(request):
    """
    Receives search requests, queries database to find all occurrences and returns these results with the correct URL
    to get directly access to the location in the discussion.

    :param request:
    :return: json conform dictionary of all occurrences

    """
    api_data = dict()
    api_data["issue"] = request.matchdict["issue"]
    api_data["mode"] = request.matchdict["type"]
    api_data["value"] = request.matchdict["value"]
    results = dbas.fuzzy_search(request, api_data=api_data)

    issue_uid = api_data["issue"]

    return_dict = dict()
    return_dict["distance_name"] = results["distance_name"]
    return_dict["values"] = []

    for statement in results["values"]:
        statement_uid = statement["statement_uid"]
        statement["issue"] = {
            "uid": issue_uid,
            "slug": resolve_issue_uid_to_slug(issue_uid)
        }
        statement["url"] = url_to_statement(
            api_data["issue"],
            statement_uid)  # TODO I think I do not use this any more
        statement["arguments"] = get_all_arguments_with_text_by_statement_id(
            statement_uid)
        return_dict["values"].append(statement)
    return return_dict
Exemplo n.º 3
0
def url_to_statement(issue_uid, statement_uid, agree=True):
    """
    Generate URL to given statement_uid in specific issue (by slug).
    Used to directly jump into the discussion.

    :param issue_uid: uid of current issue
    :type issue_uid: id
    :param statement_uid: Statement id to generate the link to
    :type statement_uid: int
    :param agree: Indicate (dis-)agreement with a statement
    :type agree: boolean
    :return: direct URL to jump to the provided statement
    :rtype: str
    """
    if isinstance(agree, str):
        if agree == "true":
            mode = "agree"
        else:
            mode = "disagree"
    else:
        mode = "agree" if agree is True else "disagree"
    slug = resolve_issue_uid_to_slug(issue_uid)
    url_manager = UrlManager(slug=slug)
    return "api/" + url_manager.get_url_for_justifying_statement(
        statement_uid, mode)
Exemplo n.º 4
0
def get_arguments_by_statement_uid(db_statement: Statement, db_issue: Issue) -> dict:
    """
    Collects every argument which uses the given statement

    :param db_statement: Statement
    :param db_issue: issue
    :rtype: dict
    :return: prepared collection with several arguments
    """
    slug = resolve_issue_uid_to_slug(db_issue.uid)
    _um = UrlManager(slug)
    return {'arguments': get_all_arguments_with_text_and_url_by_statement_id(db_statement, _um, True, is_jump=True)}