From 55d3ae9cc4f4e941beafd72784c12f7147ab22d9 Mon Sep 17 00:00:00 2001 From: Ralph Bean Date: Fri, 20 Mar 2015 14:15:51 -0400 Subject: [PATCH] Editable filter names. Fixes #12 and fedora-infra/fmn#49. --- fmn/web/app.py | 14 ++++++++------ fmn/web/forms.py | 1 + fmn/web/templates/filter.html | 18 ++++++++++++++++-- fmn/web/templates/master.html | 13 +++++++++++++ 4 files changed, 38 insertions(+), 8 deletions(-) diff --git a/fmn/web/app.py b/fmn/web/app.py index 84e70402..27c95926 100644 --- a/fmn/web/app.py +++ b/fmn/web/app.py @@ -640,6 +640,7 @@ def handle_filter(): openid = form.openid.data context = form.context.data filter_name = form.filter_name.data + filter_id = form.filter_id.data method = (form.method.data or flask.request.method).upper() if flask.g.auth.openid != openid and not admin(flask.g.auth.openid): @@ -665,13 +666,14 @@ def handle_filter(): try: if method == 'POST': - # Ensure that a filter with this name doesn't already exist. - if pref.has_filter_name(SESSION, filter_name): - raise APIError(404, dict( - reason="%r already exists" % filter_name)) + if pref.has_filter(SESSION, filter_id): + filter = pref.get_filter(SESSION, filter_id) + filter.name = filter_name + SESSION.commit() + else: + filter = fmn.lib.models.Filter.create(SESSION, filter_name) + pref.add_filter(SESSION, filter) - filter = fmn.lib.models.Filter.create(SESSION, filter_name) - pref.add_filter(SESSION, filter) next_url = flask.url_for( 'filter', openid=openid, diff --git a/fmn/web/forms.py b/fmn/web/forms.py index 53b60374..2dea5c51 100644 --- a/fmn/web/forms.py +++ b/fmn/web/forms.py @@ -2,6 +2,7 @@ class FilterForm(Form): + filter_id = IntegerField('filter_id') openid = TextField('openid', [validators.Required()]) context = TextField('context', [validators.Required()]) filter_name = TextField('filter_name', [validators.Required()]) diff --git a/fmn/web/templates/filter.html b/fmn/web/templates/filter.html index 4e9c125e..3388e6b5 100644 --- a/fmn/web/templates/filter.html +++ b/fmn/web/templates/filter.html @@ -2,8 +2,21 @@ {% block body %}
@@ -13,6 +26,7 @@

Rules for {{g.auth.email}}'s {{filter.name}} filter +