diff options
Diffstat (limited to 'views.py')
-rw-r--r-- | views.py | 49 |
1 files changed, 17 insertions, 32 deletions
@@ -73,13 +73,12 @@ def index(): return dict(groups=groups, create_form=form) -@app.route('/_all/', defaults={'page': 1}) -@app.route('/_all/_page/<int:page>') +@app.route('/_browse/', defaults={'page': 1}) +@app.route('/_browse/<int:page>') @templated() @login_required -def all(page): +def browse(page): public_groups = Group.query.filter( - ~Group.members.any(Member.user == current_user), Group.browsable == True, ) @@ -90,28 +89,6 @@ def all(page): 'breadcrumbs': [{'text': 'Public groups'}]} -@app.route('/_all/<group_name>/', methods=['GET', 'POST']) -@templated('group.html') -@login_required -def public_group(group_name): - group = Group.query.filter( - ~Group.members.any(Member.user == current_user), - Group.name == group_name, - Group.browsable == True, - ).first_or_404() - - if request.method == 'POST': - Member.create(user=current_user, group=group) - db.session.commit() - return redirect(url_for('all')) - - return {'group': group, - 'public_view': True, - 'breadcrumbs': [ - {'text': 'Public groups', 'href': url_for('all')}, - {'text': group}]} - - @app.route('/<group_name>/_delete/', methods=['GET', 'POST']) @templated() @login_required @@ -337,7 +314,7 @@ def pad(group_name, pad_name): 'host': 'https://%s' % urlparse(request.url).hostname} -@app.route('/<group_name>/') +@app.route('/<group_name>/', methods=['GET', 'POST']) @templated() @login_required def group(group_name): @@ -345,14 +322,22 @@ def group(group_name): Group.name == group_name, ).first_or_404() - member = Member.query.filter( + membership = Member.query.filter( Member.user == current_user, Member.group == group, - Member.active == True, - ).first_or_404() + ).first() + + if membership is None and request.method == 'POST': + membership = Member.create(user=current_user, group=group) + db.session.commit() + + breadcrumbs = [{'text': group}] + if group.browsable and (membership is None or not membership.active): + breadcrumbs.insert(0, {'text': 'Public groups', + 'href': url_for('browse')}) return {'group': group, + 'membership': membership, 'pads': group.pads, - 'admin': member.admin, 'members': group.members, - 'breadcrumbs': [{'text': group}]} + 'breadcrumbs': breadcrumbs} |