From 8ff4a17629326e99240dfeab99afd89c6b9457db Mon Sep 17 00:00:00 2001 From: andis Date: Thu, 31 Dec 2020 08:02:38 +0000 Subject: [PATCH] exceptions -> Url errors, documentation --- fet2020/posts/models.py | 69 +++++++++++++++++++++-------------------- 1 file changed, 35 insertions(+), 34 deletions(-) diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 4efe36d9..f8e025b0 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -1,3 +1,5 @@ +import re +from urllib.request import URLError from django.contrib.auth.models import User from django.core.validators import ValidationError from django.db import models @@ -7,12 +9,11 @@ from django.utils.text import slugify 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 ) -import re + from datetime import timedelta @@ -104,50 +105,51 @@ class Post(models.Model): try: html = getPadHTML(self.agenda_key) - except Exception as e: - logger.error("Can't get the agenda html from agenda '%s'. Error: %s", self.agenda_key, e) + except URLError as error: + logger.error("Can't get the agenda html from agenda '%s'. Error: %s", + self.agenda_key, error) html = None - return html @agenda_html.setter - def agenda_html(self, value): - request_logger.info("Accessing etherpad ...") + def agenda_html(self, value): if not self.agenda_key: - request_logger.info("not agenda key!") - if not value or value == "": - return value self.agenda_key = self.get_agenda_key() - request_logger.info("AGENDA KEY: %s ", self.agenda_key) - request_logger.info("VALUE: %s ", value) - if self.agenda_key: - try: - setPadHTML(self.agenda_key, value) - except Exception as e: - request_logger.info("Es konnte kein Pad von der Agenda '{}' erzeugt werden. Error: {}".format(self.agenda_key, e)) - request_logger.info("set etherpad!") + 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.info("set etherpad! for post %s id: %s", self.slug,self.agenda_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 Exception as e: - request_logger.info("Die Agenda konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e)) + 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 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 Exception as e: + except URLError as e: request_logger.info("Das Protokoll konnte von dem Slug '{}' nicht erstellt werden. Error: {}".format(self.slug, e)) return None @@ -165,12 +167,11 @@ class Post(models.Model): """ returns the url to the image""" if self.image: return self.image.url - else: - image = self.find_an_image() - if image: - return image.url - else: - return "" + + image = self.find_an_image() + if image: + return image.url + return "" #def key(self): # return self.slug or self.id @@ -270,7 +271,7 @@ class FetMeeting(Event): raise ValidationError( _('Es existiert bereits eine Sitzung mit demselben Datum.') ) - return None + return slug @@ -280,12 +281,12 @@ class FetMeeting(Event): try: agenda_key = createPadifNotExists(self.slug + "-agenda") - except Exception as e: + except Exception as error: raise ValidationError( _('Die Agenda konnte nicht erstellt werden. Error: %(error)s'), - params={'error': str(e)}, - ) - return None + params={'error': str(error)}, + ) from error + return agenda_key