summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 03:21:29 +0100
committerAlexander Sulfrian <alex@spline.inf.fu-berlin.de>2014-11-19 03:21:29 +0100
commitb4b3f4f17b6b347633459c3f00322d78e77f0814 (patch)
tree4053a62e636da4eccc8c5104afdfe4b0b5415357
parent2c59dcacc2163ac48e36f1fde5fa6b10f769442f (diff)
downloadpadlite-teams-b4b3f4f17b6b347633459c3f00322d78e77f0814.tar.gz
padlite-teams-b4b3f4f17b6b347633459c3f00322d78e77f0814.tar.bz2
padlite-teams-b4b3f4f17b6b347633459c3f00322d78e77f0814.zip
templates/pad: add page with frame for real pad
-rw-r--r--templates/group.html2
-rw-r--r--templates/pad.html6
-rw-r--r--views.py54
3 files changed, 58 insertions, 4 deletions
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 @@
<tr>
<td class="col-sm-11">
- <a href="#" class="btn-block">{{pad}}</a>
+ <a href="{{ url_for('pad', group_name=group.name, pad_name=pad.name) }}" class="btn-block">{{pad}}</a>
</td>
<td class="col-sm-1 text-right">
<a href="{{ url_for('pad_change', group_name=group.name, pad_name=pad.name) }}" class="btn-block glyphicon glyphicon-cog" />
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 @@
+<!DOCTYPE html>
+<html>
+<frameset cols="100%">
+ <frame src="{{ host }}/p/{{ pad.api_id }}">
+</frameset>
+</html>
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('/<group_name>/<pad_name>/')
+@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('/<group_name>/')
@templated('group.html')
@auth.login_required