Ralfp 12 лет назад
Родитель
Сommit
bce3edee35
1 измененных файлов с 16 добавлено и 7 удалено
  1. 16 7
      misago/readstracker/trackers.py

+ 16 - 7
misago/readstracker/trackers.py

@@ -68,21 +68,27 @@ class ThreadsTracker(object):
     def set_read(self, thread, post):
         if self.request.user.is_authenticated() and post.date > self.cutoff:
             try:
-                if self.threads[thread.pk].updated < post.date:
-                    self.need_update.append(thread.pk)
                 self.threads[thread.pk].updated = post.date
+                self.need_update = thread
             except KeyError:
-                self.need_create.append(thread)
+                self.need_create = thread
 
     def sync(self):
         now = timezone.now()
 
         if self.need_create:
-            ThreadRecord.objects.bulk_create(
-                [ThreadRecord(user=self.request.user, thread=t, forum=self.forum, updated=now) for t in self.need_create])
+            new_record = ThreadRecord(
+                                      user=self.request.user,
+                                      thread=self.need_create,
+                                      forum=self.forum,
+                                      updated=now
+                                      )
+            new_record.save(force_insert=True)
+            self.threads[new_record.thread_id] = new_record
 
         if self.need_update:
-            ThreadRecord.objects.filter(user_id=self.request.user.id).filter(thread_id__in=self.need_update).update(updated=now)
+            need_update.updated = now
+            need_update.save(force_update=True)
 
         if self.need_create or self.need_delete or self.need_update:
             unread_threads = 0
@@ -92,4 +98,7 @@ class ThreadsTracker(object):
             if not unread_threads:
                 self.record.cleared = now
             self.record.updated = now
-            self.record.save(force_update=self.record.pk)
+            if self.record.pk:
+                self.record.save(force_update=True)
+            else:
+                self.record.save(force_insert=True)