Merge branch 'master' of https://git.fet.at/bofh/fet2020; make master pep8-ready again
This commit is contained in:
@@ -1,94 +1,19 @@
|
|||||||
from etherpad_lite import EtherpadLiteClient
|
# from etherpad_lite import EtherpadLiteClient
|
||||||
# from django.conf import settings
|
# from django.conf import settings
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
from django.utils.text import slugify
|
# from django.utils.text import slugify
|
||||||
import urllib.parse
|
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)
|
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):
|
def get_pad_link(padID):
|
||||||
return urllib.parse.urljoin(SERVER_URL, 'p/' + g["groupID"] + '$' + slugify(padID))
|
if padID is None:
|
||||||
|
return "#"
|
||||||
|
if ep.get_epc():
|
||||||
def add_ep_to_response(request, response):
|
return urllib.parse.urljoin(SERVER_URL, 'p/' + ep.group["groupID"] + '$' + str(padID))
|
||||||
if request.user is None:
|
return ""
|
||||||
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
|
|
||||||
|
|||||||
83
fet2020/documents/api.py
Normal file
83
fet2020/documents/api.py
Normal 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()
|
||||||
@@ -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
|
# from django.utils.text import slugify
|
||||||
import urllib.parse
|
# import urllib.parse
|
||||||
# from django.conf import settings
|
# from django.conf import settings
|
||||||
|
from .api import ep
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
|
|
||||||
def add_ep_cookie(request, response):
|
def add_ep_cookie(request, response):
|
||||||
response.set_cookie("HILib", "TestWert", domain="https://andis.2020.fet.at")
|
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(
|
response.set_cookie(
|
||||||
"sessionID",
|
"sessionID",
|
||||||
ep_sessid,
|
ep_sessid,
|
||||||
@@ -51,4 +26,11 @@ def add_ep_cookie(request, response):
|
|||||||
domain=".2020.fet.at",
|
domain=".2020.fet.at",
|
||||||
path="/"
|
path="/"
|
||||||
)
|
)
|
||||||
|
response.set_cookie(
|
||||||
|
"sessionID",
|
||||||
|
ep_sessid,
|
||||||
|
expires=expires,
|
||||||
|
domain=".2020.fet.at",
|
||||||
|
path="/p"
|
||||||
|
)
|
||||||
return response
|
return response
|
||||||
|
|||||||
@@ -192,6 +192,8 @@ THUMBNAIL_ALIASES = {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ETHERPAD_CLIENT = {
|
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"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,8 +40,8 @@ def jobs_view(request, slug=None):
|
|||||||
)
|
)
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"job_group": job_group,
|
"job_group": job_group, # Das sind die Tabs
|
||||||
"job_list": job_list,
|
"job_list": job_list, # Das ist die Liste, die dargestellt wird
|
||||||
}
|
}
|
||||||
return render(request, 'members/index.html', context)
|
return render(request, 'members/index.html', context)
|
||||||
|
|
||||||
|
|||||||
@@ -90,6 +90,7 @@ class MyEventForm(MyPostForm):
|
|||||||
class MyFetMeetingForm(MyEventForm):
|
class MyFetMeetingForm(MyEventForm):
|
||||||
class Meta:
|
class Meta:
|
||||||
model = FetMeeting
|
model = FetMeeting
|
||||||
|
|
||||||
fields = ['event_start', 'event_end', 'tags', 'has_agenda', 'has_protocol']
|
fields = ['event_start', 'event_end', 'tags', 'has_agenda', 'has_protocol']
|
||||||
labels = {
|
labels = {
|
||||||
'event_start': _('Start der Sitzung'),
|
'event_start': _('Start der Sitzung'),
|
||||||
|
|||||||
@@ -7,11 +7,13 @@ from django.utils.text import slugify
|
|||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from taggit.managers import TaggableManager
|
from taggit.managers import TaggableManager
|
||||||
|
|
||||||
|
# import documents
|
||||||
|
from documents import ep
|
||||||
|
|
||||||
from .managers import (
|
from .managers import (
|
||||||
PostManager, ArticleManager, NewsManager, AllEventManager, EventManager, FetMeetingManager
|
PostManager, ArticleManager, NewsManager, AllEventManager, EventManager, FetMeetingManager
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
# from ckeditor_uploader import RichTextUploadingField
|
# from ckeditor_uploader import RichTextUploadingField
|
||||||
# import uuid
|
# import uuid
|
||||||
import re
|
import re
|
||||||
@@ -145,7 +147,9 @@ class Post(models.Model):
|
|||||||
if (self.id is None) and (not self.slug):
|
if (self.id is None) and (not self.slug):
|
||||||
self.slug = slugify(self.public_date.date()) + "-" + slugify(self.title)
|
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")
|
print("should create an agenda document")
|
||||||
|
|
||||||
if self.has_protocol and (self.agenda_key == "" or self.agenda_key is None):
|
if self.has_protocol and (self.agenda_key == "" or self.agenda_key is None):
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ def show(request, id=None):
|
|||||||
"author_image": author_image,
|
"author_image": author_image,
|
||||||
"next": get_next_dict(p),
|
"next": get_next_dict(p),
|
||||||
"related_posts": p.tags.similar_objects(),
|
"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)
|
response = render(request, 'posts/show.html', context)
|
||||||
|
|||||||
Reference in New Issue
Block a user