notify ppl when holes are deleted
parent
9797c57a7a
commit
498e2119b1
|
@ -133,8 +133,7 @@ def add_notif(cid, uid, text, pushnotif_url='', check_existing=True):
|
||||||
if ' has mentioned you: [' in text:
|
if ' has mentioned you: [' in text:
|
||||||
text = text.split(':')[0] + '!'
|
text = text.split(':')[0] + '!'
|
||||||
|
|
||||||
if not request.path.startswith('/submit'):
|
push_notif({uid}, 'New notification', text, pushnotif_url)
|
||||||
push_notif({uid}, 'New notification', text, pushnotif_url)
|
|
||||||
|
|
||||||
|
|
||||||
def NOTIFY_USERS(text, v, oldtext=None, ghost=False, obj=None, followers_ping=True, commenters_ping_post_id=None, charge=True):
|
def NOTIFY_USERS(text, v, oldtext=None, ghost=False, obj=None, followers_ping=True, commenters_ping_post_id=None, charge=True):
|
||||||
|
@ -314,14 +313,14 @@ def alert_admins(body):
|
||||||
|
|
||||||
new_comment.top_comment_id = new_comment.id
|
new_comment.top_comment_id = new_comment.id
|
||||||
|
|
||||||
def alert_active_users(body, v, extra_criteria):
|
def alert_active_users(body, vid, extra_criteria):
|
||||||
body_html = sanitize(body, blackjack="notification")
|
body_html = sanitize(body, blackjack="notification")
|
||||||
cid = create_comment(body_html)
|
cid = create_comment(body_html)
|
||||||
t = time.time() - 604800
|
t = time.time() - 604800
|
||||||
|
|
||||||
notified_users = [x[0] for x in g.db.query(User.id).filter(
|
notified_users = [x[0] for x in g.db.query(User.id).filter(
|
||||||
User.last_active > t,
|
User.last_active > t,
|
||||||
User.id != v.id,
|
User.id != vid,
|
||||||
extra_criteria,
|
extra_criteria,
|
||||||
)]
|
)]
|
||||||
for uid in notified_users:
|
for uid in notified_users:
|
||||||
|
|
|
@ -173,7 +173,6 @@ PERMS = { # Minimum admin_level to perform action.
|
||||||
'VIEW_ALT_VOTES': 1,
|
'VIEW_ALT_VOTES': 1,
|
||||||
'VIEW_LAST_ACTIVE': 1,
|
'VIEW_LAST_ACTIVE': 1,
|
||||||
'ENABLE_VOTE_BUTTONS_ON_USER_PAGE': 1,
|
'ENABLE_VOTE_BUTTONS_ON_USER_PAGE': 1,
|
||||||
'NOTIFICATIONS_HOLE_INACTIVITY_DELETION': 1,
|
|
||||||
'NOTIFICATIONS_MODERATOR_ACTIONS': 1,
|
'NOTIFICATIONS_MODERATOR_ACTIONS': 1,
|
||||||
'EXEMPT_FROM_IP_LOGGING': 1,
|
'EXEMPT_FROM_IP_LOGGING': 1,
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ from hashlib import md5
|
||||||
from collections import Counter
|
from collections import Counter
|
||||||
from sqlalchemy.orm import load_only, InstrumentedAttribute
|
from sqlalchemy.orm import load_only, InstrumentedAttribute
|
||||||
from sqlalchemy.sql import text
|
from sqlalchemy.sql import text
|
||||||
|
from sqlalchemy import or_
|
||||||
|
|
||||||
import click
|
import click
|
||||||
import requests
|
import requests
|
||||||
|
@ -19,7 +20,7 @@ import files.routes.static as route_static
|
||||||
from files.routes.front import frontlist
|
from files.routes.front import frontlist
|
||||||
from files.__main__ import cache
|
from files.__main__ import cache
|
||||||
from files.classes import *
|
from files.classes import *
|
||||||
from files.helpers.alerts import send_repeatable_notification, notif_comment
|
from files.helpers.alerts import *
|
||||||
from files.helpers.config.const import *
|
from files.helpers.config.const import *
|
||||||
from files.helpers.get import *
|
from files.helpers.get import *
|
||||||
from files.helpers.lottery import check_if_end_lottery_task
|
from files.helpers.lottery import check_if_end_lottery_task
|
||||||
|
@ -153,13 +154,6 @@ def _hole_inactive_purge_task():
|
||||||
dead_holes = g.db.query(Hole).filter(Hole.name.notin_(active_holes)).all()
|
dead_holes = g.db.query(Hole).filter(Hole.name.notin_(active_holes)).all()
|
||||||
names = [x.name for x in dead_holes]
|
names = [x.name for x in dead_holes]
|
||||||
|
|
||||||
admins = [x[0] for x in g.db.query(User.id).filter(User.admin_level >= PERMS['NOTIFICATIONS_HOLE_INACTIVITY_DELETION'])]
|
|
||||||
|
|
||||||
mods = g.db.query(Mod).filter(Mod.hole.in_(names)).all()
|
|
||||||
for x in mods:
|
|
||||||
if x.user_id in admins: continue
|
|
||||||
send_repeatable_notification(x.user_id, f":marseyrave: /h/{x.hole} has been deleted for inactivity after one week without new posts. All posts in it have been moved to the main feed :marseyrave:")
|
|
||||||
|
|
||||||
for name in names:
|
for name in names:
|
||||||
first_mod_id = g.db.query(Mod.user_id).filter_by(hole=name).order_by(Mod.created_utc).first()
|
first_mod_id = g.db.query(Mod.user_id).filter_by(hole=name).order_by(Mod.created_utc).first()
|
||||||
if first_mod_id:
|
if first_mod_id:
|
||||||
|
@ -170,8 +164,10 @@ def _hole_inactive_purge_task():
|
||||||
description=f'Let a hole they owned die (/h/{name})'
|
description=f'Let a hole they owned die (/h/{name})'
|
||||||
)
|
)
|
||||||
|
|
||||||
for admin in admins:
|
text = f":marseyrave: /h/{name} has been deleted for inactivity after one week without new posts. All posts in it have been moved to the main feed :marseyrave:"
|
||||||
send_repeatable_notification(admin, f":marseyrave: /h/{name} has been deleted for inactivity after one week without new posts. All posts in it have been moved to the main feed :marseyrave:")
|
mod_ids = (x[0] for x in g.db.query(Mod.user_id).filter_by(hole=name))
|
||||||
|
extra_criteria = or_(User.hole_creation_notifs == True, User.id.in_(mod_ids))
|
||||||
|
alert_active_users(text, None, extra_criteria)
|
||||||
|
|
||||||
posts = g.db.query(Post).filter(Post.hole.in_(names)).all()
|
posts = g.db.query(Post).filter(Post.hole.in_(names)).all()
|
||||||
for post in posts:
|
for post in posts:
|
||||||
|
@ -183,7 +179,7 @@ def _hole_inactive_purge_task():
|
||||||
post.hole_pinned = None
|
post.hole_pinned = None
|
||||||
g.db.add(post)
|
g.db.add(post)
|
||||||
|
|
||||||
to_delete = mods \
|
to_delete = g.db.query(Mod).filter(Mod.hole.in_(names)).all() \
|
||||||
+ g.db.query(Exile).filter(Exile.hole.in_(names)).all() \
|
+ g.db.query(Exile).filter(Exile.hole.in_(names)).all() \
|
||||||
+ g.db.query(HoleBlock).filter(HoleBlock.hole.in_(names)).all() \
|
+ g.db.query(HoleBlock).filter(HoleBlock.hole.in_(names)).all() \
|
||||||
+ g.db.query(StealthHoleUnblock).filter(StealthHoleUnblock.hole.in_(names)).all() \
|
+ g.db.query(StealthHoleUnblock).filter(StealthHoleUnblock.hole.in_(names)).all() \
|
||||||
|
|
|
@ -55,7 +55,7 @@ def create_group(v):
|
||||||
g.db.flush() #Necessary, to make linkfying the ping group in the notification work
|
g.db.flush() #Necessary, to make linkfying the ping group in the notification work
|
||||||
|
|
||||||
text = f":!marseyparty: !{group} has been created by @{v.username} :marseyparty:"
|
text = f":!marseyparty: !{group} has been created by @{v.username} :marseyparty:"
|
||||||
alert_active_users(text, v, User.group_creation_notifs == True)
|
alert_active_users(text, v.id, User.group_creation_notifs == True)
|
||||||
|
|
||||||
return {"message": f"!{group} created successfully!"}
|
return {"message": f"!{group} created successfully!"}
|
||||||
|
|
||||||
|
|
|
@ -390,7 +390,7 @@ def create_sub2(v):
|
||||||
g.db.add(mod)
|
g.db.add(mod)
|
||||||
|
|
||||||
text = f":!marseyparty: /h/{hole} has been created by @{v.username} :marseyparty:"
|
text = f":!marseyparty: /h/{hole} has been created by @{v.username} :marseyparty:"
|
||||||
alert_active_users(text, v, User.hole_creation_notifs == True)
|
alert_active_users(text, v.id, User.hole_creation_notifs == True)
|
||||||
|
|
||||||
return redirect(f"/h/{hole}")
|
return redirect(f"/h/{hole}")
|
||||||
|
|
||||||
|
|
|
@ -161,7 +161,7 @@
|
||||||
<h5>Notifications</h5>
|
<h5>Notifications</h5>
|
||||||
<div class="settings-section rounded">
|
<div class="settings-section rounded">
|
||||||
{% if SITE_NAME != 'WPD' %}
|
{% if SITE_NAME != 'WPD' %}
|
||||||
{{common.toggle_section('Hole Creation Notifications', 'hole_creation_notifs', 'hole_creation_notifs', v.hole_creation_notifs, 'Get a notification when a new hole is made.', false)}}
|
{{common.toggle_section('Hole Creation and Deletion Notifications', 'hole_creation_notifs', 'hole_creation_notifs', v.hole_creation_notifs, 'Get a notification when a hole is made or deleted.', false)}}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{{common.toggle_section('Ping Group Creation Notifications', 'group_creation_notifs', 'group_creation_notifs', v.group_creation_notifs, 'Get a notification when a new ping group is made.', false)}}
|
{{common.toggle_section('Ping Group Creation Notifications', 'group_creation_notifs', 'group_creation_notifs', v.group_creation_notifs, 'Get a notification when a new ping group is made.', false)}}
|
||||||
</div>
|
</div>
|
||||||
|
|
Loading…
Reference in New Issue