diff --git a/fet2020/documents/__init__.py b/fet2020/documents/__init__.py index b592ac86..815ca963 100644 --- a/fet2020/documents/__init__.py +++ b/fet2020/documents/__init__.py @@ -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: diff --git a/fet2020/documents/api.py b/fet2020/documents/api.py new file mode 100644 index 00000000..e2c19905 --- /dev/null +++ b/fet2020/documents/api.py @@ -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 \ No newline at end of file diff --git a/fet2020/documents/etherpadlib.py b/fet2020/documents/etherpadlib.py index f23610bd..323cad9e 100644 --- a/fet2020/documents/etherpadlib.py +++ b/fet2020/documents/etherpadlib.py @@ -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 diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index cc773ddf..e01128cd 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -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" } diff --git a/fet2020/members/views.py b/fet2020/members/views.py index 3bd506e2..d82db449 100644 --- a/fet2020/members/views.py +++ b/fet2020/members/views.py @@ -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) diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index 77efafa2..ef256577 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -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 diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index cfb2a6b9..483618cd 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -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"