Bubble [main]
Composer: Toggle for per-post "Omit from All Posts"
[1mdiff --git a/composer.py b/composer.py[m
[1mindex 56387dd..0784601 100644[m
[1m--- a/composer.py[m
[1m+++ b/composer.py[m
[36m@@ -114,7 +114,7 @@[m [mdef make_composer_page(session):[m
try:[m
post_id = int(found.group(1))[m
except:[m
[31m- return 59, 'Bad request'[m
[32m+[m[32m return 30, session.server_root()[m
post_action = found.group(3)[m
req_token = found.group(5)[m
post = db.get_post(post_id)[m
[36m@@ -209,6 +209,10 @@[m [mdef make_composer_page(session):[m
db.update_post(post, flags=post.flags ^ Post.OMIT_FROM_FEED_FLAG)[m
return 30, link[m
[m
[32m+[m[32m if post_action == 'omit-all':[m
[32m+[m[32m db.update_post(post, flags=post.flags ^ Post.OMIT_FROM_ALL_FLAG)[m
[32m+[m[32m return 30, link[m
[32m+[m
if post_action == 'preview':[m
db.update_post_summary(post)[m
page = f'=> {link}/publish 📤 Publish {post_type.lower()} (in {subspace.title()})\n'[m
[36m@@ -297,6 +301,8 @@[m [mdef make_composer_page(session):[m
# Options and metadata:[m
page += f'\n## {post.title_text()}\n'[m
page += f'=> {link}/title ✏️ Edit {post_type.lower()} title\n'[m
[32m+[m[32m if not subspace.flags & Subspace.OMIT_FROM_ALL_FLAG:[m
[32m+[m[32m page += f'=> {link}/omit-all {session.CHECKS[nonzero(post.flags & Post.OMIT_FROM_ALL_FLAG)]} Omit {post_type.lower()} from All Posts\n'[m
page += f'=> {link}/omit-feed {session.CHECKS[nonzero(post.flags & Post.OMIT_FROM_FEED_FLAG)]} Omit {post_type.lower()} from Gemini feed\n'[m
if is_issue_tracker:[m
page += f'=> /{subspace.title()} 🐞 Issue in: {subspace.title()}\n'[m
[1mdiff --git a/model.py b/model.py[m
[1mindex 54ed437..2207659 100644[m
[1m--- a/model.py[m
[1m+++ b/model.py[m
[36m@@ -260,6 +260,7 @@[m [mclass Post:[m
TAG_CLOSED = 'closed'[m
[m
OMIT_FROM_FEED_FLAG = 0x1[m
[32m+[m[32m OMIT_FROM_ALL_FLAG = 0x2[m
[m
def __init__(self, id, subspace, parent, user, issueid, title, flags, is_draft, is_pinned,[m
num_cmts, num_likes, tags, ts_created, ts_edited, summary,[m
[36m@@ -1408,7 +1409,7 @@[m [mclass Database:[m
PIN_ORDER = 'p.is_pinned DESC'[m
else:[m
if id is None and user is None and parent is None:[m
[31m- where_stm.append(f'(sub1.flags & {Subspace.OMIT_FROM_ALL_FLAG})=0')[m
[32m+[m[32m where_stm.append(f'((sub1.flags & {Subspace.OMIT_FROM_ALL_FLAG})=0 AND (p.flags & {Post.OMIT_FROM_ALL_FLAG})=0)')[m
PIN_ORDER = 'p.is_pinned=2 DESC'[m
[m
if draft != None:[m
[36m@@ -1514,7 +1515,7 @@[m [mclass Database:[m
values.append(subspace.id)[m
else:[m
# Need filter out posts from subspaces that are flagged for omission.[m
[31m- cond.append(f'(s.flags & {Subspace.OMIT_FROM_ALL_FLAG})=0')[m
[32m+[m[32m cond.append(f'((s.flags & {Subspace.OMIT_FROM_ALL_FLAG})=0 AND (p.flags & {Post.OMIT_FROM_ALL_FLAG})=0)')[m
if filter_issue_status != None:[m
cond.append('p.tags NOT LIKE ?' if filter_issue_status else \[m
'p.tags LIKE ?')[m