Browse Source

Fix unread pm count

sh4nks 11 years ago
parent
commit
0aa7556b05
3 changed files with 11 additions and 5 deletions
  1. 9 3
      flaskbb/app.py
  2. 1 1
      flaskbb/pms/views.py
  3. 1 1
      flaskbb/templates/layout.html

+ 9 - 3
flaskbb/app.py

@@ -24,6 +24,7 @@ from flaskbb.auth.views import auth
 from flaskbb.admin.views import admin
 # Import the PM blueprint
 from flaskbb.pms.views import pms
+from flaskbb.pms.models import PrivateMessage
 # Import the forum blueprint
 from flaskbb.forum.views import forum
 from flaskbb.forum.models import *
@@ -107,9 +108,14 @@ def configure_extensions(app):
         """
         Loads the user. Required by the `login` extension
         """
-        # TODO: Also load the permissions and
-        # the unread pm count with 1 big query
-        return User.query.get(id)
+        unread_count = db.session.query(db.func.count(PrivateMessage.id)).\
+            filter(PrivateMessage.unread == True,
+                   PrivateMessage.user_id == id).subquery()
+        u = db.session.query(User, unread_count).filter(User.id == id).first()
+
+        user, user.pm_unread = u
+
+        return user
 
     login_manager.init_app(app)
 

+ 1 - 1
flaskbb/pms/views.py

@@ -85,7 +85,7 @@ def new_message():
             form.save(from_user=current_user.id,
                       to_user=to_user.id,
                       user_id=current_user.id,
-                      unread=True,
+                      unread=False,
                       as_draft=True)
 
             flash("Message saved!", "success")

+ 1 - 1
flaskbb/templates/layout.html

@@ -61,7 +61,7 @@
 
                         <div class="btn-group navbar-btn navbar-right">
                             <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown">
-                                <span class="glyphicon glyphicon-envelope"></span> <span class="badge">{{ current_user.unread_count }}</span>
+                                <span class="glyphicon glyphicon-envelope"></span> <span class="badge">{{ current_user.pm_unread }}</span>
                             </button>
                             <ul class="dropdown-menu" role="menu">
                                 <li><a href="{{ url_for('pms.inbox') }}"><span class="glyphicon glyphicon-envelope"></span> Inbox</a></li>