major upgrade for etherpad
This commit is contained in:
@@ -6,57 +6,13 @@ import urllib.parse
|
||||
t = datetime.now() + timedelta(days=1)
|
||||
from django.conf import settings
|
||||
import os
|
||||
from .api import ep_api
|
||||
from .api import ep
|
||||
# from .etherpadlib import get_ep_sessionid2, add_ep_cookie
|
||||
SERVER_URL = settings.ETHERPAD_CLIENT["exturl"]
|
||||
ep=ep_api()
|
||||
|
||||
|
||||
def get_pad_link(padID):
|
||||
if padID is None:
|
||||
return "#"
|
||||
if ep.get_epc():
|
||||
return urllib.parse.urljoin(SERVER_URL, 'p/' + ep.group["groupID"] + '$' + slugify(padID))
|
||||
return urllib.parse.urljoin(SERVER_URL, 'p/' + ep.group["groupID"] + '$' + str(padID))
|
||||
return ""
|
||||
|
||||
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
|
||||
|
||||
@@ -1,7 +1,11 @@
|
||||
from django.conf import settings
|
||||
import os
|
||||
import urllib.parse
|
||||
from etherpad_lite import EtherpadLiteClient
|
||||
|
||||
from datetime import datetime, timedelta
|
||||
from etherpad_lite import EtherpadLiteClient, EtherpadException
|
||||
|
||||
|
||||
class ep_api():
|
||||
def __init__(self):
|
||||
self.group=None
|
||||
@@ -23,15 +27,56 @@ class ep_api():
|
||||
raise e
|
||||
self.group=None
|
||||
self.epc=None
|
||||
|
||||
def checkPadExists(self,padID=None):
|
||||
print( self.epc.listPads(groupID=self.group["groupID"]))
|
||||
if not padID:
|
||||
return False
|
||||
try:
|
||||
r=self.epc.getRevisionsCount(padID=self.group["groupID"]+"$"+padID)
|
||||
except EtherpadException as e:
|
||||
return False
|
||||
return True
|
||||
|
||||
def createPadifNotExists(self, padid):
|
||||
self.get_epc()
|
||||
#if not self.epc:
|
||||
# return None
|
||||
if self.epc.getRevisionsCount(padID=padid)["code"] == 1: # Pad doesn't exist
|
||||
self.epc.createPad(padid)
|
||||
if not self.epc:
|
||||
return None
|
||||
if not self.checkPadExists(padID=padid): # Pad doesn't exist
|
||||
self.epc.createGroupPad(groupID=self.group["groupID"],padName=padid,text="helloworld")
|
||||
return padid
|
||||
def get_epc(self):
|
||||
if self.epc:
|
||||
return self.epc
|
||||
self.load()
|
||||
return self.epc
|
||||
|
||||
def get_ep_sessionid2(self,request):
|
||||
if request.user is None:
|
||||
return None, None
|
||||
if not request.user.is_authenticated:
|
||||
return None,None
|
||||
# server = SERVER_URL
|
||||
ep.get_epc()
|
||||
author = self.epc.createAuthorIfNotExistsFor(
|
||||
name=str(request.user),
|
||||
authorMapper=str(request.user)
|
||||
)['authorID']
|
||||
expires = datetime.utcnow() + timedelta(
|
||||
hours=3
|
||||
)
|
||||
try:
|
||||
result = self.epc.createSession(
|
||||
groupID=str(self.group['groupID']),
|
||||
authorID=str(author),
|
||||
validUntil=str(int(expires.timestamp()))
|
||||
)
|
||||
except Exception as e:
|
||||
raise e
|
||||
return None, None
|
||||
|
||||
return result['sessionID'], expires
|
||||
|
||||
|
||||
|
||||
ep=ep_api()
|
||||
@@ -4,47 +4,22 @@ from datetime import datetime, timedelta
|
||||
# from django.utils.text import slugify
|
||||
import urllib.parse
|
||||
# from django.conf import settings
|
||||
from .api import ep_api
|
||||
ep=ep_api()
|
||||
from .api import ep
|
||||
|
||||
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_sessionid2(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 add_ep_cookie(request, response):
|
||||
response.set_cookie("HILib", "TestWert", domain="https://andis.2020.fet.at")
|
||||
ep_sessid, expires = get_ep_sessionid2(request)
|
||||
ep_sessid, expires = ep.get_ep_sessionid2(request)
|
||||
if ep_sessid is None:
|
||||
response.set_cookie(
|
||||
"sessionID",
|
||||
"NOTAUTHENTICATED",
|
||||
expires=expires,
|
||||
domain=".2020.fet.at",
|
||||
path="/"
|
||||
)
|
||||
return response
|
||||
response.set_cookie(
|
||||
"sessionID",
|
||||
ep_sessid,
|
||||
@@ -52,13 +27,6 @@ def add_ep_cookie(request, response):
|
||||
domain=".2020.fet.at",
|
||||
path="/"
|
||||
)
|
||||
response.set_cookie(
|
||||
"sessionID",
|
||||
ep_sessid,
|
||||
expires=expires,
|
||||
domain="etherpad2.2020.fet.at",
|
||||
path="/"
|
||||
)
|
||||
response.set_cookie(
|
||||
"sessionID",
|
||||
ep_sessid,
|
||||
|
||||
@@ -62,7 +62,7 @@ def show(request, id=None):
|
||||
"author_image": author_image,
|
||||
"next": get_next_dict(p),
|
||||
"related_posts": p.tags.similar_objects(),
|
||||
"ep_link": get_pad_link(p.slug + "-agenda"),
|
||||
"ep_link": get_pad_link(p.agenda_key),
|
||||
}
|
||||
|
||||
response = render(request, 'posts/show.html', context)
|
||||
|
||||
Reference in New Issue
Block a user