92 lines
2.6 KiB
Python
92 lines
2.6 KiB
Python
from etherpad_lite import EtherpadLiteClient
|
|
# from django.conf import settings
|
|
from datetime import datetime, timedelta
|
|
from django.utils.text import slugify
|
|
import urllib.parse
|
|
t = datetime.now() + timedelta(days=1)
|
|
|
|
SERVER_URL = "https://etherpad2.2020.fet.at/etherpad/"
|
|
|
|
|
|
with open("/srv/andis_test/etherpad_test2/etherpad-lite/APIKEY.txt", "r") as f:
|
|
k = f.read()
|
|
epc = EtherpadLiteClient(
|
|
base_params={'apikey': k, },
|
|
base_url=urllib.parse.urljoin("http://localhost:9003", "api")
|
|
)
|
|
a = epc.createAuthorIfNotExistsFor(name="andis", authorMapper="andis")
|
|
g = epc.createGroupIfNotExistsFor(groupMapper="fet")
|
|
|
|
|
|
def get_ep_sessionid(request):
|
|
if request.user is None:
|
|
return "NoUser", None
|
|
# server = SERVER_URL
|
|
author = epc.createAuthorIfNotExistsFor(
|
|
name=str(request.user),
|
|
authorMapper=str(request.user)
|
|
)['authorID']
|
|
expires = datetime.utcnow() + timedelta(
|
|
hours=3
|
|
)
|
|
try:
|
|
result = epc.createSession(
|
|
groupID=str(g['groupID']),
|
|
authorID=str(author),
|
|
validUntil=str(int(expires.timestamp()))
|
|
)
|
|
except Exception as e:
|
|
raise e
|
|
return None, None
|
|
|
|
return result['sessionID'], expires
|
|
|
|
|
|
def get_pad_link(padID):
|
|
return urllib.parse.urljoin(SERVER_URL, 'p/' + g["groupID"] + '$' + slugify(padID))
|
|
|
|
|
|
def add_ep_to_response(request, response):
|
|
if request.user is None:
|
|
return response
|
|
# padID = id
|
|
server = SERVER_URL
|
|
# padLink = urllib.parse.urljoin(SERVER_URL , 'p/' + g["groupID"] + '$' + padID)
|
|
author = epc.createAuthorIfNotExistsFor(
|
|
name=str(request.user),
|
|
authorMapper=str(request.user)
|
|
)['authorID']
|
|
expires = datetime.utcnow() + timedelta(hours=3)
|
|
|
|
try:
|
|
result = epc.createSession(
|
|
groupID=str(g['groupID']),
|
|
authorID=str(author),
|
|
validUntil=str(int(expires.timestamp()))
|
|
)
|
|
except Exception as e:
|
|
print(e)
|
|
return response
|
|
|
|
if ('padSessionID' in request.COOKIES):
|
|
# TODO - fix it: epclient.deleteSession(request.COOKIES['sessionID'])
|
|
response.delete_cookie('sessionID', server.hostname)
|
|
response.delete_cookie('padSessionID')
|
|
|
|
response = response.set_cookie(
|
|
'sessionID',
|
|
value=result['sessionID'],
|
|
expires=expires,
|
|
domain="https://etherpad2.2020.fet.at",
|
|
httponly=False
|
|
)
|
|
|
|
response.set_cookie(
|
|
'padSessionID',
|
|
value=result['sessionID'],
|
|
expires=expires,
|
|
httponly=False
|
|
)
|
|
|
|
return response
|