You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@allura.apache.org by tv...@apache.org on 2013/12/05 23:17:13 UTC
[6/9] git commit: [#5475] ticket:493 Add CsrfForm and use it instead
of SimpleForm where needed
[#5475] ticket:493 Add CsrfForm and use it instead of SimpleForm where needed
Project: http://git-wip-us.apache.org/repos/asf/incubator-allura/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-allura/commit/3ca3e1a9
Tree: http://git-wip-us.apache.org/repos/asf/incubator-allura/tree/3ca3e1a9
Diff: http://git-wip-us.apache.org/repos/asf/incubator-allura/diff/3ca3e1a9
Branch: refs/heads/tv/6941
Commit: 3ca3e1a9dd53812c35b86bc03fb75e05a693c2ec
Parents: 9c4b569
Author: Igor Bondarenko <je...@gmail.com>
Authored: Mon Nov 25 16:15:21 2013 +0200
Committer: Dave Brondsema <db...@slashdotmedia.com>
Committed: Wed Dec 4 15:35:12 2013 +0000
----------------------------------------------------------------------
Allura/allura/ext/admin/widgets.py | 10 ++++++----
Allura/allura/lib/widgets/discuss.py | 4 ++--
Allura/allura/lib/widgets/forms.py | 11 +++++++++++
Allura/allura/lib/widgets/subscriptions.py | 3 ++-
ForgeDiscussion/forgediscussion/widgets/forum_widgets.py | 11 +++++++----
5 files changed, 28 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3ca3e1a9/Allura/allura/ext/admin/widgets.py
----------------------------------------------------------------------
diff --git a/Allura/allura/ext/admin/widgets.py b/Allura/allura/ext/admin/widgets.py
index 85d9237..8eed0be 100644
--- a/Allura/allura/ext/admin/widgets.py
+++ b/Allura/allura/ext/admin/widgets.py
@@ -110,12 +110,14 @@ class PermissionCard(CardField):
return role._id
-class GroupSettings(ew.SimpleForm):
+class GroupSettings(ff.CsrfForm):
submit_text=None
- class hidden_fields(ew_core.NameList):
- _id = ew.HiddenField(
- validator=V.Ming(M.ProjectRole))
+ @property
+ def hidden_fields(self):
+ f = super(GroupSettings, self).hidden_fields
+ f.append(ew.HiddenField(name='_id', validator=V.Ming(M.ProjectRole)))
+ return f
class fields(ew_core.NameList):
name = ew.InputField(label='Name')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3ca3e1a9/Allura/allura/lib/widgets/discuss.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/discuss.py b/Allura/allura/lib/widgets/discuss.py
index eaec991..151a0c2 100644
--- a/Allura/allura/lib/widgets/discuss.py
+++ b/Allura/allura/lib/widgets/discuss.py
@@ -34,7 +34,7 @@ class NullValidator(fev.FancyValidator):
def _from_python(self, value, state): return value
# Discussion forms
-class ModerateThread(ew.SimpleForm):
+class ModerateThread(ff.CsrfForm):
defaults=dict(
ew.SimpleForm.defaults,
submit_text=None)
@@ -453,6 +453,6 @@ class Discussion(HierWidget):
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/incubator-allura/blob/3ca3e1a9/Allura/allura/lib/widgets/forms.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/forms.py b/Allura/allura/lib/widgets/forms.py
index 4e1dae4..d99de0f 100644
--- a/Allura/allura/lib/widgets/forms.py
+++ b/Allura/allura/lib/widgets/forms.py
@@ -957,3 +957,14 @@ class MoveTicketForm(ForgeForm):
self.fields.tracker.options = (
[ew.Option(py_value=v, label=l, selected=s)
for v, l, s in sorted(trackers, key=lambda x: x[1])])
+
+
+class CsrfForm(ew.SimpleForm):
+ @property
+ def hidden_fields(self):
+ return [ew.HiddenField(name='_session_id')]
+ def context_for(self, field):
+ ctx = super(CsrfForm, self).context_for(field)
+ if field.name == '_session_id':
+ ctx['value'] = tg.request.cookies['_session_id']
+ return ctx
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3ca3e1a9/Allura/allura/lib/widgets/subscriptions.py
----------------------------------------------------------------------
diff --git a/Allura/allura/lib/widgets/subscriptions.py b/Allura/allura/lib/widgets/subscriptions.py
index a0a1bc3..3f68d58 100644
--- a/Allura/allura/lib/widgets/subscriptions.py
+++ b/Allura/allura/lib/widgets/subscriptions.py
@@ -22,6 +22,7 @@ import ew.jinja2_ew as ew
from allura.lib import validators as V
from allura.lib.widgets import form_fields as ffw
+from allura.lib.widgets.forms import CsrfForm
from allura import model as M
from .form_fields import SubmitButton
@@ -44,7 +45,7 @@ class _SubscriptionTable(ew.TableField):
# unsubscribe = SubmitButton()
subscribed = ew.Checkbox(suppress_label=True)
-class SubscriptionForm(ew.SimpleForm):
+class SubscriptionForm(CsrfForm):
defaults=dict(
ew.SimpleForm.defaults,
submit_text='Save')
http://git-wip-us.apache.org/repos/asf/incubator-allura/blob/3ca3e1a9/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
----------------------------------------------------------------------
diff --git a/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py b/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
index 5df5370..1b04323 100644
--- a/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
+++ b/ForgeDiscussion/forgediscussion/widgets/forum_widgets.py
@@ -24,6 +24,7 @@ import ew.jinja2_ew as ew
from allura.lib import validators as V
from allura.lib.widgets import discuss as DW
from allura.lib.widgets import form_fields as ffw
+from allura.lib.widgets.forms import CsrfForm
from allura.lib.widgets.subscriptions import SubscribeForm
from forgediscussion import model as M
@@ -46,7 +47,7 @@ class _ForumsTable(ew.TableField):
subscribed=ew.Checkbox(suppress_label=True, show_label=True)
fields.insert(0, _ForumSummary())
-class ForumSubscriptionForm(ew.SimpleForm):
+class ForumSubscriptionForm(CsrfForm):
class fields(ew_core.NameList):
forums=_ForumsTable()
page_list=ffw.PageList()
@@ -95,22 +96,24 @@ class _ForumSelector(ew.SingleSelectField):
def from_python(self, value, state):
return value.shortname
-class ModerateThread(ew.SimpleForm):
+class ModerateThread(CsrfForm):
submit_text='Save Changes'
class fields(ew_core.NameList):
discussion=_ForumSelector(label='New Forum')
flags=ew.CheckboxSet(options=['Sticky', 'Announcement'])
+
class buttons(ew_core.NameList):
delete=ew.SubmitButton(label='Delete Thread')
-class ModeratePost(ew.SimpleForm):
+
+class ModeratePost(CsrfForm):
submit_text=None
fields=[
ew.FieldSet(legend='Promote post to its own thread', fields=[
ew.TextField(name='subject', label='Thread title'),
ew.SubmitButton(name='promote', label='Promote to thread')])]
-class PromoteToThread(ew.SimpleForm):
+class PromoteToThread(CsrfForm):
submit_text=None
fields=[
ew.TextField(name='subject', label='Thread title'),