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):
|
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
|
# Set the pinned post.
|
||||||
pinned_post = Post.articles.pinned()
|
if pinned_post := Post.articles.pinned():
|
||||||
if pinned_post:
|
posts = posts.exclude(id=pinned_post.id)
|
||||||
# remove the pinned post
|
post_count -= 1
|
||||||
posts.remove(pinned_post)
|
|
||||||
|
|
||||||
featured_event = Event.only_events.future_events().first()
|
featured_event = Event.only_events.future_events().first()
|
||||||
# if there is no futurity event
|
# If there is no futurity event, get the last event.
|
||||||
if not featured_event:
|
if featured_event is None:
|
||||||
featured_event = Event.only_events.past_events().first()
|
featured_event = Event.only_events.past_events().first()
|
||||||
|
|
||||||
featured_meeting = deque([])
|
featured_meeting = deque([])
|
||||||
@@ -24,7 +25,7 @@ def index(request):
|
|||||||
featured_meeting.append(FetMeeting.objects.past_events().first())
|
featured_meeting.append(FetMeeting.objects.past_events().first())
|
||||||
|
|
||||||
context = {
|
context = {
|
||||||
"posts": deque(list(posts)[:5]),
|
"posts": posts[:post_count],
|
||||||
"events": Event.all_events.future_events()[:5],
|
"events": Event.all_events.future_events()[:5],
|
||||||
"featured_post": pinned_post,
|
"featured_post": pinned_post,
|
||||||
"featured_event": featured_event,
|
"featured_event": featured_event,
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ class NewsForm(PostForm):
|
|||||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||||
),
|
),
|
||||||
"image": "Verwendbare Formate: ...",
|
"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 = {
|
labels = {
|
||||||
@@ -72,7 +75,10 @@ class EventForm(PostForm):
|
|||||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
||||||
),
|
),
|
||||||
"image": "Verwendbare Formate: Bildformate",
|
"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 = {
|
labels = {
|
||||||
@@ -115,7 +121,7 @@ class FetMeetingForm(PostForm):
|
|||||||
}
|
}
|
||||||
|
|
||||||
help_texts = {
|
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": (
|
"tags": (
|
||||||
"Die Hashtags ohne '#' eintragen, und mit Komma kann man mehrere Tags anfügen."
|
"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"]
|
fields = ["event_start", "event_end", "event_place"]
|
||||||
|
|
||||||
help_texts = {
|
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 = {
|
labels = {
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
import datetime
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Case, Q, When
|
from django.db.models import Case, Q, When
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
@@ -80,7 +82,32 @@ class ArticleManager(PublishedManager, models.Manager):
|
|||||||
return self.published(public)
|
return self.published(public)
|
||||||
|
|
||||||
def pinned(self, public=True):
|
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):
|
class NewsManager(PublishedManager, models.Manager):
|
||||||
|
|||||||
Reference in New Issue
Block a user