From 93288c970d41e2db15dd1d893b311528fbdc8ceb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Kera=CC=88nen?= Date: Tue, 16 May 2023 10:51:37 +0300 Subject: [PATCH 1/1] Fixed counting posts for the feed pager It was counting posts that were flagged for omission. IssueID #15 --- model.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/model.py b/model.py index 21d4d4f..b4d83c2 100644 --- a/model.py +++ b/model.py @@ -1374,28 +1374,37 @@ class Database: return self.get_post(id=post_id) return None - def count_posts(self, user=None, subspace=None, draft=False, filter_by_followed=None, - filter_issue_status=None): - cond = ['parent=0'] # no comments + def count_posts(self, user=None, subspace=None, draft=False, + filter_by_followed=None, filter_issue_status=None): + cond = ['p.parent=0'] # no comments values = [] filter = '' if filter_by_followed: filter = Database.FOLLOW_FILTER_JOIN values.append(filter_by_followed.id) if user != None: - cond.append('user=?') + cond.append('p.user=?') values.append(user.id) if subspace != None: - cond.append('subspace=?') + cond.append('p.subspace=?') values.append(subspace.id) + else: + # Need filter out posts from subspaces that are flagged for omission. + cond.append(f'(s.flags & {Subspace.OMIT_FROM_ALL_FLAG})=0') if filter_issue_status != None: cond.append('p.tags NOT LIKE ?' if filter_issue_status else \ 'p.tags LIKE ?') values.append('%✔︎%') - cond.append('is_draft=?') + cond.append('p.is_draft=?') values.append(draft) cur = self.conn.cursor() - cur.execute(f"SELECT COUNT(id) FROM posts AS p {filter} WHERE {' AND '.join(cond)}", values) + cur.execute(f""" + SELECT COUNT(p.id) + FROM posts p + JOIN subspaces s ON p.subspace=s.id + {filter} + WHERE {' AND '.join(cond)} + """, values) for (count,) in cur: return count return 0 -- 2.34.1