posts sorted by public date or event start depend on post type

This commit is contained in:
2021-04-13 09:45:13 +00:00
parent 9a1b1a0884
commit bac25e25c7
4 changed files with 29 additions and 3 deletions

View File

@@ -6,7 +6,7 @@ from posts.models import Post, FetMeeting, Event
def index(request): def index(request):
posts = deque(Post.articles.get_visible_articles()) posts = deque(Post.articles.get_date_sorted_list())
posts_for_tags = deque(Post.objects.get_last_months_posts()) posts_for_tags = deque(Post.objects.get_last_months_posts())
def get_tags(lst): def get_tags(lst):

View File

@@ -12,6 +12,19 @@ class PostManager(models.Manager):
def get_visible_articles(self): def get_visible_articles(self):
return self.get_queryset().filter(is_hidden=False) return self.get_queryset().filter(is_hidden=False)
def get_date_sorted_list(self):
post_list = []
for post in self.get_visible_articles():
if post.post_type != "N":
post_list.append((post, post.event_start.date()))
else:
post_list.append((post, post.public_date))
result = sorted(post_list, key=lambda x: x[1], reverse=True)
posts = [x[0] for x in result]
return posts
def get_last_months_posts(self): def get_last_months_posts(self):
date_today = timezone.now().date() date_today = timezone.now().date()
return self.get_visible_articles().filter( return self.get_visible_articles().filter(
@@ -43,6 +56,19 @@ class ArticleManager(models.Manager):
def get_visible_articles(self): def get_visible_articles(self):
return self.get_queryset().filter(is_hidden=False) return self.get_queryset().filter(is_hidden=False)
def get_date_sorted_list(self):
post_list = []
for post in self.get_visible_articles():
if post.post_type != "N":
post_list.append((post, post.event_start.date()))
else:
post_list.append((post, post.public_date))
result = sorted(post_list, key=lambda x: x[1], reverse=True)
posts = [x[0] for x in result]
return posts
def get_pinned_article(self): def get_pinned_article(self):
return self.get_visible_articles().filter(is_pinned=True).first() return self.get_visible_articles().filter(is_pinned=True).first()

View File

@@ -265,7 +265,7 @@ class Post(models.Model):
) )
def __str__(self): def __str__(self):
return "Post (%s, %s): %s " % ( return "Post (%s, %s): %s" % (
self.slug, self.slug,
self.public_date.strftime("%d.%m.%Y"), self.public_date.strftime("%d.%m.%Y"),
self.title, self.title,

View File

@@ -24,7 +24,7 @@ logger = logging.getLogger(__name__)
def index(request): def index(request):
"Index von aktuellen Posts" "Index von aktuellen Posts"
posts = deque(Post.objects.get_visible_articles().order_by("-public_date")) posts = deque(Post.objects.get_date_sorted_list())
taglist = map(lambda post: post.tags, posts) taglist = map(lambda post: post.tags, posts)