fix 'go next' in articles and meeting-posts and member image url in posts

This commit is contained in:
2020-09-05 18:20:47 +00:00
parent cbc21eafa5
commit b21402f7ae
3 changed files with 26 additions and 20 deletions

View File

@@ -5,7 +5,6 @@ from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from django.utils.text import slugify from django.utils.text import slugify
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from members.models import Member
from taggit.managers import TaggableManager from taggit.managers import TaggableManager
from .managers import ( from .managers import (
@@ -138,10 +137,6 @@ class Post(models.Model):
def url(self): def url(self):
return reverse('posts.show', kwargs={"id": self.slug}) return reverse('posts.show', kwargs={"id": self.slug})
@property
def author_member(self):
return Member.all_members.filter(nickname=self.author.username).first()
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
"save the post with some defaults" "save the post with some defaults"
if (self.id is None) and (not self.slug): if (self.id is None) and (not self.slug):

View File

@@ -10,7 +10,7 @@ from rest_framework import viewsets
# from rest_framework import permissions # from rest_framework import permissions
from .models import Post, PostSerializer from .models import Post, PostSerializer
# from members.models import Member from members.models import Member
# from documents import add_ep_to_response, get_ep_sessionid2 # from documents import add_ep_to_response, get_ep_sessionid2
from documents import get_pad_link from documents import get_pad_link
from documents.etherpadlib import add_ep_cookie from documents.etherpadlib import add_ep_cookie
@@ -51,14 +51,18 @@ def show(request, id=None):
elif id != "" and id is not None: elif id != "" and id is not None:
p = Post.objects.get_visible_articles().get(slug=(id)) p = Post.objects.get_visible_articles().get(slug=(id))
# post_author = Member.all_members.filter(nickname=p.author) post_author = Member.all_members.filter(nickname=p.author).first()
author_image = None
if post_author:
author_image = post_author.image['avatar'].url
context = { context = {
"post": p, "post": p,
"next": get_next_dict().get(p.slug, None), "author_image": author_image,
"next": get_next_dict(p),
"related_posts": p.tags.similar_objects(), "related_posts": p.tags.similar_objects(),
"ep_link": get_pad_link(p.slug + "-agenda"), "ep_link": get_pad_link(p.slug + "-agenda"),
} }
response = render(request, 'posts/show.html', context) response = render(request, 'posts/show.html', context)
@@ -108,17 +112,24 @@ def tag_complete(request):
return HttpResponseServerError("Requires a term field.") return HttpResponseServerError("Requires a term field.")
def get_next_dict(): def get_next_dict(post=None):
# TODO: Docstring # TODO: Docstring
posts = Post.articles.get_visible_articles().values('slug') # TODO: bad implementation but it works!!
print(posts) if post.post_type == 'N' or post.post_type == 'E':
d = {} posts = Post.articles.get_visible_articles()
print(d) elif post.post_type == 'F':
posts = Post.objects.get_visible_articles().filter(post_type='F').order_by('-event_start')
d = ""
for k, v in enumerate(posts): for k, v in enumerate(posts):
if k == len(posts) - 1: if post.slug == v.slug:
if (k + 1) < len(posts):
d = posts[k + 1].slug
else:
d = posts[0].slug
break break
d[v['slug']] = posts[k + 1]['slug']
print(d)
return d return d

View File

@@ -15,9 +15,9 @@
</div> </div>
<div class="article-details"> <div class="article-details">
{{post.subtitle | tags_to_url }} {{post.subtitle | tags_to_url }}
{% if post.author_member != None %} {% if post.author != None %}
<div class="article-author"><a href="{% url 'member' post.author_member.nickname %}"> <div class="article-author"><a href="{% url 'member' post.author %}">
<img src="{{post.author_member.image | thumbnail_url:'avatar'}}" alt="" />{{post.author_member.nickname}} <img src="{{author_image}}" alt="" /> {{post.author}}
</a> </a>
</div> </div>
{% else %} {% else %}