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'])
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
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()