From 01e3e3d91296d846dfecaa67dd961ebf0f9a089e Mon Sep 17 00:00:00 2001 From: Patrick Mayr Date: Wed, 7 Sep 2022 09:56:02 +0000 Subject: [PATCH] optimise post show view --- fet2020/posts/models.py | 33 +++++++++++++++++++++++++++++++ fet2020/posts/views.py | 26 +----------------------- fet2020/templates/posts/show.html | 8 ++++---- 3 files changed, 38 insertions(+), 29 deletions(-) diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index a2b5b67d..08c71564 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -16,6 +16,7 @@ from django.utils.translation import gettext_lazy as _ from core.models import CustomFlatPage from documents import create_pad, get_pad_html, set_pad_html +from documents.api import get_pad_link from .managers import ( PostManager, ArticleManager, @@ -198,6 +199,38 @@ class Post(models.Model): ) return value + @property + def agenda_link(self): + agenda_link = "#" + if self.has_agenda: + agenda_link = get_pad_link(self.agenda_key) + + return agenda_link + + @property + def protocol_link(self): + protocol_link = "#" + if self.has_protocol: + protocol_link = get_pad_link(self.protocol_key) + + return protocol_link + + @property + def filename_agenda(self): + filename_agenda = None + if self.has_agenda and self.agenda_link != "#": + filename_agenda = self.slug + "-agenda.pdf" + + return filename_agenda + + @property + def filename_protocol(self): + filename_protocol = None + if self.has_agenda and self.protocol_link != "#": + filename_protocol = self.slug + "-protokoll.pdf" + + return filename_protocol + def get_agenda_key(self): """ Create a Etherpad Id for the Pad associated to this post. diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index f48ffbad..83f5a37d 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -7,7 +7,6 @@ from django.template.loader import render_to_string from django.utils import timezone from authentications.decorators import authenticated_user -from documents.api import get_pad_link from documents.etherpadlib import add_ep_cookie from members.models import Member from .forms import PostSearchForm @@ -119,25 +118,6 @@ def show(request, id=None): author = post_author author_image = post_author.image["avatar"].url - # etherpad links for agenda and protocol - ep_agenda_link = "#" - ep_protocol_link = "#" - # set filename for pdf, not a nice solution - filename_agenda = None - filename_protocol = None - - if post.has_agenda: - ep_agenda_link = get_pad_link(post.agenda_key) - - if ep_agenda_link != "#": - filename_agenda = post.slug + "-agenda.pdf" - - if post.has_protocol: - ep_protocol_link = get_pad_link(post.protocol_key) - - if ep_protocol_link != "#": - filename_protocol = post.slug + "-protokoll.pdf" - related_posts = post.tags.similar_objects() # list of non 'is_hidden' posts for related_posts for obj in related_posts: @@ -152,16 +132,12 @@ def show(request, id=None): "next": __next(post, public_only), "previous": __previous(post, public_only), "related_posts": related_posts[:4], - "ep_agenda_link": ep_agenda_link, - "ep_protocol_link": ep_protocol_link, - "filename_agenda": filename_agenda, - "filename_protocol": filename_protocol, } response = render(request, "posts/show.html", context) # check if etherpad server works - if ep_agenda_link or ep_protocol_link: + if post.agenda_link or post.protocol_link: try: response = add_ep_cookie(request, response) except Exception as e: diff --git a/fet2020/templates/posts/show.html b/fet2020/templates/posts/show.html index d045bca7..96fcdc61 100644 --- a/fet2020/templates/posts/show.html +++ b/fet2020/templates/posts/show.html @@ -205,12 +205,12 @@ x-transition:leave-end="transform origin-right opacity-0 scale-95" >
  • - + Bearbeiten
  • - {% if filename_agenda %} + {% if post.filename_agenda %}
  • @@ -241,11 +241,11 @@ x-transition:leave-end="transform origin-right opacity-0 scale-95" >
  • - + Bearbeiten
  • - {% if filename_protocol %} + {% if post.filename_protocol %}