[Oi-commits] r1135 - trunk/forum

oi-commits at pardus.org.tr oi-commits at pardus.org.tr
Fri Mar 14 14:05:13 EET 2008


Author: jnmbk
Date: Fri Mar 14 14:05:13 2008
New Revision: 1135

Modified:
   trunk/forum/views.py
Log:
faster read forum detection(but all topic counts must be correct, so a button for recount is needed since we moved some topics from admin panel which didn't change topic counts of current and target forum)

Modified: trunk/forum/views.py
=================================================================
--- trunk/forum/views.py	(original)
+++ trunk/forum/views.py	Fri Mar 14 14:05:13 2008
@@ -36,15 +36,8 @@
             posts += forum.posts
 
             # read/unread stuff
-            if request.user.is_authenticated():
-                readTopics = 0
-                counter = 0
-                for topic in forum.topic_set.all():
-                    counter += 1
-                    if topic.topic_latest_post.edited > request.session['last_visit'] or\
-                            topic.id in request.session["read_topic_set"]:
-                                readTopics += 1
-                if counter == readTopics:
+            if forum.id in request.session["read_forum_dict"]:
+                if forum.topics == request.session["read_forum_dict"][forum.id]:
                     forum.is_read = True
                 else:
                     forum.is_read = False
@@ -88,6 +81,10 @@
 
     if request.user.is_authenticated() and not topic.id in request.session["read_topic_set"]:
         request.session["read_topic_set"].add(topic.id)
+        if not forum.id in request.session["read_forum_dict"]:
+            request.session["read_forum_dict"][forum.id] = 1
+        else:
+            request.session["read_forum_dict"][forum.id] += 1
         request.session.modified = True
 
     topic.views += 1
@@ -364,6 +361,8 @@
             request.session["last_visit"] = datetime.now()
         if not "read_topic_set" in request.session:
             request.session["read_topic_set"] = set()
+        if not "read_forum_dict" in request.session:
+            request.session["read_forum_dict"] = {}
 
 @login_required
 def delete_post(request,forum_slug,topic_id, post_id):


More information about the Oi-commits mailing list