diff --git a/boards/abstracts/settingsmanager.py b/boards/abstracts/settingsmanager.py --- a/boards/abstracts/settingsmanager.py +++ b/boards/abstracts/settingsmanager.py @@ -19,6 +19,8 @@ SETTING_LAST_NOTIFICATION_ID = 'last_not SETTING_IMAGE_VIEWER = 'image_viewer' SETTING_TRIPCODE = 'tripcode' +FAV_THREAD_NO_UPDATES = -1 + DEFAULT_THEME = 'md' @@ -124,8 +126,13 @@ class SettingsManager: def add_or_read_fav_thread(self, opening_post): threads = self.get_fav_threads() - threads[str(opening_post.id)] = opening_post.get_thread().get_replies()\ - .last().id + thread = opening_post.get_thread() + # Don't check for new posts if the thread is archived already + if thread.is_archived(): + last_id = FAV_THREAD_NO_UPDATES + else: + last_id = thread.get_replies().last().id + threads[str(opening_post.id)] = last_id self.set_setting(SETTING_FAVORITE_THREADS, threads) def del_fav_thread(self, opening_post): diff --git a/boards/models/thread.py b/boards/models/thread.py --- a/boards/models/thread.py +++ b/boards/models/thread.py @@ -116,7 +116,7 @@ class Thread(models.Model): Checks if the thread can be bumped by replying to it. """ - return self.bumpable and not self.archived + return self.bumpable and not self.is_archived() def get_last_replies(self) -> QuerySet: """ @@ -233,3 +233,6 @@ class Thread(models.Model): def get_replies_newer(self, post_id): return self.get_replies().filter(id__gt=post_id) + def is_archived(self): + return self.archived + diff --git a/boards/views/api.py b/boards/views/api.py --- a/boards/views/api.py +++ b/boards/views/api.py @@ -6,7 +6,8 @@ from django.db import transaction from django.http import HttpResponse from django.shortcuts import get_object_or_404 from django.core import serializers -from boards.abstracts.settingsmanager import get_settings_manager +from boards.abstracts.settingsmanager import get_settings_manager,\ + FAV_THREAD_NO_UPDATES from boards.forms import PostForm, PlainErrorList from boards.models import Post, Thread, Tag @@ -256,8 +257,13 @@ def api_get_new_posts(request): for op in fav_thread_ops: last_read_post = fav_threads[str(op.id)] - new_posts = op.get_thread().get_replies_newer(last_read_post) - new_post_count = new_posts.count() + + if last_read_post == FAV_THREAD_NO_UPDATES: + new_post_count = 0 + else: + new_posts = op.get_thread().get_replies_newer(last_read_post) + new_post_count = new_posts.count() + fav_thread_dict = dict() fav_thread_dict['id'] = op.id fav_thread_dict['new_post_count'] = new_post_count