From b4b3f4f17b6b347633459c3f00322d78e77f0814 Mon Sep 17 00:00:00 2001 From: Alexander Sulfrian Date: Wed, 19 Nov 2014 03:21:29 +0100 Subject: templates/pad: add page with frame for real pad --- templates/group.html | 2 +- templates/pad.html | 6 ++++++ views.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 58 insertions(+), 4 deletions(-) create mode 100644 templates/pad.html diff --git a/templates/group.html b/templates/group.html index 5177c50..8d90599 100644 --- a/templates/group.html +++ b/templates/group.html @@ -31,7 +31,7 @@ - {{pad}} + {{pad}} diff --git a/templates/pad.html b/templates/pad.html new file mode 100644 index 0000000..8dd4d40 --- /dev/null +++ b/templates/pad.html @@ -0,0 +1,6 @@ + + + + + + diff --git a/views.py b/views.py index eed49df..b7d495b 100644 --- a/views.py +++ b/views.py @@ -1,11 +1,13 @@ from app import app from auth import auth -from flask import g, request, redirect, render_template, url_for, abort +from flask import g, request, redirect, render_template, url_for, flash, \ + session, get_flashed_messages, abort from flask_peewee.utils import get_object_or_404 -from models import Group, Member, Pad +from models import Group, Member, Pad, Session from forms import CreateGroup, DeleteForm, ChangeGroup, CreatePad, ChangePad -from utils import templated +from utils import templated, after_this_request from pagination import Pagination +from urlparse import urlparse from filters import * def get_group_or_404(*query): @@ -156,6 +158,52 @@ def pad_change(group_name, pad_name): {'text': 'Edit pad: %s' % pad.name}]} +@app.route('///') +@templated('pad.html') +@auth.login_required +def pad(group_name, pad_name): + try: + group = get_object_or_404(Group, Group.name == group_name) + member = Member.get(Member.group == group, Member.user == g.user) + except Member.DoesNotExist: + if group.public == False: + abort(404) + flash('You are not member of this group. You may request membership.') + return redirect(url_for('public_group', group_name = group.name)) + + try: + pad = Pad.get(Pad.name == pad_name, Pad.group == group) + except Pad.DoesNotExist: + if member.admin == True: + return redirect(url_for('group', group_name = group_name)) + abort(404) + + api_session = None + try: + api_session = Session.get(Session.group == group, + Session.user == g.user, + Session.uuid == session['uuid']) + if not api_session.is_valid(): + api_session.delete_instance() + api_session = None + except: + pass + + if api_session is None: + Session.create(user = g.user, group = group, uuid = session['uuid']) + + sessions = Session.select().where(Session.user == g.user, Session.uuid == session['uuid']) + + @after_this_request + def set_session(response): + response.set_cookie('sessionID' , '%2C'.join([s.api_id for s in sessions])) + + # ignore user logged in messages + get_flashed_messages() + return {'pad': pad, + 'host': 'https://%s' % urlparse(request.url).hostname} + + @app.route('//') @templated('group.html') @auth.login_required -- cgit v1.2.3-1-g7c22