|
@@ -9,10 +9,12 @@ class ForumsTracker(object):
|
|
self.user = user
|
|
self.user = user
|
|
self.cutoff = timezone.now() - timedelta(days=settings.READS_TRACKER_LENGTH)
|
|
self.cutoff = timezone.now() - timedelta(days=settings.READS_TRACKER_LENGTH)
|
|
self.forums = {}
|
|
self.forums = {}
|
|
- if self.user.is_authenticated() and settings.READS_TRACKER_LENGTH > 0:
|
|
|
|
|
|
+ if user.is_authenticated() and settings.READS_TRACKER_LENGTH > 0:
|
|
|
|
+ if user.join_date > self.cutoff:
|
|
|
|
+ self.cutoff = user.join_date
|
|
for forum in Record.objects.filter(user=user).filter(updated__gte=self.cutoff).values('id', 'forum_id', 'updated', 'cleared'):
|
|
for forum in Record.objects.filter(user=user).filter(updated__gte=self.cutoff).values('id', 'forum_id', 'updated', 'cleared'):
|
|
self.forums[forum['forum_id']] = forum
|
|
self.forums[forum['forum_id']] = forum
|
|
-
|
|
|
|
|
|
+
|
|
def is_read(self, forum):
|
|
def is_read(self, forum):
|
|
if not self.user.is_authenticated() or not forum.last_thread_date:
|
|
if not self.user.is_authenticated() or not forum.last_thread_date:
|
|
return True
|
|
return True
|
|
@@ -30,14 +32,16 @@ class ThreadsTracker(object):
|
|
self.forum = forum
|
|
self.forum = forum
|
|
self.cutoff = timezone.now() - timedelta(days=settings.READS_TRACKER_LENGTH)
|
|
self.cutoff = timezone.now() - timedelta(days=settings.READS_TRACKER_LENGTH)
|
|
if request.user.is_authenticated():
|
|
if request.user.is_authenticated():
|
|
|
|
+ if request.user.join_date > self.cutoff:
|
|
|
|
+ self.cutoff = request.user.join_date
|
|
try:
|
|
try:
|
|
- self.record = Record.objects.get(user=request.user,forum=forum)
|
|
|
|
|
|
+ self.record = Record.objects.get(user=request.user, forum=forum)
|
|
if self.record.cleared > self.cutoff:
|
|
if self.record.cleared > self.cutoff:
|
|
self.cutoff = self.record.cleared
|
|
self.cutoff = self.record.cleared
|
|
except Record.DoesNotExist:
|
|
except Record.DoesNotExist:
|
|
- self.record = Record(user=request.user,forum=forum,cleared=self.cutoff)
|
|
|
|
|
|
+ self.record = Record(user=request.user, forum=forum, cleared=self.cutoff)
|
|
self.threads = self.record.get_threads()
|
|
self.threads = self.record.get_threads()
|
|
-
|
|
|
|
|
|
+
|
|
def get_read_date(self, thread):
|
|
def get_read_date(self, thread):
|
|
if not self.request.user.is_authenticated():
|
|
if not self.request.user.is_authenticated():
|
|
return timezone.now()
|
|
return timezone.now()
|
|
@@ -47,7 +51,7 @@ class ThreadsTracker(object):
|
|
except KeyError:
|
|
except KeyError:
|
|
pass
|
|
pass
|
|
return self.cutoff
|
|
return self.cutoff
|
|
-
|
|
|
|
|
|
+
|
|
def is_read(self, thread):
|
|
def is_read(self, thread):
|
|
if not self.request.user.is_authenticated():
|
|
if not self.request.user.is_authenticated():
|
|
return True
|
|
return True
|
|
@@ -58,7 +62,7 @@ class ThreadsTracker(object):
|
|
return thread.last <= self.cutoff or thread.last <= self.threads[thread.pk]
|
|
return thread.last <= self.cutoff or thread.last <= self.threads[thread.pk]
|
|
except KeyError:
|
|
except KeyError:
|
|
return False
|
|
return False
|
|
-
|
|
|
|
|
|
+
|
|
def set_read(self, thread, post):
|
|
def set_read(self, thread, post):
|
|
if self.request.user.is_authenticated():
|
|
if self.request.user.is_authenticated():
|
|
try:
|
|
try:
|
|
@@ -68,7 +72,7 @@ class ThreadsTracker(object):
|
|
except KeyError:
|
|
except KeyError:
|
|
self.threads[thread.pk] = post.date
|
|
self.threads[thread.pk] = post.date
|
|
self.need_sync = True
|
|
self.need_sync = True
|
|
-
|
|
|
|
|
|
+
|
|
def sync(self):
|
|
def sync(self):
|
|
now = timezone.now()
|
|
now = timezone.now()
|
|
if self.need_sync:
|
|
if self.need_sync:
|
|
@@ -78,8 +82,8 @@ class ThreadsTracker(object):
|
|
unread_threads += 1
|
|
unread_threads += 1
|
|
if not unread_threads:
|
|
if not unread_threads:
|
|
self.record.cleared = now
|
|
self.record.cleared = now
|
|
-
|
|
|
|
|
|
+
|
|
if self.need_sync or self.need_update:
|
|
if self.need_sync or self.need_update:
|
|
self.record.updated = now
|
|
self.record.updated = now
|
|
self.record.set_threads(self.threads)
|
|
self.record.set_threads(self.threads)
|
|
- self.record.save(force_update=self.record.pk)
|
|
|
|
|
|
+ self.record.save(force_update=self.record.pk)
|