You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by br...@apache.org on 2015/10/16 19:07:10 UTC

[14/46] allura git commit: [#7984] skip tools that never have notications; better text within the table

[#7984] skip tools that never have notications; better text within the table


Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/e97c5ffe
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/e97c5ffe
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/e97c5ffe

Branch: refs/heads/db/7919
Commit: e97c5ffe587b5e49a63fbee3800265df1db96a94
Parents: 68786d3
Author: Dave Brondsema <da...@brondsema.net>
Authored: Tue Oct 13 16:52:08 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Oct 14 10:01:15 2015 -0400

----------------------------------------------------------------------
 Allura/allura/app.py                        |  3 +++
 Allura/allura/controllers/auth.py           | 17 ++++++++++++-----
 Allura/allura/ext/admin/admin_main.py       |  1 +
 Allura/allura/ext/search/search_main.py     |  1 +
 Allura/allura/ext/user_profile/user_main.py |  1 +
 Allura/allura/lib/widgets/subscriptions.py  |  4 ++--
 Allura/allura/tests/functional/test_auth.py | 12 ++++++------
 ForgeActivity/forgeactivity/main.py         |  1 +
 ForgeChat/forgechat/main.py                 |  1 +
 ForgeLink/forgelink/link_main.py            |  1 +
 ForgeUserStats/forgeuserstats/main.py       |  1 +
 11 files changed, 30 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/app.py
----------------------------------------------------------------------
diff --git a/Allura/allura/app.py b/Allura/allura/app.py
index bd6f36b..4cc47b1 100644
--- a/Allura/allura/app.py
+++ b/Allura/allura/app.py
@@ -216,6 +216,8 @@ class Application(object):
         can not be added to the project by the user. Default value is float("inf").
     :cvar bool hidden: Default is False, Application is not hidden from the
         list of a project's installed tools.
+    :cvar bool has_notifications: Default is True, if set to False then application will not
+        be listed on user subscriptions table.
     :cvar str tool_description: Text description of this Application.
     :cvar bool relaxed_mount_points: Set to True to relax the default mount point
         naming restrictions for this Application. Default is False. See
@@ -272,6 +274,7 @@ class Application(object):
     relaxed_mount_points = False
     ordinal = 0
     hidden = False
+    has_notifications = True
     icons = {
         24: 'images/admin_24.png',
         32: 'images/admin_32.png',

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/controllers/auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/controllers/auth.py b/Allura/allura/controllers/auth.py
index e3c4d38..f2043af 100644
--- a/Allura/allura/controllers/auth.py
+++ b/Allura/allura/controllers/auth.py
@@ -868,15 +868,19 @@ class SubscriptionsController(BaseController):
                 continue
             if app_config is None:
                 continue
+            app = app_config.load()
+            if not app.has_notifications:
+                continue
 
             subscriptions.append(dict(
                 subscription_id=mb._id,
                 project_id=project._id,
                 app_config_id=mb.app_config_id,
                 project_name=project.name,
-                mount_point=app_config.options['mount_point'],
+                tool=app_config.options['mount_label'],
                 artifact_title=dict(
-                    text=mb.artifact_title, href=mb.artifact_url),
+                    text='Everything' if mb.artifact_title == 'All artifacts' else mb.artifact_title,
+                    href=mb.artifact_url),
                 topic=mb.topic,
                 type=mb.type,
                 frequency=mb.frequency.unit,
@@ -902,20 +906,23 @@ class SubscriptionsController(BaseController):
         for tool in my_tools:
             if tool['_id'] in my_tools_subscriptions:
                 continue  # We have already subscribed to this tool.
+            app = tool.load()
+            if not app.has_notifications:
+                continue
 
             subscriptions.append(
                 dict(tool_id=tool._id,
                      user_id=c.user._id,
                      project_id=tool.project_id,
                      project_name=my_projects[tool.project_id].name,
-                     mount_point=tool.options['mount_point'],
-                     artifact_title='No subscription',
+                     tool=tool.options['mount_label'],
+                     artifact_title='Everything',
                      topic=None,
                      type=None,
                      frequency=None,
                      artifact=None))
 
-        subscriptions.sort(key=lambda d: (d['project_name'], d['mount_point']))
+        subscriptions.sort(key=lambda d: (d['project_name'], d['tool']))
         provider = plugin.AuthenticationProvider.get(request)
         menu = provider.account_navigation()
         return dict(

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/ext/admin/admin_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/admin_main.py b/Allura/allura/ext/admin/admin_main.py
index dcda9be..7affa3c 100644
--- a/Allura/allura/ext/admin/admin_main.py
+++ b/Allura/allura/ext/admin/admin_main.py
@@ -86,6 +86,7 @@ class AdminApp(Application):
         48: 'images/admin_48.png'
     }
     exportable = True
+    has_notifications = False
 
     def __init__(self, project, config):
         Application.__init__(self, project, config)

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/ext/search/search_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/search/search_main.py b/Allura/allura/ext/search/search_main.py
index 99c5dfc..9f8a92b 100644
--- a/Allura/allura/ext/search/search_main.py
+++ b/Allura/allura/ext/search/search_main.py
@@ -40,6 +40,7 @@ class SearchApp(Application):
     __version__ = version.__version__
     max_instances = 0
     hidden = True
+    has_notifications = False
     sitemap = []
 
     def __init__(self, project, config):

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/ext/user_profile/user_main.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/user_profile/user_main.py b/Allura/allura/ext/user_profile/user_main.py
index f676bed..9be9276 100644
--- a/Allura/allura/ext/user_profile/user_main.py
+++ b/Allura/allura/ext/user_profile/user_main.py
@@ -59,6 +59,7 @@ class UserProfileApp(Application):
     __version__ = version.__version__
     tool_label = 'Profile'
     max_instances = 0
+    has_notifications = False
     icons = {
         24: 'images/home_24.png',
         32: 'images/home_32.png',

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/lib/widgets/subscriptions.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/subscriptions.py b/Allura/allura/lib/widgets/subscriptions.py
index db6c51d..909a506 100644
--- a/Allura/allura/lib/widgets/subscriptions.py
+++ b/Allura/allura/lib/widgets/subscriptions.py
@@ -41,10 +41,10 @@ class _SubscriptionTable(ew.TableField):
     class fields(ew_core.NameList):
         project_name = ffw.DisplayOnlyField(
             label='Project', show_label=True, with_hidden_input=False)
-        mount_point = ffw.DisplayOnlyField(
+        tool = ffw.DisplayOnlyField(
             label='Tool', show_label=True, with_hidden_input=False)
         artifact_title = ew.LinkField(
-            label='Artifact', show_label=True, plaintext_if_no_href=True)
+            label='Item(s)', show_label=True, plaintext_if_no_href=True)
         # unsubscribe = SubmitButton()
         subscribed = ew.Checkbox(suppress_label=True)
 

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/Allura/allura/tests/functional/test_auth.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/functional/test_auth.py b/Allura/allura/tests/functional/test_auth.py
index 5ad86ea..d74ebf0 100644
--- a/Allura/allura/tests/functional/test_auth.py
+++ b/Allura/allura/tests/functional/test_auth.py
@@ -582,20 +582,20 @@ class TestAuth(TestController):
         subscriptions = M.Mailbox.query.find(dict(
             user_id=c.user._id, is_flash=False)).all()
         # make sure page actually lists all the user's subscriptions
-        assert len(
-            subscriptions) > 0, 'Test user has no subscriptions, cannot verify that they are shown'
+        assert len(subscriptions) > 0, 'Test user has no subscriptions, cannot verify that they are shown'
         for m in subscriptions:
             assert m._id in r, "Page doesn't list subscription for Mailbox._id = %s" % m._id
 
         # make sure page lists all tools which user can subscribe
         user = M.User.query.get(username='test-admin')
-        tools = []
         for p in user.my_projects():
             for ac in p.app_configs:
                 if not M.Mailbox.subscribed(project_id=p._id, app_config_id=ac._id):
-                    tools.append(ac._id)
-        for tool_id in tools:
-            assert tool_id in r, "Page doesn't list tool with app_config_id = %s" % tool_id
+                    if ac.tool_name in ('activity', 'admin', 'search', 'userstats', 'profile'):
+                        # these have has_notifications=False
+                        assert ac._id not in r, "Page lists tool %s but it should not" % ac.tool_name
+                    else:
+                        assert ac._id in r, "Page doesn't list tool %s" % ac.tool_name
 
     def _find_subscriptions_form(self, r):
         form = None

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/ForgeActivity/forgeactivity/main.py
----------------------------------------------------------------------
diff --git a/ForgeActivity/forgeactivity/main.py b/ForgeActivity/forgeactivity/main.py
index 9bb6029..845eb9e 100644
--- a/ForgeActivity/forgeactivity/main.py
+++ b/ForgeActivity/forgeactivity/main.py
@@ -52,6 +52,7 @@ class ForgeActivityApp(Application):
     default_mount_point = 'activity'
     max_instances = 0
     searchable = False
+    has_notifications = False
 
     def __init__(self, project, config):
         Application.__init__(self, project, config)

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/ForgeChat/forgechat/main.py
----------------------------------------------------------------------
diff --git a/ForgeChat/forgechat/main.py b/ForgeChat/forgechat/main.py
index 39a6807..bdd373a 100644
--- a/ForgeChat/forgechat/main.py
+++ b/ForgeChat/forgechat/main.py
@@ -59,6 +59,7 @@ class ForgeChatApp(Application):
     config_options = Application.config_options + [
         ConfigOption('channel', str, ''),
     ]
+    has_notifications = False
     icons = {
         24: 'images/chat_24.png',
         32: 'images/chat_32.png',

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/ForgeLink/forgelink/link_main.py
----------------------------------------------------------------------
diff --git a/ForgeLink/forgelink/link_main.py b/ForgeLink/forgelink/link_main.py
index 735816d..dde7a02 100644
--- a/ForgeLink/forgelink/link_main.py
+++ b/ForgeLink/forgelink/link_main.py
@@ -59,6 +59,7 @@ class ForgeLinkApp(Application):
     config_on_install = ['url']
     searchable = True
     exportable = True
+    has_notifications = False
     tool_label = 'External Link'
     default_mount_label = 'Link name'
     default_mount_point = 'link'

http://git-wip-us.apache.org/repos/asf/allura/blob/e97c5ffe/ForgeUserStats/forgeuserstats/main.py
----------------------------------------------------------------------
diff --git a/ForgeUserStats/forgeuserstats/main.py b/ForgeUserStats/forgeuserstats/main.py
index eb25140..daa19ef 100644
--- a/ForgeUserStats/forgeuserstats/main.py
+++ b/ForgeUserStats/forgeuserstats/main.py
@@ -97,6 +97,7 @@ class ForgeUserStatsApp(Application):
         'admin': 'Toggle stats visibility.',
     }
     max_instances = 0
+    has_notifications = False
     ordinal = 15
     config_options = Application.config_options
     default_external_feeds = []