Merge branch 'master' of https://git.fet.at/bofh/fet2020; make master pep8-ready again

This commit is contained in:
2020-09-07 11:42:16 +00:00
8 changed files with 129 additions and 132 deletions

View File

@@ -1,94 +1,19 @@
from etherpad_lite import EtherpadLiteClient
# from etherpad_lite import EtherpadLiteClient
# from django.conf import settings
from datetime import datetime, timedelta
from django.utils.text import slugify
# from django.utils.text import slugify
import urllib.parse
from django.conf import settings
# import os
from .api import ep
# from .etherpadlib import get_ep_sessionid2, add_ep_cookie
SERVER_URL = settings.ETHERPAD_CLIENT["exturl"]
t = datetime.now() + timedelta(days=1)
# 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
def get_pad_link(padID):
return urllib.parse.urljoin(SERVER_URL, 'p/' + g["groupID"] + '$' + slugify(padID))
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
if padID is None:
return "#"
if ep.get_epc():
return urllib.parse.urljoin(SERVER_URL, 'p/' + ep.group["groupID"] + '$' + str(padID))
return ""

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

@@ -0,0 +1,83 @@
from django.conf import settings
import os
import urllib.parse
from datetime import datetime, timedelta
from etherpad_lite import EtherpadLiteClient, EtherpadException
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 checkPadExists(self, padID=None):
print(self.epc.listPads(groupID=self.group["groupID"]))
if not padID:
return False
try:
self.epc.getRevisionsCount(padID=self.group["groupID"] + "$" + padID)
except EtherpadException as e:
print(e)
return False
return True
def createPadifNotExists(self, padid):
self.get_epc()
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()

View File

@@ -1,49 +1,24 @@
from etherpad_lite import EtherpadLiteClient
# from etherpad_lite import EtherpadLiteClient
from datetime import datetime, timedelta
# from datetime import datetime, timedelta
# from django.utils.text import slugify
import urllib.parse
# import urllib.parse
# from django.conf import settings
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
from .api import ep
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,
@@ -51,4 +26,11 @@ def add_ep_cookie(request, response):
domain=".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

@@ -40,8 +40,8 @@ def jobs_view(request, slug=None):
)
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

@@ -90,6 +90,7 @@ class MyEventForm(MyPostForm):
class MyFetMeetingForm(MyEventForm):
class Meta:
model = FetMeeting
fields = ['event_start', 'event_end', 'tags', 'has_agenda', 'has_protocol']
labels = {
'event_start': _('Start der Sitzung'),

View File

@@ -7,11 +7,13 @@ from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _
from taggit.managers import TaggableManager
# import documents
from documents import ep
from .managers import (
PostManager, ArticleManager, NewsManager, AllEventManager, EventManager, FetMeetingManager
)
# from ckeditor_uploader import RichTextUploadingField
# import uuid
import re
@@ -145,7 +147,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):

View File

@@ -75,7 +75,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)