diff --git a/fet2020/fet2020/views.py b/fet2020/fet2020/views.py index 801d2e49..ff4bac0b 100644 --- a/fet2020/fet2020/views.py +++ b/fet2020/fet2020/views.py @@ -5,7 +5,7 @@ from posts.models import Post, FetMeeting, Event def index(request): - posts = deque(Post.articles.all()) + posts = deque(Post.articles.get_visible_articles()) def get_tags(lst): for p in lst: diff --git a/fet2020/posts/admin.py b/fet2020/posts/admin.py index 32ae9ccb..c964ad38 100644 --- a/fet2020/posts/admin.py +++ b/fet2020/posts/admin.py @@ -22,9 +22,9 @@ make_fetmeeting.short_description = "In eine Fachschaftssitzung konvertieren" class MyPostAdmin(admin.ModelAdmin): form = MyPostForm model = Post - list_filter = ['is_pinned'] - list_display = ['title', 'subtitle', 'slug', 'public_date', 'is_pinned'] - ordering = ['-public_date'] + list_filter = ['is_pinned', 'is_hidden'] + list_display = ['title', 'subtitle', 'slug', 'public_date', 'is_pinned', 'is_hidden'] + ordering = ['is_hidden', '-public_date'] def add_view(self, request, form_url='', extra_context=None): extra_context = extra_context or {} diff --git a/fet2020/posts/forms.py b/fet2020/posts/forms.py index b8940956..4db5b7fd 100644 --- a/fet2020/posts/forms.py +++ b/fet2020/posts/forms.py @@ -23,7 +23,7 @@ class MyNewsForm(MyPostForm): model = News fields = [ 'title', 'subtitle', 'tags', 'image', 'body', 'slug', 'author', 'public_date', - 'is_pinned', + 'is_pinned', 'is_hidden', ] widgets = {'body': CKEditorUploadingWidget(config_name='default')} diff --git a/fet2020/posts/managers.py b/fet2020/posts/managers.py index 4678012b..2d0e01a9 100644 --- a/fet2020/posts/managers.py +++ b/fet2020/posts/managers.py @@ -7,6 +7,9 @@ class PostManager(models.Manager): def get_queryset(self): return super().get_queryset() + def get_visible_articles(self): + return self.get_queryset().filter(is_hidden=False) + class ArticleManager(models.Manager): """ @@ -19,8 +22,11 @@ class ArticleManager(models.Manager): | Q(post_type='N') ).order_by('-public_date') + def get_visible_articles(self): + return self.get_queryset().filter(is_hidden=False) + def get_pinned_article(self): - return self.get_queryset().filter(is_pinned=True) + return self.get_visible_articles().filter(is_pinned=True) class NewsManager(models.Manager): @@ -30,6 +36,9 @@ class NewsManager(models.Manager): def get_queryset(self): return super().get_queryset().filter(post_type='N') + def get_visible_articles(self): + return self.get_queryset().filter(is_hidden=False) + class AllEventManager(models.Manager): """ diff --git a/fet2020/posts/models.py b/fet2020/posts/models.py index 09138c34..8e95fd86 100644 --- a/fet2020/posts/models.py +++ b/fet2020/posts/models.py @@ -74,6 +74,9 @@ class Post(models.Model): # post is pinned at main page is_pinned = models.BooleanField(default=False) + # post is hidden from newsfeed (e.g. about) + is_hidden = models.BooleanField(default=False) + # Zusatz Info wenn ein Event gepostet wird event_start = models.DateTimeField('Event Start', null=True, blank=True) event_end = models.DateTimeField('Event Ende', null=True, blank=True) diff --git a/fet2020/posts/views.py b/fet2020/posts/views.py index 449218f8..4c449716 100644 --- a/fet2020/posts/views.py +++ b/fet2020/posts/views.py @@ -23,7 +23,7 @@ from collections import deque ################## def index(request): - posts = deque(Post.objects.order_by('-public_date').all()) + posts = deque(Post.objects.get_visible_articles().order_by('-public_date')) def f(p): return p.tags @@ -33,21 +33,23 @@ def index(request): def tags(request, tag=""): - posts = deque(Post.objects.filter(tags__name=tag)) - featured_post = Post.objects.filter(slug=tag).first() + posts = deque(Post.objects.get_visible_articles().filter(tags__name=tag)) + featured_post = Post.objects.get_visible_articles().filter(slug=tag).first() + context = { "posts": posts, "featured_post": featured_post, "tags_list": None, } + return render(request, 'posts/tag.html', context) def show(request, id=None): if id.isdigit() or id is int: - p = Post.objects.get(id=int(id)) + p = Post.objects.get_visible_articles().get(id=int(id)) elif id != "" and id is not None: - p = Post.objects.get(slug=(id)) + p = Post.objects.get_visible_articles().get(slug=(id)) # post_author = Member.all_members.filter(nickname=p.author) @@ -108,7 +110,7 @@ def tag_complete(request): def get_next_dict(): # TODO: Docstring - posts = Post.articles.values('slug') + posts = Post.articles.get_visible_articles().values('slug') print(posts) d = {} print(d)