diff options
author | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2013-09-04 15:49:03 +0000 |
---|---|---|
committer | Alexander Sulfrian <alex@spline.inf.fu-berlin.de> | 2013-09-04 15:52:20 +0000 |
commit | d29ad289dc6b4873c1ab06841509aeb21fa28958 (patch) | |
tree | 4fcf292afab3537142976dfa0a7f9af4a6464bb8 | |
parent | 1a9edf1fcb945f7f235ad5691f4958d1c4089dc0 (diff) | |
download | padlite-teams-d29ad289dc6b4873c1ab06841509aeb21fa28958.tar.gz padlite-teams-d29ad289dc6b4873c1ab06841509aeb21fa28958.tar.bz2 padlite-teams-d29ad289dc6b4873c1ab06841509aeb21fa28958.zip |
add ability to create new groups
-rw-r--r-- | forms.py | 11 | ||||
-rw-r--r-- | models.py | 9 | ||||
-rw-r--r-- | templates/index.html | 18 | ||||
-rw-r--r-- | views.py | 13 |
4 files changed, 47 insertions, 4 deletions
diff --git a/forms.py b/forms.py new file mode 100644 index 0000000..7333acf --- /dev/null +++ b/forms.py @@ -0,0 +1,11 @@ +from wtforms import Form, TextField, validators +from utils import Unique +from models import Group + +class CreateGroup(Form): + name = TextField('group name', [ + validators.Required(), + validators.Regexp('^[a-zA-Z-1-9_-]+$', + message=u'Invalid group name (only simple characters, numbers, - and _).'), + Unique(Group, Group.name, + message=u'A group with this name already exists.')]) @@ -1,7 +1,7 @@ from peewee import CharField, DateTimeField, BooleanField, ForeignKeyField from peewee import create_model_tables from datetime import datetime -from app import db +from app import db, pad class User(db.Model): username = CharField() @@ -21,6 +21,13 @@ class Group(db.Model): def __unicode__(self): return self.name + def save(self, force_insert=False, only=None): + if self.id is None or force_insert: + self.api_id = pad.createGroup() + + super(Group, self).save(force_insert=force_insert, only=only) + + class Member(db.Model): group = ForeignKeyField(Group, related_name='members') user = ForeignKeyField(User, related_name='groups') diff --git a/templates/index.html b/templates/index.html index eef2f0c..6898a42 100644 --- a/templates/index.html +++ b/templates/index.html @@ -16,5 +16,23 @@ </div> </div> +<div class="panel panel-default"> + <div class="panel-heading"> + <h3 class="panel-title">Create new group</h3> + </div> + <div class="panel-body"> + <form class="form-horizontal" role="form" method="POST"> + {% for field in create_form %} + {{ render_field(field) }} + {% endfor %} + <div class="form-group"> + <div class="col-lg-offset-2 col-lg-10"> + <button type="submit" class="btn btn-default">Create group</button> + </div> + </div> + </form> + </div> +</div> + <a class="btn btn-default btn-block" href="{{ url_for('auth.logout') }}">Logout</a> {% endblock %} @@ -1,11 +1,18 @@ from app import app from auth import auth -from flask import g +from flask import g, request +from models import Group, Member +from forms import CreateGroup from utils import templated -@app.route('/') +@app.route('/', methods=['GET', 'POST']) @templated('index.html') @auth.login_required def index(): + form = CreateGroup(request.form) + if request.method == 'POST' and form.validate(): + group = Group.create(name=form.name.data) + Member.create(user=g.user, group=group, admin=True) + form = CreateGroup() groups = [member.group for member in g.user.groups] - return {'groups': groups} + return {'groups': groups, 'create_form': form} |