You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by je...@apache.org on 2015/10/15 14:48:43 UTC

[1/3] allura git commit: [#7984] remove unused columns

Repository: allura
Updated Branches:
  refs/heads/master 00110b12e -> e97c5ffe5


[#7984] remove unused columns


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

Branch: refs/heads/master
Commit: 68786d38cdf01b5138fbf30ee5ae65932733c88a
Parents: 151c63b
Author: Dave Brondsema <da...@brondsema.net>
Authored: Tue Oct 13 16:14:54 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Oct 13 16:19:05 2015 -0400

----------------------------------------------------------------------
 Allura/allura/lib/widgets/subscriptions.py | 8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/68786d38/Allura/allura/lib/widgets/subscriptions.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/subscriptions.py b/Allura/allura/lib/widgets/subscriptions.py
index 5d1ebea..db6c51d 100644
--- a/Allura/allura/lib/widgets/subscriptions.py
+++ b/Allura/allura/lib/widgets/subscriptions.py
@@ -42,13 +42,7 @@ class _SubscriptionTable(ew.TableField):
         project_name = ffw.DisplayOnlyField(
             label='Project', show_label=True, with_hidden_input=False)
         mount_point = ffw.DisplayOnlyField(
-            label='App', show_label=True, with_hidden_input=False)
-        topic = ffw.DisplayOnlyField(
-            label='Topic', show_label=True, with_hidden_input=False)
-        type = ffw.DisplayOnlyField(
-            label='Type', show_label=True, with_hidden_input=False)
-        frequency = ffw.DisplayOnlyField(
-            label='Frequency', show_label=True, with_hidden_input=False)
+            label='Tool', show_label=True, with_hidden_input=False)
         artifact_title = ew.LinkField(
             label='Artifact', show_label=True, plaintext_if_no_href=True)
         # unsubscribe = SubmitButton()


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

Posted by je...@apache.org.
[#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/master
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 = []


[2/3] allura git commit: [#7984] force location of user subscriptions form elements

Posted by je...@apache.org.
[#7984] force location of user subscriptions form elements


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

Branch: refs/heads/master
Commit: 151c63b630a7373669cbd20ea8f8b37d7fed0439
Parents: 00110b1
Author: Dave Brondsema <da...@brondsema.net>
Authored: Mon Oct 12 10:27:55 2015 -0400
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Tue Oct 13 16:19:05 2015 -0400

----------------------------------------------------------------------
 Allura/allura/lib/widgets/subscriptions.py      | 24 +++++---
 .../templates/widgets/user_subs_form.html       | 61 ++++++++++++++++++++
 2 files changed, 76 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/allura/blob/151c63b6/Allura/allura/lib/widgets/subscriptions.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/subscriptions.py b/Allura/allura/lib/widgets/subscriptions.py
index 4e3324a..5d1ebea 100644
--- a/Allura/allura/lib/widgets/subscriptions.py
+++ b/Allura/allura/lib/widgets/subscriptions.py
@@ -58,17 +58,23 @@ class _SubscriptionTable(ew.TableField):
 class SubscriptionForm(CsrfForm):
     defaults = dict(
         ew.SimpleForm.defaults,
+        id='user-subs-form',
         submit_text='Save')
 
-    class fields(ew_core.NameList):
-        subscriptions = _SubscriptionTable()
-        email_format = ew.SingleSelectField(
-            name='email_format',
-            label='Email Format',
-            options=[
-                ew.Option(py_value='plain', label='Plain Text'),
-                ew.Option(py_value='html', label='HTML'),
-                ew.Option(py_value='both', label='Combined')])
+    template = 'jinja:allura:templates/widgets/user_subs_form.html'
+
+    @property
+    def fields(self):
+        return [
+            _SubscriptionTable(name='subscriptions'),
+            ew.SingleSelectField(
+                name='email_format',
+                show_label=False,
+                options=[
+                    ew.Option(py_value='plain', label='Plain Text'),
+                    ew.Option(py_value='html', label='HTML'),
+                    ew.Option(py_value='both', label='Combined')]),
+        ]
 
 
 class SubscribeForm(ew.SimpleForm):

http://git-wip-us.apache.org/repos/asf/allura/blob/151c63b6/Allura/allura/templates/widgets/user_subs_form.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/user_subs_form.html b/Allura/allura/templates/widgets/user_subs_form.html
new file mode 100644
index 0000000..39aecbc
--- /dev/null
+++ b/Allura/allura/templates/widgets/user_subs_form.html
@@ -0,0 +1,61 @@
+{#-
+       Licensed to the Apache Software Foundation (ASF) under one
+       or more contributor license agreements.  See the NOTICE file
+       distributed with this work for additional information
+       regarding copyright ownership.  The ASF licenses this file
+       to you under the Apache License, Version 2.0 (the
+       "License"); you may not use this file except in compliance
+       with the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+       Unless required by applicable law or agreed to in writing,
+       software distributed under the License is distributed on an
+       "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+       KIND, either express or implied.  See the License for the
+       specific language governing permissions and limitations
+       under the License.
+-#}
+
+<form {{widget.j2_attrs(dict(
+      name=rendered_name,
+      id=id,
+      method=method,
+      action=action,
+      enctype=enctype), attrs)}}>
+
+    {% set subs_table = widget.fields[0] %}
+    {{ subs_table.display(**widget.context_for(subs_table)) }}
+
+    {# use a table so it matches width and placement of big table above #}
+    <table class="user_subs_opts">
+    <tr><td>
+        <div class="user_sub_email_format">
+        Email Format:
+        {% set email_format = widget.fields[1] %}
+        {{ email_format.display(**widget.context_for(email_format)) }}
+        </div>
+        {% for hf in widget.hidden_fields %}
+            {{ hf.display(**widget.context_for(hf)) }}
+        {% endfor %}
+        {% for b in buttons %}
+            {{ b.display() }}
+        {% endfor %}
+    </td></tr>
+    </table>
+</form>
+
+<style type="text/css">
+    #user-subs-form table:first-child {
+        margin-bottom: 10px;
+    }
+    #user-subs-form table.user_subs_opts td {
+        border-bottom: none;
+    }
+    .user_sub_email_format {
+        float: left;
+    }
+    .user_subs_opts input[type=submit] {
+        float: right;
+    }
+</style>
\ No newline at end of file