summaryrefslogtreecommitdiffstats
path: root/views.py
blob: d881d21c70b2bbb58e3a8eed140c4589d48b06af (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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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, ChangeGroup
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}


@app.route('/<group_name>/_change/', methods=['GET', 'POST'])
@templated('group_change.html')
@auth.login_required
def group_change(group_name):
    group = get_group_or_404(Group.name == group_name, Member.admin == True)
    form = ChangeGroup(request.form, obj=group)
    if form.validate_on_submit():
        del form.name
        form.populate_obj(group)
        group.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': 'Edit group'}]}