From 4d5a03c01c759c44c8125ac71697876ee26f2ecb Mon Sep 17 00:00:00 2001 From: andis Date: Fri, 18 Sep 2020 04:29:56 +0000 Subject: [PATCH 1/4] remove some unused cookie from etherpad --- fet2020/documents/etherpadlib.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/fet2020/documents/etherpadlib.py b/fet2020/documents/etherpadlib.py index 7f7fb709..1b412650 100644 --- a/fet2020/documents/etherpadlib.py +++ b/fet2020/documents/etherpadlib.py @@ -19,13 +19,13 @@ def add_ep_cookie(request, response): path="/", ) return response - response.set_cookie( - "sessionID", - ep_sessid, - expires=expires, - domain=".2020.fet.at", - path="/" - ) + #response.set_cookie( + # "sessionID", + # ep_sessid, + # expires=expires, + # domain=".2020.fet.at", + # path="/" + #) response.set_cookie( "sessionID", ep_sessid, From 49f64b9108977b49cdc04f8e1f30d72da242a29a Mon Sep 17 00:00:00 2001 From: andis Date: Fri, 18 Sep 2020 04:30:35 +0000 Subject: [PATCH 2/4] use environ for environment variables --- fet2020/fet2020/settings.py | 17 ++++++++++++----- fet2020/requirements.txt | 2 +- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index e01128cd..beea82a1 100644 --- a/fet2020/fet2020/settings.py +++ b/fet2020/fet2020/settings.py @@ -11,6 +11,11 @@ https://docs.djangoproject.com/en/3.0/ref/settings/ """ import os +import environ +env = environ.Env( + # set casting, default value + DEBUG=(bool, True) +) # Prints and logs are written to console # TODO: Change before release @@ -37,13 +42,15 @@ BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ -# SECURITY WARNING: keep the secret key used in production secret! -SECRET_KEY = 'r37-i7l)vrduzz2-gira+z#u!p!di9#f+%s*5-bb($hg)55@ns' - # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = True +DEBUG = env('DEBUG') +if DEBUG: +# SECURITY WARNING: keep the secret key used in production secret! + SECRET_KEY = 'r37-i7l)vrduzz2-gira+z#u!p!di9#f+%s*5-bb($hg)55@ns' +else: + SECRET_KEY = env('SECRET_KEY') -ALLOWED_HOSTS = [] +ALLOWED_HOSTS = ["127.0.0.1", "localhost"] DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 1024 # Application definition diff --git a/fet2020/requirements.txt b/fet2020/requirements.txt index 0bf01482..aa82a08e 100644 --- a/fet2020/requirements.txt +++ b/fet2020/requirements.txt @@ -8,4 +8,4 @@ docutils==0.16 easy-thumbnails==2.7.0 etherpad-lite==0.5 django-filter -ldap3 \ No newline at end of file +ldap3django-environ From cce38b3f18739468f9fa1bdc1c9de6a71fc0adab Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 18 Sep 2020 13:37:50 +0000 Subject: [PATCH 3/4] make master pep8-ready again --- fet2020/documents/api.py | 10 ++++++---- fet2020/posts/forms.py | 2 +- fet2020/posts/models.py | 8 ++++---- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/fet2020/documents/api.py b/fet2020/documents/api.py index 206a12af..ecba3259 100644 --- a/fet2020/documents/api.py +++ b/fet2020/documents/api.py @@ -27,15 +27,17 @@ class ep_api(): raise e self.group = None self.epc = None - + def getPadHTML(self, padID): self.get_epc() - text=self.epc.getHTML(padID=self.group["groupID"] + "$" + padID)["html"] + text = self.epc.getHTML(padID=self.group["groupID"] + "$" + padID)["html"] return text - def setPadHTML(self, padID,html): + + def setPadHTML(self, padID, html): self.get_epc() - text=self.epc.setHTML(padID=self.group["groupID"] + "$" + padID, html=html) + self.epc.setHTML(padID=self.group["groupID"] + "$" + padID, html=html) return html + def checkPadExists(self, padID=None): print(self.epc.listPads(groupID=self.group["groupID"])) if not padID: diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index 0494b230..3bee2b9a 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -88,7 +88,7 @@ class MyEventForm(MyPostForm): class MyFetMeetingForm(MyEventForm): - #agenda_html = forms.CharField(widget = forms.TextInput()) + # agenda_html = forms.CharField(widget = forms.TextInput()) class Meta: model = FetMeeting diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 8da2cfe2..87963362 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -102,16 +102,15 @@ class Post(models.Model): def agenda_html(self): if not self.agenda_key: return None - h=ep.getPadHTML(self.agenda_key) + h = ep.getPadHTML(self.agenda_key) return h @agenda_html.setter def agenda_html(self, value): request_logger.info("Accessing etherpad ...") - h=ep.setPadHTML(self.agenda_key,value) + ep.setPadHTML(self.agenda_key, value) request_logger.info("set etherpad!") return value - @property def get_tagnames(self): @@ -178,7 +177,8 @@ class Post(models.Model): class PostSerializer(serializers.HyperlinkedModelSerializer): - agenda_html=serializers.CharField() + agenda_html = serializers.CharField() + class Meta: model = Post fields = [ From 3c74a8d7af7830909584dafbda01b317e73fa1ae Mon Sep 17 00:00:00 2001 From: Patrick Date: Fri, 18 Sep 2020 14:44:57 +0000 Subject: [PATCH 4/4] Verification if the agenda can be created. --- fet2020/posts/models.py | 54 ++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 87963362..0304e802 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -155,16 +155,9 @@ class Post(models.Model): if not self.public_date: self.public_date = timezone.now() - if (self.id is None) and (not self.slug): + if not self.slug: self.slug = slugify(self.public_date.date()) + "-" + slugify(self.title) - if self.has_agenda: - self.agenda_key = ep.createPadifNotExists(self.slug + "-agenda") - - if self.has_protocol: - self.protocol_key = ep.createPadifNotExists(self.slug + "-protocol") - request_logger.info(self.post_type) - super().save(*args, **kwargs) self.tags.set( @@ -255,31 +248,54 @@ class FetMeeting(Event): verbose_name = "Fet Sitzung" verbose_name_plural = "Fet Sitzungen" + def __get_slug(self): + self.slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung") + + if Post.objects.filter(slug=self.slug).exists(): + if Post.objects.get(slug=self.slug).id != self.id: + raise ValidationError( + _('Es existiert bereits eine Sitzung mit demselben Datum.') + ) + + def __get_agenda_key(self): + try: + self.agenda_key = ep.createPadifNotExists(self.slug + "-agenda") + except Exception as e: + raise ValidationError( + _('Die Agenda konnte nicht erstellt werden. Error: %(error)s'), + params={'error': str(e)}, + ) + + def __get_protocol_key(self): + try: + self.protocol_key = ep.createPadifNotExists(self.slug + "-protocol") + except Exception as e: + raise ValidationError( + _('Das Protokoll konnte nicht erstellt werden. Error: %(error)s'), + params={'error': str(e)}, + ) + def clean(self): if self.event_start is None: raise ValidationError(_('Das Datum des Events fehlt.')) elif (self.event_end) and (self.event_end < self.event_start): raise ValidationError(_('Das Ende des Events liegt vor dem Beginn.')) - slug = slugify(self.event_start.date()) + "-" + slugify("Fachschaftssitzung") + if not self.slug: + self.__get_slug() - if Post.objects.filter(slug=slug).exists(): - if Post.objects.get(slug=slug).id != self.id: - raise ValidationError(_('Es existiert bereits eine Sitzung mit demselben Datum.')) + if self.has_agenda: + self.__get_agenda_key() + + if self.has_protocol: + self.__get_protocol_key() def save(self, *args, **kwargs): self.title = "Fachschaftssitzung" - if not self.slug: - self.slug = slugify(self.event_start.date()) + "-" + slugify(self.title) - self.body = "TODO: Agenda + Protokoll Link" # TODO # self.image - # TODO - # self.protocol_key - # self.agenda_key - if not self.post_type: self.post_type = 'F'