mirror of
https://codeberg.org/rimu/pyfedi
synced 2025-01-23 11:26:56 -08:00
better notifications
This commit is contained in:
parent
4974d2cddb
commit
fa649bb8ab
3 changed files with 16 additions and 21 deletions
|
@ -6,6 +6,7 @@ from datetime import timedelta
|
|||
from random import randint
|
||||
from typing import Union, Tuple
|
||||
from flask import current_app, request, g, url_for
|
||||
from flask_babel import _
|
||||
from sqlalchemy import text, func
|
||||
from app import db, cache, constants, celery
|
||||
from app.models import User, Post, Community, BannedInstances, File, PostReply, AllowedInstances, Instance, utcnow, \
|
||||
|
@ -985,7 +986,9 @@ def create_post_reply(activity_log: ActivityPubLog, community: Community, in_rep
|
|||
if notification_target.notify_author and post_reply.user_id != notification_target.user_id and notification_target.author.ap_id is None:
|
||||
if isinstance(notification_target, PostReply):
|
||||
anchor = f"comment_{post_reply.id}"
|
||||
notification = Notification(title='Reply from ' + post_reply.author.display_name(),
|
||||
notification = Notification(title=shorten_string(_('Reply from %(name)s on %(post_title)s',
|
||||
name=post_reply.author.display_name(),
|
||||
post_title=post.title), 50),
|
||||
user_id=notification_target.user_id,
|
||||
author_id=post_reply.user_id,
|
||||
url=url_for('activitypub.post_ap', post_id=post.id, _anchor=anchor))
|
||||
|
@ -1098,7 +1101,7 @@ def notify_about_post(post: Post):
|
|||
people_to_notify = CommunityMember.query.filter_by(community_id=post.community_id, notify_new_posts=True, is_banned=False)
|
||||
for person in people_to_notify:
|
||||
if person.user_id != post.user_id:
|
||||
new_notification = Notification(title=shorten_string(post.title, 25), url=f"/post/{post.id}", user_id=person.user_id, author_id=post.user_id)
|
||||
new_notification = Notification(title=shorten_string(post.title, 50), url=f"/post/{post.id}", user_id=person.user_id, author_id=post.user_id)
|
||||
db.session.add(new_notification)
|
||||
user = User.query.get(person.user_id) # todo: make this more efficient by doing a join with CommunityMember at the start of the function
|
||||
user.unread_notifications += 1
|
||||
|
|
20
app/cli.py
20
app/cli.py
|
@ -150,30 +150,16 @@ def register(app):
|
|||
if filesize > 0 and num_content > 0:
|
||||
print(f'{user.id},"{user.ap_id}",{filesize},{num_content}')
|
||||
|
||||
@app.cli.command("cleanupcovers")
|
||||
def cleanupcovers():
|
||||
with app.app_context():
|
||||
for user in User.query.all():
|
||||
if not user.is_local():
|
||||
if user.cover_id:
|
||||
file = user.cover
|
||||
if file.file_path and file.thumbnail_path:
|
||||
if os.path.exists(file.file_path):
|
||||
os.unlink(file.file_path)
|
||||
print(file.file_path)
|
||||
file.file_path = ''
|
||||
db.session.commit()
|
||||
|
||||
def list_files(directory):
|
||||
for root, dirs, files in os.walk(directory):
|
||||
for file in files:
|
||||
yield os.path.join(root, file)
|
||||
|
||||
@app.cli.command("findorphanfiles")
|
||||
def findorphanfiles():
|
||||
@app.cli.command("remove_orphan_files")
|
||||
def remove_orphan_files():
|
||||
""" Any user-uploaded file that does not have a corresponding entry in the File table should be deleted """
|
||||
with app.app_context():
|
||||
for file_path in list_files('app/static/media/users'):
|
||||
|
||||
if 'thumbnail' in file_path:
|
||||
f = File.query.filter(File.thumbnail_path == file_path).first()
|
||||
else:
|
||||
|
|
|
@ -78,7 +78,10 @@ def show_post(post_id: int):
|
|||
from_bot=current_user.bot, up_votes=1, nsfw=post.nsfw, nsfl=post.nsfl,
|
||||
notify_author=form.notify_author.data)
|
||||
if post.notify_author and current_user.id != post.user_id:
|
||||
notification = Notification(title=_('Reply from %(name)s ', name=current_user.display_name()), user_id=post.user_id,
|
||||
notification = Notification(title=shorten_string(_('Reply from %(name)s on %(post_title)s',
|
||||
name=current_user.display_name(),
|
||||
post_title=post.title), 50),
|
||||
user_id=post.user_id,
|
||||
author_id=current_user.id, url=url_for('activitypub.post_ap', post_id=post.id))
|
||||
db.session.add(notification)
|
||||
post.author.unread_notifications += 1
|
||||
|
@ -418,7 +421,10 @@ def add_reply(post_id: int, comment_id: int):
|
|||
notify_author=form.notify_author.data, instance_id=1)
|
||||
db.session.add(reply)
|
||||
if in_reply_to.notify_author and current_user.id != in_reply_to.user_id and in_reply_to.author.ap_id is None: # todo: check if replier is blocked
|
||||
notification = Notification(title=_('Reply from %(name)s', name=current_user.display_name()), user_id=in_reply_to.user_id,
|
||||
notification = Notification(title=shorten_string(_('Reply from %(name)s on %(post_title)s',
|
||||
name=current_user.display_name(),
|
||||
post_title=post.title), 50),
|
||||
user_id=in_reply_to.user_id,
|
||||
author_id=current_user.id, url=url_for('activitypub.post_ap', post_id=post.id))
|
||||
db.session.add(notification)
|
||||
in_reply_to.author.unread_notifications += 1
|
||||
|
|
Loading…
Reference in a new issue