def pad(request, pk): """Create and session and display an embedded pad """ # Initialize some needed values pad = get_object_or_404(Pad, pk=pk) padLink = pad.server.url + 'p/' + pad.group.groupID + '$' + \ urllib.parse.quote_plus(pad.name) server = urlparse(pad.server.url) author = PadAuthor.objects.get(user=request.user) # if author not in pad.group.authors.all(): # return render( # request, # 'pad.html', # { # 'pad': pad, # 'link': padLink, # 'server': server, # 'uname': author.user.__unicode__(), # 'error': _('You are not allowed to view or edit this pad') # } # ) # Create the session on the etherpad-lite side expires = datetime.datetime.utcnow() + datetime.timedelta( seconds=config.SESSION_LENGTH) epclient = EtherpadLiteClient(pad.server.apikey, pad.server.apiurl) try: result = epclient.createSession( pad.group.groupID, author.authorID, time.mktime(expires.timetuple()).__str__()) except Exception as e: return render( request, 'pad.html', { 'pad': pad, 'link': padLink, 'server': server, 'uname': author.user.__str__(), 'error': _('etherpad-lite session request returned:') + ' "' + str(e) + '"' }) response = render( request, 'pad.html', { 'pad': pad, 'link': padLink, 'server': server, 'uname': author.user.__str__(), 'error': False }) # Delete the existing session first if ('padSessionID' in request.COOKIES): epclient.deleteSession(request.COOKIES['sessionID']) response.delete_cookie('sessionID', server.hostname) response.delete_cookie('padSessionID') # Set the new session cookie for both the server and the local site response.set_cookie(key='sessionID', value=result['sessionID'], expires=expires, httponly=False) response.set_cookie(key='padSessionID', value=result['sessionID'], expires=expires, httponly=False) # request.session['sessionID']= result['sessionID'] # request.session['padSessionID']= result['sessionID'] # request.set_expiry(expires) return response