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 2016/11/30 21:41:31 UTC
[10/14] allura git commit: [#7981] frontend bugfix, cleanup,
and consolidation
[#7981] frontend bugfix, cleanup, and consolidation
Project: http://git-wip-us.apache.org/repos/asf/allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/allura/commit/55245f4d
Tree: http://git-wip-us.apache.org/repos/asf/allura/tree/55245f4d
Diff: http://git-wip-us.apache.org/repos/asf/allura/diff/55245f4d
Branch: refs/heads/db/7981
Commit: 55245f4debfb69b6e4b4f1a4ffcbf294b58a3b92
Parents: 8349db1
Author: Dave Brondsema <da...@brondsema.net>
Authored: Fri Nov 18 17:08:24 2016 -0500
Committer: Dave Brondsema <da...@brondsema.net>
Committed: Wed Nov 30 15:26:57 2016 -0500
----------------------------------------------------------------------
Allura/allura/lib/widgets/__init__.py | 4 +-
Allura/allura/lib/widgets/discuss.py | 26 ---------
Allura/allura/model/discuss.py | 2 +
Allura/allura/templates/widgets/discussion.html | 26 ---------
.../templates/widgets/discussion_header.html | 19 ------
.../allura/templates/widgets/threads_table.html | 7 +--
Allura/allura/tests/model/test_discussion.py | 7 ---
Allura/allura/tests/model/test_notification.py | 2 +-
.../forgediscussion/controllers/root.py | 30 ----------
.../discussion_widgets/forum_summary.html | 28 ---------
.../forgediscussion/widgets/__init__.py | 4 +-
.../forgediscussion/widgets/forum_widgets.py | 61 +++++++-------------
12 files changed, 30 insertions(+), 186 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/lib/widgets/__init__.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/__init__.py b/Allura/allura/lib/widgets/__init__.py
index 9d21e37..3e8e798 100644
--- a/Allura/allura/lib/widgets/__init__.py
+++ b/Allura/allura/lib/widgets/__init__.py
@@ -15,12 +15,12 @@
# specific language governing permissions and limitations
# under the License.
-from .discuss import Post, Thread, Discussion
+from .discuss import Post, Thread
from .subscriptions import SubscriptionForm
from .oauth_widgets import OAuthApplicationForm, OAuthRevocationForm
from .auth_widgets import LoginForm, ForgottenPasswordForm, DisableAccountForm
from .vote import VoteForm
__all__ = [
- 'Post', 'Thread', 'Discussion', 'SubscriptionForm', 'OAuthApplicationForm', 'OAuthRevocationForm', 'LoginForm',
+ 'Post', 'Thread', 'SubscriptionForm', 'OAuthApplicationForm', 'OAuthRevocationForm', 'LoginForm',
'ForgottenPasswordForm', 'DisableAccountForm', 'VoteForm']
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index 98f60ca..2d1fb1d 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -254,14 +254,6 @@ class Attachment(ew_core.Widget):
post = None
-class DiscussionHeader(HierWidget):
- template = 'jinja:allura:templates/widgets/discussion_header.html'
- params = ['value']
- value = None
- widgets = dict(
- edit_post=EditPost(submit_text='New Thread'))
-
-
class ThreadHeader(HierWidget):
template = 'jinja:allura:templates/widgets/thread_header.html'
defaults = dict(
@@ -516,21 +508,3 @@ class Thread(HierWidget):
}
});
''')
-
-
-class Discussion(HierWidget):
- template = 'jinja:allura:templates/widgets/discussion.html'
- defaults = dict(
- HierWidget.defaults,
- value=None,
- threads=None,
- show_subject=False,
- allow_create_thread=False)
- widgets = dict(
- discussion_header=DiscussionHeader(),
- edit_post=EditPost(submit_text='New Topic'),
- subscription_form=SubscriptionForm())
-
- def resources(self):
- for r in super(Discussion, self).resources():
- yield r
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/model/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/model/discuss.py b/Allura/allura/model/discuss.py
index 2af6146..257ac38 100644
--- a/Allura/allura/model/discuss.py
+++ b/Allura/allura/model/discuss.py
@@ -242,6 +242,8 @@ class Thread(Artifact, ActivityObject):
@property
def artifact(self):
+ # Threads attached to a wiki page, ticket, etc will have a .ref.artifact pointing to that WikiPage etc
+ # Threads that are part of a forum will not have that
if self.ref is None:
return self.discussion
return self.ref.artifact
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/templates/widgets/discussion.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/discussion.html b/Allura/allura/templates/widgets/discussion.html
deleted file mode 100644
index 82ee24c..0000000
--- a/Allura/allura/templates/widgets/discussion.html
+++ /dev/null
@@ -1,26 +0,0 @@
-{#-
- 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.
--#}
-{{widgets.subscription_form.display(value=value,
- threads=threads,
- action=value.url() + 'subscribe',
- allow_create_thread=allow_create_thread,
- show_subject=show_subject,
- limit=limit,
- page=page,
- count=count)}}
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/templates/widgets/discussion_header.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/discussion_header.html b/Allura/allura/templates/widgets/discussion_header.html
deleted file mode 100644
index b464bfa..0000000
--- a/Allura/allura/templates/widgets/discussion_header.html
+++ /dev/null
@@ -1,19 +0,0 @@
-{#-
- 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.
--#}
-<div>{{g.markdown.cached_convert(value, 'description')|safe}}</div>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/templates/widgets/threads_table.html
----------------------------------------------------------------------
diff --git a/Allura/allura/templates/widgets/threads_table.html b/Allura/allura/templates/widgets/threads_table.html
index bc20d29..873b537 100644
--- a/Allura/allura/templates/widgets/threads_table.html
+++ b/Allura/allura/templates/widgets/threads_table.html
@@ -22,7 +22,7 @@
<table class="forum-list clear">
<thead>
<tr>
- {% if not c.user.is_anonymous() %}
+ {% if not c.user.is_anonymous() and allow_subscriptions %}
<th>{{ g.icons['mail'].render(tag='span', title='Subscriptions') }}</th>
{% endif %}
<th class="topic">Topic</th>
@@ -34,10 +34,9 @@
<tbody class="forum-list">
{% for thread in value %}
<tr>
- {% if not c.user.is_anonymous() %}
+ {% if not c.user.is_anonymous() and allow_subscriptions %}
<td>
- <input type="checkbox" name="threads-{{loop.index0}}.subscription"
- {% if thread.subscribed() %}checked="checked"{% endif %}/>
+ <input type="checkbox" name="threads-{{loop.index0}}.subscription" {% if thread.subscribed() %}checked="checked"{% endif %} />
<input type="hidden" name="threads-{{loop.index0}}._id" value="{{thread._id}}"/>
</td>
{% endif %}
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/tests/model/test_discussion.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_discussion.py b/Allura/allura/tests/model/test_discussion.py
index b579d18..0258f38 100644
--- a/Allura/allura/tests/model/test_discussion.py
+++ b/Allura/allura/tests/model/test_discussion.py
@@ -67,7 +67,6 @@ def test_discussion_methods():
assert d.last_post == None
assert d.url().endswith('wiki/_discuss/')
assert d.index()['name_s'] == 'test'
- assert d.subscription() == None
assert d.find_posts().count() == 0
jsn = d.__json__()
assert jsn['name'] == d.name
@@ -104,12 +103,6 @@ def test_thread_methods():
assert 'wiki/_discuss/' in t.url()
assert t.index()['views_i'] == 0
- # FIXME
- assert not t.subscription
- t.subscription = True
- assert t.subscription
- t.subscription = False
- assert not t.subscription
assert t.post_count == 3
jsn = t.__json__()
assert '_id' in jsn
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/Allura/allura/tests/model/test_notification.py
----------------------------------------------------------------------
diff --git a/Allura/allura/tests/model/test_notification.py b/Allura/allura/tests/model/test_notification.py
index 820e22c..f4ba56e 100644
--- a/Allura/allura/tests/model/test_notification.py
+++ b/Allura/allura/tests/model/test_notification.py
@@ -188,7 +188,7 @@ class TestPostNotifications(unittest.TestCase):
ThreadLocalORMSession.flush_all()
M.MonQTask.list()
t = M.MonQTask.get()
- assert t.args[1] == self.pg.index_id()
+ assert_equal(t.args[1], [self.pg.index_id()])
def test_post_user_notification(self):
u = M.User.query.get(username='test-admin')
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/ForgeDiscussion/forgediscussion/controllers/root.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/controllers/root.py b/ForgeDiscussion/forgediscussion/controllers/root.py
index 8ade51f..24c2ea1 100644
--- a/ForgeDiscussion/forgediscussion/controllers/root.py
+++ b/ForgeDiscussion/forgediscussion/controllers/root.py
@@ -56,7 +56,6 @@ log = logging.getLogger(__name__)
class RootController(BaseController, DispatchIndex, FeedController):
class W(object):
- forum_subscription_form = FW.ForumSubscriptionForm()
new_topic = DW.NewTopicPost(submit_text='Post')
announcements_table = FW.AnnouncementsTable()
@@ -186,30 +185,6 @@ class RootController(BaseController, DispatchIndex, FeedController):
else:
raise exc.HTTPNotFound()
- @h.vardec
- @expose()
- @validate(W.forum_subscription_form)
- def subscribe(self, **kw):
- require_authenticated()
- forum = kw.pop('forum', [])
- thread = kw.pop('thread', [])
- objs = []
- for data in forum:
- objs.append(
- dict(obj=model.Forum.query.get(shortname=data['shortname'],
- app_config_id=c.app.config._id),
- subscribed=bool(data.get('subscribed'))))
- for data in thread:
- objs.append(dict(obj=model.Thread.query.get(_id=data['id']),
- subscribed=bool(data.get('subscribed'))))
- for obj in objs:
- # TODO where is this called from?
- if obj['subscribed']:
- obj['obj'].subscriptions[str(c.user._id)] = True
- else:
- obj['obj'].subscriptions.pop(str(c.user._id), None)
- redirect(request.referer)
-
def get_feed(self, project, app, user):
"""Return a :class:`allura.controllers.feed.FeedArgs` object describing
the xml feed for this controller.
@@ -252,11 +227,6 @@ class RootController(BaseController, DispatchIndex, FeedController):
grouping['year'] = {'$year': '$timestamp'}
grouping['month'] = {'$month': '$timestamp'}
grouping['day'] = {'$dayOfMonth': '$timestamp'}
- {
- 'year': {'$year': '$timestamp'},
- 'month': {'$month': '$timestamp'},
- 'day': {'$dayOfMonth': '$timestamp'},
- }
mongo_data = model.ForumPost.query.aggregate([
{'$match': {
'discussion_id': discussion_id_q,
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/ForgeDiscussion/forgediscussion/templates/discussion_widgets/forum_summary.html
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/templates/discussion_widgets/forum_summary.html b/ForgeDiscussion/forgediscussion/templates/discussion_widgets/forum_summary.html
deleted file mode 100644
index a795858..0000000
--- a/ForgeDiscussion/forgediscussion/templates/discussion_widgets/forum_summary.html
+++ /dev/null
@@ -1,28 +0,0 @@
-{#-
- 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.
--#}
-<a href="{{value.url()}}">{{value.name}}</a>({{value.shortname}})<br/>
-{% if value.subforums %}
- <b>Subforums:</b>
- {% for sf in value.subforums %}
- <span>
- {% if loop.index0 != 0 %}, {% endif %}
- <a href="{{sf.url()}}">{{sf.name}}</a>
- </span>
- {% endfor %}
-{% endif %}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/ForgeDiscussion/forgediscussion/widgets/__init__.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/widgets/__init__.py b/ForgeDiscussion/forgediscussion/widgets/__init__.py
index 53322a7..02bbb9e 100644
--- a/ForgeDiscussion/forgediscussion/widgets/__init__.py
+++ b/ForgeDiscussion/forgediscussion/widgets/__init__.py
@@ -15,10 +15,10 @@
# specific language governing permissions and limitations
# under the License.
-from forum_widgets import ForumSubscriptionForm, ThreadSubscriptionForm, AnnouncementsTable
+from forum_widgets import ThreadSubscriptionForm, AnnouncementsTable
from forum_widgets import ModerateThread, ForumHeader, ThreadHeader
from forum_widgets import Post, Thread, Forum
__all__ = [
- 'ForumSubscriptionForm', 'ThreadSubscriptionForm', 'AnnouncementsTable', 'ModerateThread', 'ForumHeader',
+ 'ThreadSubscriptionForm', 'AnnouncementsTable', 'ModerateThread', 'ForumHeader',
'ThreadHeader', 'Post', 'Thread', 'Forum']
http://git-wip-us.apache.org/repos/asf/allura/blob/55245f4d/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py b/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
index 8c0c07f..fb063d9 100644
--- a/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
+++ b/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
@@ -30,35 +30,6 @@ from allura.lib.widgets.subscriptions import SubscribeForm
from forgediscussion import model as M
-class _ForumSummary(ew_core.Widget):
- template = 'jinja:forgediscussion:templates/discussion_widgets/forum_summary.html'
- defaults = dict(
- ew_core.Widget.defaults,
- name=None,
- value=None,
- show_label=True,
- label=None)
-
-
-class _ForumsTable(ew.TableField):
-
- class fields(ew_core.NameList):
- _id = ew.HiddenField(validator=V.Ming(M.ForumThread))
- num_topics = ffw.DisplayOnlyField(show_label=True, label='Topics')
- num_posts = ffw.DisplayOnlyField(show_label=True, label='Posts')
- last_post = ffw.DisplayOnlyField(show_label=True)
- subscribed = ew.Checkbox(suppress_label=True, show_label=True)
- fields.insert(0, _ForumSummary())
-
-
-class ForumSubscriptionForm(CsrfForm):
-
- class fields(ew_core.NameList):
- forums = _ForumsTable()
- page_list = ffw.PageList()
- submit_text = 'Update Subscriptions'
-
-
class _ThreadsTable(DW._ThreadsTable):
class fields(ew_core.NameList):
@@ -71,7 +42,7 @@ class _ThreadsTable(DW._ThreadsTable):
flags = ffw.DisplayOnlyField(show_label=True)
last_post = ffw.DisplayOnlyField(show_label=True)
subscription = ew.Checkbox(suppress_label=True, show_label=True)
- defaults = dict(DW._ThreadsTable.defaults, div_id='forum_threads')
+ defaults = dict(DW._ThreadsTable.defaults, div_id='forum_threads', allow_subscriptions=True)
class ThreadSubscriptionForm(DW.SubscriptionForm):
@@ -93,7 +64,7 @@ class AnnouncementsTable(DW._ThreadsTable):
num_views = ffw.DisplayOnlyField(show_label=True)
flags = ffw.DisplayOnlyField(show_label=True)
last_post = ffw.DisplayOnlyField(show_label=True)
- defaults = dict(DW._ThreadsTable.defaults, div_id='announcements')
+ defaults = dict(DW._ThreadsTable.defaults, div_id='announcements', allow_subscriptions=False)
name = 'announcements'
@@ -127,11 +98,13 @@ class ModerateThread(CsrfForm):
delete = ew.SubmitButton(label='Delete Thread')
-class ForumHeader(DW.DiscussionHeader):
+class ForumHeader(DW.HierWidget):
template = 'jinja:forgediscussion:templates/discussion_widgets/forum_header.html'
- widgets = dict(DW.DiscussionHeader.widgets,
+ params = ['value']
+ value = None
+ widgets = dict(DW.HierWidget.widgets,
announcements_table=AnnouncementsTable(),
- forum_subscription_form=ForumSubscriptionForm())
+ )
class ThreadHeader(DW.ThreadHeader):
@@ -157,13 +130,19 @@ class Thread(DW.Thread):
post=Post())
-class Forum(DW.Discussion):
+class Forum(DW.HierWidget):
template = 'jinja:forgediscussion:templates/discussion_widgets/discussion.html'
- allow_create_thread = True
- show_subject = True
- widgets = dict(DW.Discussion.widgets,
- discussion_header=ForumHeader(),
- forum_subscription_form=ForumSubscriptionForm(),
- whole_forum_subscription_form=SubscribeForm(),
+ defaults = dict(
+ DW.HierWidget.defaults,
+ value=None,
+ threads=None,
+ show_subject=True,
+ allow_create_thread=True
+ )
+ widgets = dict(DW.HierWidget.widgets,
subscription_form=ThreadSubscriptionForm()
)
+
+ def resources(self):
+ for r in super(Forum, self).resources():
+ yield r