From 00dd467f2b98efa2a3a742f2ee79af8a870a3f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sven=20Steinhei=C3=9Fer?= Date: Fri, 10 Mar 2017 12:12:10 +0100 Subject: [PATCH] Link to love recipients explore page --- requirements.txt | 1 + tests/util/markup_test.py | 26 ++++++++++++++++++++++++++ themes/default/static/css/style.css | 5 +++++ util/markup.py | 11 +++++++++++ views/web.py | 12 +++++++++++- 5 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 tests/util/markup_test.py create mode 100644 util/markup.py diff --git a/requirements.txt b/requirements.txt index 2a4ec02..4d15922 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,7 @@ # This requirements file lists all dependecies for this project. # Run 'make lib' to install these dependencies in this project's lib directory. boto==2.22.0 +dominate==2.3.1 Flask==0.10.1 Flask-Themes2==0.1.4 itsdangerous==0.24 diff --git a/tests/util/markup_test.py b/tests/util/markup_test.py new file mode 100644 index 0000000..9138e2f --- /dev/null +++ b/tests/util/markup_test.py @@ -0,0 +1,26 @@ +# -*- coding: utf-8 -*- +import unittest + +from testing.util import get_test_app +from util.markup import explore_links + + +class ExploreLinksTest(unittest.TestCase): + """Tests util.email.explore_links()""" + + def setUp(self): + self.app = get_test_app().app + self.app.config.update(SERVER_NAME='foo.com') + self.app_context = self.app.app_context() + self.app_context.push() + + def tearDown(self): + self.app.config.update(SERVER_NAME=None) + self.app_context.pop() + + def test_empty_list(self): + self.assertEqual(explore_links([], self.app_context), []) + + def test_explore_links(self): + links = explore_links(['darwin'], self.app_context) + self.assertEqual(links, ['darwin']) diff --git a/themes/default/static/css/style.css b/themes/default/static/css/style.css index 56fc48a..1621c59 100644 --- a/themes/default/static/css/style.css +++ b/themes/default/static/css/style.css @@ -269,3 +269,8 @@ h4 { .pagination-result { text-align: center; } + +.alert-success a { + color: #468847; + text-decoration: underline; +} diff --git a/util/markup.py b/util/markup.py new file mode 100644 index 0000000..6cda058 --- /dev/null +++ b/util/markup.py @@ -0,0 +1,11 @@ +# -*- coding: utf-8 -*- +from dominate.tags import a +from flask import url_for + + +def explore_links(employees, app_context): + with app_context: + return [ + a(employee, href=url_for('explore', user=employee)).render() + for employee in employees + ] diff --git a/views/web.py b/views/web.py index 281eb85..aee6b3e 100644 --- a/views/web.py +++ b/views/web.py @@ -7,10 +7,12 @@ from datetime import timedelta from flask import abort +from flask import current_app from flask import flash from flask import redirect from flask import request from flask import url_for +from markupsafe import Markup import logic.alias import logic.department @@ -34,6 +36,7 @@ from util.decorators import admin_required from util.decorators import csrf_protect from util.decorators import user_required +from util.markup import explore_links from util.recipient import sanitize_recipients from util.render import render_template from views import common @@ -214,7 +217,14 @@ def love(): try: logic.love.send_loves(recipients, message, secret=secret) - flash('{}ove sent to {}!'.format('Secret l' if secret else 'L', recipients_display_str)) + links = explore_links(recipients, current_app.app_context()) + flash( + Markup('{initial}ove sent to {recipients}!'.format( + initial='Secret l' if secret else 'L', + recipients=', '.join(links), + )) + ) + return redirect(url_for('home')) except TaintedLove as exc: if exc.is_error: