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/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, diff --git a/fet2020/fet2020/settings.py b/fet2020/fet2020/settings.py index 5c9b9a63..a2d948c4 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,17 @@ 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 = ["127.0.0.1", "localhost"] -ALLOWED_HOSTS = ['uat1.2020.fet.at', '127.0.0.1'] DATA_UPLOAD_MAX_MEMORY_SIZE = 1024 * 1024 * 1024 # Application definition 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..0304e802 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): @@ -156,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( @@ -178,7 +170,8 @@ class Post(models.Model): class PostSerializer(serializers.HyperlinkedModelSerializer): - agenda_html=serializers.CharField() + agenda_html = serializers.CharField() + class Meta: model = Post fields = [ @@ -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' 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