Files
fet2020/fet2020/documents/api.py
2021-01-15 15:42:30 +00:00

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)
)