120 lines
2.8 KiB
Python
120 lines
2.8 KiB
Python
from django.conf import settings
|
|
|
|
import os
|
|
import urllib.parse
|
|
|
|
from etherpad_lite import EtherpadLiteClient, EtherpadException
|
|
|
|
import logging
|
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
SERVER_URL = settings.ETHERPAD_CLIENT["exturl"]
|
|
|
|
|
|
def get_ep_client():
|
|
epc = None
|
|
group = None
|
|
|
|
try:
|
|
with open(os.path.abspath(settings.ETHERPAD_CLIENT["apikey"]), "r") as f:
|
|
apikey = f.read()
|
|
apikey = apikey.rstrip()
|
|
epc = EtherpadLiteClient(
|
|
base_params={
|
|
"apikey": apikey,
|
|
},
|
|
base_url=urllib.parse.urljoin(settings.ETHERPAD_CLIENT["url"], "api"),
|
|
api_version="1.2.14",
|
|
)
|
|
group = epc.createGroupIfNotExistsFor(groupMapper="fet")
|
|
except Exception as e:
|
|
logger.info("Can't get connection to Etherpad Server. Error: {}".format(e))
|
|
raise e
|
|
return None, None
|
|
|
|
return epc, group
|
|
|
|
|
|
def __checkPadExists(padID=None):
|
|
if not padID:
|
|
return False
|
|
|
|
epc, group = get_ep_client()
|
|
if not epc or not group:
|
|
return None
|
|
|
|
try:
|
|
lists = epc.listAllPads()
|
|
except Exception as e:
|
|
raise e
|
|
else:
|
|
string = group["groupID"] + "$" + str(padID)
|
|
if string in lists["padIDs"]:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
def createPadifNotExists(padID):
|
|
epc, group = get_ep_client()
|
|
if not epc:
|
|
logger.info("if not epc")
|
|
return None
|
|
|
|
# Pad doesn't exist
|
|
if not __checkPadExists(padID=padID):
|
|
try:
|
|
epc.createGroupPad(
|
|
groupID=group["groupID"], padName=padID, text="helloworld"
|
|
)
|
|
except EtherpadException as e:
|
|
logger.info("Can't create Pad '{}'. EtherpadException: {}".format(padID, e))
|
|
return None
|
|
except Exception as e:
|
|
raise e
|
|
return None
|
|
|
|
return padID
|
|
|
|
|
|
def getPadHTML(padID):
|
|
epc, group = get_ep_client()
|
|
if not epc or not group:
|
|
return None
|
|
|
|
try:
|
|
text = epc.getHTML(padID=group["groupID"] + "$" + padID)["html"]
|
|
except EtherpadException as e:
|
|
logger.info(
|
|
"Can't get HTML from padID '{}'. EtherpadException: {}".format(padID, e)
|
|
)
|
|
return None
|
|
except Exception as e:
|
|
raise e
|
|
return None
|
|
|
|
return text
|
|
|
|
|
|
def setPadHTML(padID, html):
|
|
epc, group = get_ep_client()
|
|
if not epc or not group:
|
|
return None
|
|
|
|
epc.setHTML(padID=group["groupID"] + "$" + padID, html=html)
|
|
return html
|
|
|
|
|
|
def get_pad_link(padID):
|
|
if padID is None:
|
|
return "#"
|
|
|
|
epc, group = get_ep_client()
|
|
if not epc or not group:
|
|
return "#"
|
|
|
|
return urllib.parse.urljoin(
|
|
settings.ETHERPAD_CLIENT["exturl"], "p/" + group["groupID"] + "$" + str(padID)
|
|
)
|