summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 03:11:16 +0100
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 03:11:16 +0100
commit4f377e9e70cce40fec9bed51b76d0650d5a750df (patch)
tree3066286e3de08c2e1684a2f6c3fba81eb8209d19
parent0ab3f1eba28a1ccaef772e47a03942e03c414f73 (diff)
downloadpadlite-teams-4f377e9e70cce40fec9bed51b76d0650d5a750df.tar.gz
padlite-teams-4f377e9e70cce40fec9bed51b76d0650d5a750df.tar.bz2
padlite-teams-4f377e9e70cce40fec9bed51b76d0650d5a750df.zip
forms: add ChangePad to edit an existing pad
-rw-r--r--forms.py5
-rw-r--r--templates/group.html2
-rw-r--r--views.py31
3 files changed, 35 insertions, 3 deletions
diff --git a/forms.py b/forms.py
index 72848ad..969ea73 100644
--- a/forms.py
+++ b/forms.py
@@ -35,6 +35,11 @@ _CreatePad = model_form(
converter=ModelConverter(overrides={'password': PasswordField}))
+ChangePad = model_form(
+ Pad, base_class=Form, exclude=['api_id', 'created', 'group'],
+ converter=ModelConverter(overrides={'password': PasswordField, 'name': ReadonlyField}))
+
+
class CreatePad(_CreatePad):
def __init__(self, formdata=None, obj=None, group=None, prefix='', **kwarg):
self.group = group
diff --git a/templates/group.html b/templates/group.html
index 0b6e383..5177c50 100644
--- a/templates/group.html
+++ b/templates/group.html
@@ -34,7 +34,7 @@
<a href="#" class="btn-block">{{pad}}</a>
</td>
<td class="col-sm-1 text-right">
- <a href="#" class="btn-block glyphicon glyphicon-cog" />
+ <a href="{{ url_for('pad_change', group_name=group.name, pad_name=pad.name) }}" class="btn-block glyphicon glyphicon-cog" />
</td>
</tr>
diff --git a/views.py b/views.py
index 62fb9b8..51b17ef 100644
--- a/views.py
+++ b/views.py
@@ -1,9 +1,9 @@
from app import app
from auth import auth
-from flask import g, request, redirect, render_template, url_for
+from flask import g, request, redirect, render_template, url_for, abort
from flask_peewee.utils import get_object_or_404
from models import Group, Member, Pad
-from forms import CreateGroup, DeleteForm, ChangeGroup, CreatePad
+from forms import CreateGroup, DeleteForm, ChangeGroup, CreatePad, ChangePad
from utils import templated
from pagination import Pagination
from filters import *
@@ -121,6 +121,33 @@ def pad_create(group_name):
{'text': 'Create pad'}]}
+@app.route('/<group_name>/<pad_name>/_edit/', methods=['GET', 'POST'])
+@templated('pad_change.html')
+@auth.login_required
+def pad_change(group_name, pad_name):
+ group = get_group_or_404(Group.name == group_name, Member.admin == True)
+
+ try:
+ pad = Pad.get(Pad.name == pad_name, Pad.group == group)
+ except Pad.DoesNotExist:
+ if member.admin == True:
+ return redirect(url_for('group', group_name = group_name))
+ abort(404)
+
+ form = ChangePad(request.form, obj=pad)
+ if form.validate_on_submit():
+ del form.name
+ form.populate_obj(pad)
+ pad.save()
+ return redirect(url_for('group', group_name=group.name))
+
+ return {'group': group,
+ 'pad': pad,
+ 'change_form': form,
+ 'breadcrumbs': [{'href': url_for('group', group_name=group.name), 'text': group},
+ {'text': 'Edit pad: %s' % pad.name}]}
+
+
@app.route('/<group_name>/')
@templated('group.html')
@auth.login_required