From f0cac038759c375b25304d73ab75f99f77214d7a Mon Sep 17 00:00:00 2001 From: andis Date: Thu, 31 Dec 2020 09:14:09 +0000 Subject: [PATCH] reformatting pep8 --- fet2020/posts/models.py | 234 ++++++++++++++++++++++++---------------- 1 file changed, 141 insertions(+), 93 deletions(-) diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index f8e025b0..3acf3c31 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -1,5 +1,7 @@ import re +import logging from urllib.request import URLError +from datetime import timedelta from django.contrib.auth.models import User from django.core.validators import ValidationError from django.db import models @@ -10,16 +12,31 @@ from django.utils.translation import gettext_lazy as _ from taggit.managers import TaggableManager from documents.api import getPadHTML, setPadHTML, createPadifNotExists from .managers import ( - PostManager, ArticleManager, NewsManager, AllEventManager, EventManager, FetMeetingManager + PostManager, + ArticleManager, + NewsManager, + AllEventManager, + EventManager, + FetMeetingManager, ) - - -from datetime import timedelta - -import logging logger = logging.getLogger(__name__) -request_logger = logging.getLogger('django.request') +request_logger = logging.getLogger("django.request") + + +def create_pad_for_post(slug, typ="agenda"): + try: + agenda_key = createPadifNotExists(slug + "-" + typ) + except URLError as error: + request_logger.info( + """%s konnte von dem Slug '%s' nicht erstellt werden. + Error: %s""", + typ, + slug, + error, + ) + return None + return agenda_key class Category(models.Model): @@ -42,7 +59,7 @@ class Category(models.Model): class Post(models.Model): # id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False) legacy_id = models.IntegerField(null=True, blank=True) - legacy_rubrik_id = models.IntegerField(null=True,blank=True) + legacy_rubrik_id = models.IntegerField(null=True, blank=True) # Titel des Posts title = models.CharField(verbose_name="Titel", max_length=200) subtitle = models.CharField(max_length=500, null=True, blank=True) @@ -58,15 +75,13 @@ class Post(models.Model): tags = TaggableManager(blank=True) # Datum ab dem etwas öffentlich sein soll - public_date = models.DateField(verbose_name="Veröffentlichung", null=True, blank=True, default=timezone.now) + public_date = models.DateField( + verbose_name="Veröffentlichung", null=True, blank=True, default=timezone.now + ) imported_from = models.CharField(max_length=200, null=True, blank=True) - __choices = [ - ('N', _('News')), - ('E', _('Event')), - ('F', _('FetMeeting')) - ] + __choices = [("N", _("News")), ("E", _("Event")), ("F", _("FetMeeting"))] post_type = models.CharField(max_length=1, choices=__choices, editable=True) # post is pinned at main page @@ -76,7 +91,9 @@ class Post(models.Model): is_hidden = models.BooleanField(verbose_name="UNSICHTBAR", default=False) # Zusatz Info wenn ein Event gepostet wird - event_start = models.DateTimeField(verbose_name="Event Start", null=True, blank=True) + event_start = models.DateTimeField( + verbose_name="Event Start", null=True, blank=True + ) event_end = models.DateTimeField(verbose_name="Event Ende", null=True, blank=True) event_place = models.CharField(max_length=200, null=True, blank=True) @@ -106,83 +123,116 @@ class Post(models.Model): try: html = getPadHTML(self.agenda_key) except URLError as error: - logger.error("Can't get the agenda html from agenda '%s'. Error: %s", - self.agenda_key, error) + logger.error( + "Can't get the agenda html from agenda '%s'. Error: %s", + self.agenda_key, + error, + ) + html = None + return html + @property + def protocol_html(self): + if not self.protocol_key: + return None + + try: + html = getPadHTML(self.protocol_key) + except URLError as error: + logger.error( + "Can't get the agenda html from agenda '%s'. Error: %s", + self.protocol_key, + error, + ) html = None return html @agenda_html.setter - def agenda_html(self, value): + def agenda_html(self, value): if not self.agenda_key: self.agenda_key = self.get_agenda_key() + if not value or not self.agenda_key: + return None - if not value: - return None - if not self.agenda_key: - return None - try: setPadHTML(self.agenda_key, value) except URLError as error: - request_logger.error("Es konnte kein Pad von der Agenda '{}' erzeugt werden. Error: {}".format(self.agenda_key, error)) + request_logger.error( + """Es konnte kein Pad von der Agenda '%s' erzeugt werden. + Error: %s""", + self.agenda_key, + error, + ) - request_logger.info("set etherpad! for post %s id: %s", self.slug,self.agenda_key) + request_logger.info( + "set etherpad! for post %s id: %s", self.slug, self.agenda_key + ) + return value + + @protocol_html.setter + def protocol_html(self, value): + if not self.protocol_key: + self.protocol_key = self.get_protocol_key() + if not value or not self.protocol_key: + return None + + try: + setPadHTML(self.protocol_key, value) + except URLError as error: + request_logger.error( + """Es konnte kein Pad von der Agenda '%s' erzeugt werden. + Error: %s""", + self.protocol_key, + error, + ) + + request_logger.info( + "set etherpad! for post %s id: %s", self.slug, self.protocol_key + ) return value def get_agenda_key(self): "Create a Etherpad Id for the Pad associated to this post. Creates the pad if it doesn't exist" if not self.slug: return None - try: - agenda_key = createPadifNotExists(self.slug + "-agenda") - except URLError as error: - request_logger.info( - """Die Agenda konnte von dem Slug '%s' nicht erstellt werden. - Error: %s""",self.slug, error) - return None - return agenda_key + return create_pad_for_post(self.slug, typ="agenda") def get_protocol_key(self): "Create a Etherpad Id for the Pad associated to this post. Creates the pad if it doesn't exist" if not self.slug: return None - - try: - protocol_key = createPadifNotExists(self.slug + "-protocol") - except URLError as e: - request_logger.info("Das Protokoll konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e)) - return None - - return protocol_key + return create_pad_for_post(self.slug, typ="protocol") @property def get_tagnames(self): return ["#%s" % t for t in self.tags.names()] + @property def tag_string(self): return self.get_tags() - + @property def imageurl(self): """ returns the url to the image""" if self.image: return self.image.url - + image = self.find_an_image() if image: return image.url return "" - #def key(self): + # def key(self): # return self.slug or self.id def find_an_image(self): "find an image via another post" # TODO: Explain why this image is selected on save of the image # Query all posts that have a slug that equals one of the tags - posts1 = Post.objects.filter( - slug__in=self.tags.names() - ).filter(image__isnull=False)[0:1].all() + posts1 = ( + Post.objects.filter(slug__in=self.tags.names()) + .filter(image__isnull=False)[0:1] + .all() + ) if len(posts1) > 0: return posts1.get().image @@ -194,7 +244,7 @@ class Post(models.Model): @property def url(self): - return reverse('posts.show', kwargs={"id": self.slug}) + return reverse("posts.show", kwargs={"id": self.slug}) def save(self, *args, **kwargs): # save the post with some defaults @@ -207,12 +257,16 @@ class Post(models.Model): super().save(*args, **kwargs) self.tags.set( - *re.findall(r'\#([\d\w-]+)', str(self.subtitle)), - *re.findall(r'\#([\d\w-]+)', str(self.title)) + *re.findall(r"\#([\d\w-]+)", str(self.subtitle)), + *re.findall(r"\#([\d\w-]+)", str(self.title)) ) def __str__(self): - return "Post (%s, %s): %s " % (self.slug, self.public_date.strftime("%d.%m.%Y"), self.title) + return "Post (%s, %s): %s " % ( + self.slug, + self.public_date.strftime("%d.%m.%Y"), + self.title, + ) class News(Post): @@ -226,7 +280,7 @@ class News(Post): def save(self, *args, **kwargs): if not self.post_type: - self.post_type = 'N' + self.post_type = "N" super().save(*args, **kwargs) @@ -243,13 +297,13 @@ class Event(Post): def clean(self): if self.event_end is None or self.event_start is None: - raise ValidationError(_('Das Datum des Events fehlt.')) - elif self.event_end < self.event_start: - raise ValidationError(_('Das Ende des Events liegt vor dem Beginn.')) + raise ValidationError(_("Das Datum des Events fehlt.")) + if self.event_end < self.event_start: + raise ValidationError(_("Das Ende des Events liegt vor dem Beginn.")) def save(self, *args, **kwargs): if not self.post_type: - self.post_type = 'E' + self.post_type = "E" super().save(*args, **kwargs) @@ -269,56 +323,50 @@ class FetMeeting(Event): 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.') + _("Es existiert bereits eine Sitzung mit demselben Datum.") ) - return slug - def __get_agenda_key(self): - if not self.slug: - return None +# def __get_agenda_key(self): +# if not self.slug: +# return None## +# +# try: +# agenda_key = createPadifNotExists(self.slug + "-agenda") +# except Exception as error: +# raise ValidationError( +# _("Die Agenda konnte nicht erstellt werden. Error: %(error)s"), +# params={"error": str(error)}, +# ) from error +# +# return agenda_key - try: - agenda_key = createPadifNotExists(self.slug + "-agenda") - except Exception as error: - raise ValidationError( - _('Die Agenda konnte nicht erstellt werden. Error: %(error)s'), - params={'error': str(error)}, - ) from error - - - return agenda_key - - def __get_protocol_key(self): - if not self.slug: - return None - - try: - protocol_key = createPadifNotExists(self.slug + "-protocol") - except Exception as e: - raise ValidationError( - _('Das Protokoll konnte nicht erstellt werden. Error: %(error)s'), - params={'error': str(e)}, - ) - return None - - return protocol_key +# def __get_protocol_key(self): +# if not self.slug: +# return None# +# +# try: +# protocol_key = createPadifNotExists(self.slug + "-protocol") +# except URLError as error: +# raise ValidationError( +# _("Das Protokoll konnte nicht erstellt werden. Error: %(error)s"), +# params={"error": str(error)}, +# ) from error# +# +# return protocol_key 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.')) + super().clean() if not self.slug: self.slug = self.__get_slug() if self.has_agenda: - self.agenda_key = self.__get_agenda_key() + self.agenda_key = self.get_agenda_key() if self.has_protocol: - self.protocol_key = self.__get_protocol_key() + self.protocol_key = self.get_protocol_key() def save(self, *args, **kwargs): self.title = "Fachschaftssitzung" @@ -327,7 +375,7 @@ class FetMeeting(Event): # self.image if not self.post_type: - self.post_type = 'F' + self.post_type = "F" if not self.event_place: self.event_place = "FET"