Browse Source

Fixed recent alerts tracking.

Rafał Pitoń 11 years ago
parent
commit
5fa0757e9d
2 changed files with 12 additions and 5 deletions
  1. 7 4
      misago/apps/alerts.py
  2. 5 1
      misago/middleware/user.py

+ 7 - 4
misago/apps/alerts.py

@@ -11,11 +11,11 @@ from misago.template.loader import render_to_string
 
 
 @block_guest
 @block_guest
 def alerts(request):
 def alerts(request):
-    if not request.user.alerts_date:
-        request.user.alerts_date = request.user.join_date
-
     if request.is_ajax():
     if request.is_ajax():
-        alerts_qs = request.user.alert_set.filter(date__gte=request.session.start).order_by('-id')
+        if request.session.get('recent_alerts'):
+            alerts_qs = request.user.alert_set.filter(date__gte=request.session['recent_alerts']).order_by('-id')
+        else:
+            alerts_qs = ()
         response_html = render_to_string('alerts/modal.html',
         response_html = render_to_string('alerts/modal.html',
                                          {'alerts': alerts_qs},
                                          {'alerts': alerts_qs},
                                          context_instance=RequestContext(request))
                                          context_instance=RequestContext(request))
@@ -26,6 +26,9 @@ def alerts(request):
         return json_response(request,
         return json_response(request,
                              json={'html': response_html})
                              json={'html': response_html})
 
 
+    if not request.user.alerts_date:
+        request.user.alerts_date = request.user.join_date
+
     now = localtime(timezone.now())
     now = localtime(timezone.now())
     yesterday = now - timedelta(days=1)
     yesterday = now - timedelta(days=1)
     alerts = {}
     alerts = {}

+ 5 - 1
misago/middleware/user.py

@@ -18,7 +18,11 @@ class UserMiddleware(object):
     def process_request(self, request):
     def process_request(self, request):
         if request.user.is_authenticated():
         if request.user.is_authenticated():
             if request.user.alerts > 0:
             if request.user.alerts > 0:
-                request.session['recent_alerts'] = True
+                if not request.session.get('recent_alerts':
+                    if not request.user.alerts_date:
+                        request.session['recent_alerts'] = request.user.join_date
+                    else:
+                        request.session['recent_alerts'] = request.user.alerts_date
             request.session.rank = request.user.rank_id
             request.session.rank = request.user.rank_id
             set_timezone(request.user.timezone)
             set_timezone(request.user.timezone)
             if request.session.remember_me:
             if request.session.remember_me: