ep api class
This commit is contained in:
@@ -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
37
fet2020/documents/api.py
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user