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('//', 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}