summaryrefslogtreecommitdiffstats
path: root/views.py
blob: 7edb0f2fd3b6e22c327c7b7f26df757b57750308 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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, DeleteGroup
from utils import templated
from filters import *

def get_group_or_404(*query):
    group = get_object_or_404(Group.select().join(Member),
                              Member.user == g.user, *query)
    return group

@app.route('/', methods=['GET', 'POST'])
@templated('index.html')
@auth.login_required
def index():
    form = CreateGroup(request.form)
    if form.validate_on_submit():
        group = Group.create(name=form.name.data,
                             public=form.public.data)
        Member.create(user=g.user, group=group, admin=True)
        form = CreateGroup()
    groups = [member.group for member in g.user.groups]
    return {'groups': groups, 'create_form': form}

@app.route('/<group_name>/', methods=['GET', 'POST'])
@templated('group.html')
@auth.login_required
def group(group_name):
    group = get_group_or_404(Group.name == group_name)
    form = DeleteGroup(request.form)
    if form.validate_on_submit():
        if form.sure.data == 'yes':
            group.delete_instance(recursive=True)
            return redirect(url_for('index'))
        else:
           form.sure.data = 'yes'
           return render_template('group_delete.html', group=group, delete_form=form)
    else:
        form.id.data = group.id
    return {'group': group, 'members': group.members, 'delete_form': form}