News are now pinned for 1 month and events for 7 days.
This commit is contained in:
@@ -6,17 +6,18 @@ from posts.models import Event, FetMeeting, Post
|
||||
|
||||
|
||||
def index(request):
|
||||
posts = deque(Post.articles.date_sorted_list())
|
||||
posts = Post.articles.date_sorted_list()
|
||||
# A maximum of 5 posts should be displayed on the startpage.
|
||||
post_count = 5
|
||||
|
||||
# set the pinned post
|
||||
pinned_post = Post.articles.pinned()
|
||||
if pinned_post:
|
||||
# remove the pinned post
|
||||
posts.remove(pinned_post)
|
||||
# Set the pinned post.
|
||||
if pinned_post := Post.articles.pinned():
|
||||
posts = posts.exclude(id=pinned_post.id)
|
||||
post_count -= 1
|
||||
|
||||
featured_event = Event.only_events.future_events().first()
|
||||
# if there is no futurity event
|
||||
if not featured_event:
|
||||
# If there is no futurity event, get the last event.
|
||||
if featured_event is None:
|
||||
featured_event = Event.only_events.past_events().first()
|
||||
|
||||
featured_meeting = deque([])
|
||||
@@ -24,7 +25,7 @@ def index(request):
|
||||
featured_meeting.append(FetMeeting.objects.past_events().first())
|
||||
|
||||
context = {
|
||||
"posts": deque(list(posts)[:5]),
|
||||
"posts": posts[:post_count],
|
||||
"events": Event.all_events.future_events()[:5],
|
||||
"featured_post": pinned_post,
|
||||
"featured_event": featured_event,
|
||||
|
||||
@@ -40,7 +40,10 @@ class NewsForm(PostForm):
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
"image": "Verwendbare Formate: ...",
|
||||
"is_pinned": ("Dieser Post soll an die Startseite als erster Post angeheftet werden."),
|
||||
"is_pinned": (
|
||||
"Der Post soll als erster auf der Startseite angeheftet werden und sich "
|
||||
"automatisch einen Monat nach der Veröffentlichung wieder lösen."
|
||||
),
|
||||
}
|
||||
|
||||
labels = {
|
||||
@@ -72,7 +75,10 @@ class EventForm(PostForm):
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
"image": "Verwendbare Formate: Bildformate",
|
||||
"is_pinned": ("Dieses Event soll an die Startseite als erster Post angeheftet werden."),
|
||||
"is_pinned": (
|
||||
"Dieses Event soll als erstes auf der Startseite angeheftet werden und sich "
|
||||
"automatisch einen Monat nach der Veröffentlichung wieder lösen."
|
||||
),
|
||||
}
|
||||
|
||||
labels = {
|
||||
@@ -115,7 +121,7 @@ class FetMeetingForm(PostForm):
|
||||
}
|
||||
|
||||
help_texts = {
|
||||
"event_end": "Bei leerer Eingabe werden 2h zur Startzeit dazugezählt.",
|
||||
"event_end": "Bei einer leeren Eingabe werden 2 Stunden zur Startzeit dazugezählt.",
|
||||
"tags": (
|
||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||
),
|
||||
@@ -223,7 +229,7 @@ class FetMeetingCreateForm(forms.ModelForm):
|
||||
fields = ["event_start", "event_end", "event_place"]
|
||||
|
||||
help_texts = {
|
||||
"event_end": "Bei leerer Eingabe werden 2h zur Startzeit dazugezählt.",
|
||||
"event_end": "Bei einer leeren Eingabe werden 2 Stunden zur Startzeit dazugezählt.",
|
||||
}
|
||||
|
||||
labels = {
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
import datetime
|
||||
|
||||
from django.db import models
|
||||
from django.db.models import Case, Q, When
|
||||
from django.utils import timezone
|
||||
@@ -80,7 +82,32 @@ class ArticleManager(PublishedManager, models.Manager):
|
||||
return self.published(public)
|
||||
|
||||
def pinned(self, public=True):
|
||||
return self.published(public).filter(is_pinned=True).first()
|
||||
# Get date for pinned news that is max 1 month old.
|
||||
post_date = datetime.date.today()
|
||||
__month = post_date.month
|
||||
__year = post_date.year
|
||||
|
||||
if __month != 0:
|
||||
__month -= 1
|
||||
else:
|
||||
# If the current month is January, you get the date from December of previous year.
|
||||
__month = 12
|
||||
__year -= 1
|
||||
|
||||
post_date = post_date.replace(year=__year, month=__month)
|
||||
|
||||
# Get date for event posts that is max 7 days old.
|
||||
event_date = datetime.date.today() - datetime.timedelta(7)
|
||||
|
||||
return (
|
||||
self.published(public)
|
||||
.filter(is_pinned=True)
|
||||
.filter(
|
||||
(Q(post_type="N") & Q(public_date__gt=post_date))
|
||||
| (Q(post_type="E") & Q(event_end__date__gt=event_date))
|
||||
)
|
||||
.first()
|
||||
)
|
||||
|
||||
|
||||
class NewsManager(PublishedManager, models.Manager):
|
||||
|
||||
Reference in New Issue
Block a user