Esempio n. 1
0
def get_shortened_url(request):
    """
    Shortens url with the help of a python lib

    :param request: current request of the server
    :return: dictionary with shortend url
    """
    LOG.debug("Shorten URL")
    return generate_short_url(request.validated['url'])
Esempio n. 2
0
def __create_issue_dict(db_issue: Issue, app_url: str) -> dict:
    """
    Returns dictionary with several information about the given issue

    :param db_issue: database row of issue
    :param app_url: current applications url
    :return: dict()
    """
    short_url_dict = generate_short_url(app_url + '/discuss/' + db_issue.slug)
    url = short_url_dict['url'] if len(
        short_url_dict['url']) > 0 else app_url + '/discuss/' + db_issue.slug

    # we do nto have to check for clicked arguments, cause arguments consist out of statements
    statements = [
        el.statement_uid
        for el in DBDiscussionSession.query(StatementToIssue).filter_by(
            issue_uid=db_issue.uid).all()
    ]
    db_clicked_statements = DBDiscussionSession.query(ClickedStatement).filter(
        ClickedStatement.statement_uid.in_(statements)).all()

    authors_clicked_statement = [
        click.author_uid for click in db_clicked_statements
    ]
    db_authors_len = DBDiscussionSession.query(User).filter(
        User.uid.in_(authors_clicked_statement)).count()

    prepared_dict = {
        'uid': db_issue.uid,
        'title': db_issue.title,
        'url': '/' + db_issue.slug,
        'short_url': url,
        'date': db_issue.date.format('DD.MM.YY HH:mm'),
        'count_of_statements': len(statements),
        'is_enabled': not db_issue.is_disabled,
        'is_public': not db_issue.is_private,
        'is_writable': not db_issue.is_read_only,
        'participants': db_authors_len,
        'lang': {
            'is_de': db_issue.lang == 'de',
            'is_en': db_issue.lang == 'en',
        }
    }
    return prepared_dict
Esempio n. 3
0
    def test_generate_short_url(self):
        url = 'https://dbas.cs.uni-duesseldorf.de'
        db_url = DBDiscussionSession.query(ShortLinks).filter_by(
            long_url=url).first()
        self.assertIsNone(db_url)

        pdict = generate_short_url(url)

        self.assertIn('url', pdict)
        self.assertIn('service', pdict)
        self.assertIn('service_url', pdict)
        self.assertIn('service_text', pdict)
        self.assertNotEqual(len(pdict['service_text']), 0)

        db_url = DBDiscussionSession.query(ShortLinks).filter_by(
            long_url=url).first()
        if len(pdict['url']) > 0:
            self.assertIsNotNone(db_url)
        else:
            self.assertIsNone(db_url)

        # Remove generated ShortLink
        DBDiscussionSession.query(ShortLinks).filter_by(long_url=url).delete()