diff options
author | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2014-11-19 03:11:16 +0100 |
---|---|---|
committer | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2014-11-19 03:11:16 +0100 |
commit | 4f377e9e70cce40fec9bed51b76d0650d5a750df (patch) | |
tree | 3066286e3de08c2e1684a2f6c3fba81eb8209d19 | |
parent | 0ab3f1eba28a1ccaef772e47a03942e03c414f73 (diff) | |
download | padlite-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.py | 5 | ||||
-rw-r--r-- | templates/group.html | 2 | ||||
-rw-r--r-- | views.py | 31 |
3 files changed, 35 insertions, 3 deletions
@@ -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> @@ -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 |