summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 02:56:10 +0100
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 02:57:43 +0100
commit411c19c7f952a834399232d17c4fe546cf0eaa41 (patch)
tree04e14a3c2c46ee00143247cde3a85fd03d5d8e8e
parent900985df8179810bfa4efbf79bef6075e04b4d21 (diff)
downloadpadlite-teams-411c19c7f952a834399232d17c4fe546cf0eaa41.tar.gz
padlite-teams-411c19c7f952a834399232d17c4fe546cf0eaa41.tar.bz2
padlite-teams-411c19c7f952a834399232d17c4fe546cf0eaa41.zip
forms: add CreatePad
-rw-r--r--forms.py15
-rw-r--r--templates/group.html13
-rw-r--r--templates/pad_change.html33
-rw-r--r--views.py23
4 files changed, 80 insertions, 4 deletions
diff --git a/forms.py b/forms.py
index f5f1340..459839d 100644
--- a/forms.py
+++ b/forms.py
@@ -1,8 +1,8 @@
-from wtforms import HiddenField, validators
-from models import Group
+from wtforms import HiddenField, PasswordField, validators
from wtfpeewee.orm import model_form, ModelConverter
from flask.ext.wtf import Form
from utils import Unique, ReadonlyField
+from models import Group, Pad
from widgets import TextArea
@@ -24,5 +24,16 @@ ChangeGroup = model_form(Group, base_class=Form, exclude=['api_id'], field_args=
converter=ModelConverter(overrides={'name': ReadonlyField}))
+CreatePad = model_form(
+ Pad, base_class=Form, exclude=['api_id', 'created', 'group'], field_args={
+ 'name': {'validators': [
+ validators.Required(),
+ validators.Regexp('^[a-zA-Z1-9_-]+$', message=u'Invalid pad name '
+ '(only simple characters, numbers, - and _).'),
+ validators.Regexp('^[a-zA-Z1-9]', message=u'Pad name should not '
+ 'start with a special character.')]}},
+ converter=ModelConverter(overrides={'password': PasswordField}))
+
+
class DeleteForm(Form):
sure = HiddenField('are you sure', default='yes')
diff --git a/templates/group.html b/templates/group.html
index bc08e4d..7f90c57 100644
--- a/templates/group.html
+++ b/templates/group.html
@@ -19,6 +19,19 @@
</div>
{% if not public_view %}
+<div class="panel panel-default">
+ <div class="panel-heading" style="border-bottom: 0">
+ <h3 class="panel-title">Pads</h3>
+ </div>
+
+ {% if admin %}
+ <div class="panel-footer">
+ <a href="{{ url_for('pad_create', group_name=group.name) }}">
+ Create pad
+ </a>
+ </div>
+ {% endif %}
+</div>
<div class="panel panel-default">
<div class="panel-heading">
diff --git a/templates/pad_change.html b/templates/pad_change.html
new file mode 100644
index 0000000..dd8e7d2
--- /dev/null
+++ b/templates/pad_change.html
@@ -0,0 +1,33 @@
+{% extends "layout.html" %}
+{% from "_formhelpers.html" import render_field %}
+
+{% block head %}Group: {{group}}{% endblock %}
+
+{% block content %}
+<div class="panel panel-default">
+ <div class="panel-heading">
+ {% if pad %}
+ <h3 class="panel-title">Edit pad: {{pad.name}}</h3>
+ {% else %}
+ <h3 class="panel-title">Create a pad</h3>
+ {% endif %}
+ </div>
+
+ <div class="panel-body">
+ <form class="form-horizontal" role="form" method="POST">
+ {% for field in change_form %}
+ {{ render_field(field) }}
+ {% endfor %}
+ <div class="form-group">
+ <div class="col-lg-10 col-lg-offset-2">
+ {% if pad %}
+ <button type="submit" class="btn btn-primary">Save pad</button>
+ {% else %}
+ <button type="submit" class="btn btn-primary">Create pad</button>
+ {% endif %}
+ </div>
+ </div>
+ </form>
+ </div>
+</div>
+{% endblock %}
diff --git a/views.py b/views.py
index 2027785..495c0a3 100644
--- a/views.py
+++ b/views.py
@@ -2,8 +2,8 @@ from app import app
from auth import auth
from flask import g, request, redirect, render_template, url_for
from flask_peewee.utils import get_object_or_404
-from models import Group, Member
-from forms import CreateGroup, DeleteForm, ChangeGroup
+from models import Group, Member, Pad
+from forms import CreateGroup, DeleteForm, ChangeGroup, CreatePad
from utils import templated
from pagination import Pagination
from filters import *
@@ -102,6 +102,25 @@ def group_join(group_name, member_id, accept):
return redirect(url_for('group', group_name=group_name))
+@app.route('/<group_name>/_create_pad/', methods=['GET', 'POST'])
+@templated('pad_change.html')
+@auth.login_required
+def pad_create(group_name):
+ group = get_group_or_404(Group.name == group_name, Member.admin == True)
+ form = CreatePad(request.form)
+ if form.validate_on_submit():
+ pad = Pad()
+ form.populate_obj(pad)
+ pad.group = group
+ pad.save()
+ return redirect(url_for('group', group_name = group_name))
+
+ return {'group': group,
+ 'change_form': form,
+ 'breadcrumbs': [{'href': url_for('group', group_name=group.name), 'text': group},
+ {'text': 'Create pad'}]}
+
+
@app.route('/<group_name>/')
@templated('group.html')
@auth.login_required