summaryrefslogtreecommitdiffstats
path: root/views.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2016-01-10 15:33:52 +0100
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2016-01-10 17:37:01 +0100
commit1f98d945110b7cd467811e784eead280edcdee9e (patch)
tree75c30a12b06e96553783379b4cd38a533dbc23f3 /views.py
parent1ec270de4390f215f874e8fad23736ce978c1bbd (diff)
downloadpadlite-teams-1f98d945110b7cd467811e784eead280edcdee9e.tar.gz
padlite-teams-1f98d945110b7cd467811e784eead280edcdee9e.tar.bz2
padlite-teams-1f98d945110b7cd467811e784eead280edcdee9e.zip
One URL for public/member group view.
The group is now always reachable with a consistent URL regardless of membership of the current_user. If the user is no member the public view is rendered with the possibility to join the group.
Diffstat (limited to 'views.py')
-rw-r--r--views.py49
1 files changed, 17 insertions, 32 deletions
diff --git a/views.py b/views.py
index 9117146..457be01 100644
--- a/views.py
+++ b/views.py
@@ -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}