ep api class

This commit is contained in:
2020-09-06 08:32:28 +00:00
parent 36761ac4d5
commit 7114126ba5
7 changed files with 74 additions and 49 deletions

View File

@@ -4,50 +4,18 @@ from datetime import datetime, timedelta
from django.utils.text import slugify
import urllib.parse
t = datetime.now() + timedelta(days=1)
from django.conf import settings
import os
from .api import ep_api
# from .etherpadlib import get_ep_sessionid2, add_ep_cookie
SERVER_URL = "https://etherpad2.2020.fet.at/"
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
SERVER_URL = settings.ETHERPAD_CLIENT["exturl"]
ep=ep_api()
def get_pad_link(padID):
return urllib.parse.urljoin(SERVER_URL, 'p/' + g["groupID"] + '$' + slugify(padID))
if ep.get_epc():
return urllib.parse.urljoin(SERVER_URL, 'p/' + ep.group["groupID"] + '$' + slugify(padID))
return ""
def add_ep_to_response(request, response):
if request.user is None:

37
fet2020/documents/api.py Normal file
View File

@@ -0,0 +1,37 @@
from django.conf import settings
import os
import urllib.parse
from etherpad_lite import EtherpadLiteClient
class ep_api():
def __init__(self):
self.group=None
self.epc=None
return
def load(self):
try:
with open(os.path.abspath(settings.ETHERPAD_CLIENT["apikey"]), "r") as f:
k = f.read()
epc = EtherpadLiteClient(
base_params={'apikey': k, },
base_url=urllib.parse.urljoin(settings.ETHERPAD_CLIENT["url"], "api")
)
g = epc.createGroupIfNotExistsFor(groupMapper="fet")
self.group=g
self.epc=epc
except Exception as e:
raise e
self.group=None
self.epc=None
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)
return padid
def get_epc(self):
if self.epc:
return self.epc
self.load()
return self.epc

View File

@@ -4,7 +4,8 @@ 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()
with open("/srv/andis_test/etherpad_test2/etherpad-lite/APIKEY.txt", "r") as f:
k = f.read()
@@ -51,4 +52,18 @@ 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,
expires=expires,
domain=".2020.fet.at",
path="/p"
)
return response

View File

@@ -192,6 +192,8 @@ THUMBNAIL_ALIASES = {
}
ETHERPAD_CLIENT = {
'url': "http://localhost:9003"
'url': "http://localhost:9003",
'exturl': "https://etherpad2.2020.fet.at/",
'apikey': "/srv/andis_test/etherpad_test2/etherpad-lite/APIKEY.txt"
}

View File

@@ -41,8 +41,8 @@ def jobs_view(request, slug=None):
job_list.append((job_names[idx], active_members[idx], inactive_members[idx]))
context = {
"job_group": job_group,
"job_list": job_list,
"job_group": job_group, # Das sind die Tabs
"job_list": job_list, # Das ist die Liste, die dargestellt wird
}
return render(request, 'members/index.html', context)

View File

@@ -52,7 +52,7 @@ class MyEventForm(MyPostForm):
class MyFetMeetingForm(MyEventForm):
class Meta:
model = FetMeeting
fields = ['event_start', 'event_end', 'tags', 'has_agenda']
fields = ['event_start', 'event_end', 'tags', 'has_agenda','agenda_key']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) # to get the self.fields set

View File

@@ -9,7 +9,7 @@ from django.utils.translation import gettext_lazy as _
from members.models import Member
from taggit.managers import TaggableManager
# import documents
from documents import ep
# from ckeditor_uploader import RichTextUploadingField
# import uuid
@@ -200,7 +200,9 @@ class Post(models.Model):
if (self.id is None) and (not self.slug):
self.slug = slugify(self.public_date.date()) + "-" + slugify(self.title)
if self.has_agenda and (self.agenda_key == "" or self.agenda_key is None):
if self.has_agenda:# and (self.agenda_key == "" or self.agenda_key is None):
self.agenda_key= ep.createPadifNotExists(self.slug+"agenda")
print("AgendaKey: %s" %self.agenda_key)
print("should create an agenda document")
if self.has_protocol and (self.agenda_key == "" or self.agenda_key is None):
@@ -297,8 +299,9 @@ class FetMeeting(Event):
slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung")
if Post.objects.filter(slug=slug).count() != 0:
raise ValidationError(_('Es existiert bereits eine Sitzung mit demselben Datum.'))
#dieser Check verhindert erneutes speichern
#if Post.objects.filter(slug=slug).count() != 0:
# raise ValidationError(_('Es existiert bereits eine Sitzung mit demselben Datum.'))
def save(self, *args, **kwargs):
self.title = "Fachschaftssitzung"