reformatting pep8
This commit is contained in:
@@ -1,5 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
|
import logging
|
||||||
from urllib.request import URLError
|
from urllib.request import URLError
|
||||||
|
from datetime import timedelta
|
||||||
from django.contrib.auth.models import User
|
from django.contrib.auth.models import User
|
||||||
from django.core.validators import ValidationError
|
from django.core.validators import ValidationError
|
||||||
from django.db import models
|
from django.db import models
|
||||||
@@ -10,16 +12,31 @@ from django.utils.translation import gettext_lazy as _
|
|||||||
from taggit.managers import TaggableManager
|
from taggit.managers import TaggableManager
|
||||||
from documents.api import getPadHTML, setPadHTML, createPadifNotExists
|
from documents.api import getPadHTML, setPadHTML, createPadifNotExists
|
||||||
from .managers import (
|
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__)
|
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):
|
class Category(models.Model):
|
||||||
@@ -42,7 +59,7 @@ class Category(models.Model):
|
|||||||
class Post(models.Model):
|
class Post(models.Model):
|
||||||
# id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
# id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
|
||||||
legacy_id = models.IntegerField(null=True, blank=True)
|
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
|
# Titel des Posts
|
||||||
title = models.CharField(verbose_name="Titel", max_length=200)
|
title = models.CharField(verbose_name="Titel", max_length=200)
|
||||||
subtitle = models.CharField(max_length=500, null=True, blank=True)
|
subtitle = models.CharField(max_length=500, null=True, blank=True)
|
||||||
@@ -58,15 +75,13 @@ class Post(models.Model):
|
|||||||
|
|
||||||
tags = TaggableManager(blank=True)
|
tags = TaggableManager(blank=True)
|
||||||
# Datum ab dem etwas öffentlich sein soll
|
# 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)
|
imported_from = models.CharField(max_length=200, null=True, blank=True)
|
||||||
|
|
||||||
__choices = [
|
__choices = [("N", _("News")), ("E", _("Event")), ("F", _("FetMeeting"))]
|
||||||
('N', _('News')),
|
|
||||||
('E', _('Event')),
|
|
||||||
('F', _('FetMeeting'))
|
|
||||||
]
|
|
||||||
post_type = models.CharField(max_length=1, choices=__choices, editable=True)
|
post_type = models.CharField(max_length=1, choices=__choices, editable=True)
|
||||||
|
|
||||||
# post is pinned at main page
|
# post is pinned at main page
|
||||||
@@ -76,7 +91,9 @@ class Post(models.Model):
|
|||||||
is_hidden = models.BooleanField(verbose_name="UNSICHTBAR", default=False)
|
is_hidden = models.BooleanField(verbose_name="UNSICHTBAR", default=False)
|
||||||
|
|
||||||
# Zusatz Info wenn ein Event gepostet wird
|
# 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_end = models.DateTimeField(verbose_name="Event Ende", null=True, blank=True)
|
||||||
event_place = models.CharField(max_length=200, null=True, blank=True)
|
event_place = models.CharField(max_length=200, null=True, blank=True)
|
||||||
|
|
||||||
@@ -106,83 +123,116 @@ class Post(models.Model):
|
|||||||
try:
|
try:
|
||||||
html = getPadHTML(self.agenda_key)
|
html = getPadHTML(self.agenda_key)
|
||||||
except URLError as error:
|
except URLError as error:
|
||||||
logger.error("Can't get the agenda html from agenda '%s'. Error: %s",
|
logger.error(
|
||||||
self.agenda_key, 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
|
html = None
|
||||||
return html
|
return html
|
||||||
|
|
||||||
@agenda_html.setter
|
@agenda_html.setter
|
||||||
def agenda_html(self, value):
|
def agenda_html(self, value):
|
||||||
if not self.agenda_key:
|
if not self.agenda_key:
|
||||||
self.agenda_key = self.get_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:
|
try:
|
||||||
setPadHTML(self.agenda_key, value)
|
setPadHTML(self.agenda_key, value)
|
||||||
except URLError as error:
|
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
|
return value
|
||||||
|
|
||||||
def get_agenda_key(self):
|
def get_agenda_key(self):
|
||||||
"Create a Etherpad Id for the Pad associated to this post. Creates the pad if it doesn't exist"
|
"Create a Etherpad Id for the Pad associated to this post. Creates the pad if it doesn't exist"
|
||||||
if not self.slug:
|
if not self.slug:
|
||||||
return None
|
return None
|
||||||
try:
|
return create_pad_for_post(self.slug, typ="agenda")
|
||||||
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
|
|
||||||
|
|
||||||
def get_protocol_key(self):
|
def get_protocol_key(self):
|
||||||
"Create a Etherpad Id for the Pad associated to this post. Creates the pad if it doesn't exist"
|
"Create a Etherpad Id for the Pad associated to this post. Creates the pad if it doesn't exist"
|
||||||
if not self.slug:
|
if not self.slug:
|
||||||
return None
|
return None
|
||||||
|
return create_pad_for_post(self.slug, typ="protocol")
|
||||||
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
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def get_tagnames(self):
|
def get_tagnames(self):
|
||||||
return ["#%s" % t for t in self.tags.names()]
|
return ["#%s" % t for t in self.tags.names()]
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def tag_string(self):
|
def tag_string(self):
|
||||||
return self.get_tags()
|
return self.get_tags()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def imageurl(self):
|
def imageurl(self):
|
||||||
""" returns the url to the image"""
|
""" returns the url to the image"""
|
||||||
if self.image:
|
if self.image:
|
||||||
return self.image.url
|
return self.image.url
|
||||||
|
|
||||||
image = self.find_an_image()
|
image = self.find_an_image()
|
||||||
if image:
|
if image:
|
||||||
return image.url
|
return image.url
|
||||||
return ""
|
return ""
|
||||||
|
|
||||||
#def key(self):
|
# def key(self):
|
||||||
# return self.slug or self.id
|
# return self.slug or self.id
|
||||||
|
|
||||||
def find_an_image(self):
|
def find_an_image(self):
|
||||||
"find an image via another post"
|
"find an image via another post"
|
||||||
# TODO: Explain why this image is selected on save of the image
|
# 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
|
# Query all posts that have a slug that equals one of the tags
|
||||||
posts1 = Post.objects.filter(
|
posts1 = (
|
||||||
slug__in=self.tags.names()
|
Post.objects.filter(slug__in=self.tags.names())
|
||||||
).filter(image__isnull=False)[0:1].all()
|
.filter(image__isnull=False)[0:1]
|
||||||
|
.all()
|
||||||
|
)
|
||||||
if len(posts1) > 0:
|
if len(posts1) > 0:
|
||||||
return posts1.get().image
|
return posts1.get().image
|
||||||
|
|
||||||
@@ -194,7 +244,7 @@ class Post(models.Model):
|
|||||||
|
|
||||||
@property
|
@property
|
||||||
def url(self):
|
def url(self):
|
||||||
return reverse('posts.show', kwargs={"id": self.slug})
|
return reverse("posts.show", kwargs={"id": self.slug})
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
# save the post with some defaults
|
# save the post with some defaults
|
||||||
@@ -207,12 +257,16 @@ class Post(models.Model):
|
|||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
self.tags.set(
|
self.tags.set(
|
||||||
*re.findall(r'\#([\d\w-]+)', str(self.subtitle)),
|
*re.findall(r"\#([\d\w-]+)", str(self.subtitle)),
|
||||||
*re.findall(r'\#([\d\w-]+)', str(self.title))
|
*re.findall(r"\#([\d\w-]+)", str(self.title))
|
||||||
)
|
)
|
||||||
|
|
||||||
def __str__(self):
|
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):
|
class News(Post):
|
||||||
@@ -226,7 +280,7 @@ class News(Post):
|
|||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.post_type:
|
if not self.post_type:
|
||||||
self.post_type = 'N'
|
self.post_type = "N"
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
@@ -243,13 +297,13 @@ class Event(Post):
|
|||||||
|
|
||||||
def clean(self):
|
def clean(self):
|
||||||
if self.event_end is None or self.event_start is None:
|
if self.event_end is None or self.event_start is None:
|
||||||
raise ValidationError(_('Das Datum des Events fehlt.'))
|
raise ValidationError(_("Das Datum des Events fehlt."))
|
||||||
elif self.event_end < self.event_start:
|
if self.event_end < self.event_start:
|
||||||
raise ValidationError(_('Das Ende des Events liegt vor dem Beginn.'))
|
raise ValidationError(_("Das Ende des Events liegt vor dem Beginn."))
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
if not self.post_type:
|
if not self.post_type:
|
||||||
self.post_type = 'E'
|
self.post_type = "E"
|
||||||
|
|
||||||
super().save(*args, **kwargs)
|
super().save(*args, **kwargs)
|
||||||
|
|
||||||
@@ -269,56 +323,50 @@ class FetMeeting(Event):
|
|||||||
if Post.objects.filter(slug=slug).exists():
|
if Post.objects.filter(slug=slug).exists():
|
||||||
if Post.objects.get(slug=slug).id != self.id:
|
if Post.objects.get(slug=slug).id != self.id:
|
||||||
raise ValidationError(
|
raise ValidationError(
|
||||||
_('Es existiert bereits eine Sitzung mit demselben Datum.')
|
_("Es existiert bereits eine Sitzung mit demselben Datum.")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
return slug
|
return slug
|
||||||
|
|
||||||
def __get_agenda_key(self):
|
# def __get_agenda_key(self):
|
||||||
if not self.slug:
|
# if not self.slug:
|
||||||
return None
|
# 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:
|
# def __get_protocol_key(self):
|
||||||
agenda_key = createPadifNotExists(self.slug + "-agenda")
|
# if not self.slug:
|
||||||
except Exception as error:
|
# return None#
|
||||||
raise ValidationError(
|
#
|
||||||
_('Die Agenda konnte nicht erstellt werden. Error: %(error)s'),
|
# try:
|
||||||
params={'error': str(error)},
|
# protocol_key = createPadifNotExists(self.slug + "-protocol")
|
||||||
) from error
|
# except URLError as error:
|
||||||
|
# raise ValidationError(
|
||||||
|
# _("Das Protokoll konnte nicht erstellt werden. Error: %(error)s"),
|
||||||
return agenda_key
|
# params={"error": str(error)},
|
||||||
|
# ) from error#
|
||||||
def __get_protocol_key(self):
|
#
|
||||||
if not self.slug:
|
# return protocol_key
|
||||||
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 clean(self):
|
def clean(self):
|
||||||
if self.event_start is None:
|
super().clean()
|
||||||
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.'))
|
|
||||||
|
|
||||||
if not self.slug:
|
if not self.slug:
|
||||||
self.slug = self.__get_slug()
|
self.slug = self.__get_slug()
|
||||||
|
|
||||||
if self.has_agenda:
|
if self.has_agenda:
|
||||||
self.agenda_key = self.__get_agenda_key()
|
self.agenda_key = self.get_agenda_key()
|
||||||
|
|
||||||
if self.has_protocol:
|
if self.has_protocol:
|
||||||
self.protocol_key = self.__get_protocol_key()
|
self.protocol_key = self.get_protocol_key()
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
self.title = "Fachschaftssitzung"
|
self.title = "Fachschaftssitzung"
|
||||||
@@ -327,7 +375,7 @@ class FetMeeting(Event):
|
|||||||
# self.image
|
# self.image
|
||||||
|
|
||||||
if not self.post_type:
|
if not self.post_type:
|
||||||
self.post_type = 'F'
|
self.post_type = "F"
|
||||||
|
|
||||||
if not self.event_place:
|
if not self.event_place:
|
||||||
self.event_place = "FET"
|
self.event_place = "FET"
|
||||||
|
|||||||
Reference in New Issue
Block a user