leaderboard refactor (#526)
This commit is contained in:
parent
22ad4f5d23
commit
44919507e9
9 changed files with 436 additions and 600 deletions
59
files/helpers/services.py
Normal file
59
files/helpers/services.py
Normal file
|
@ -0,0 +1,59 @@
|
|||
import sys
|
||||
|
||||
import gevent
|
||||
from pusher_push_notifications import PushNotifications
|
||||
from sqlalchemy.orm import scoped_session
|
||||
|
||||
from files.classes.leaderboard import (LeaderboardMeta, ReceivedDownvotesLeaderboard,
|
||||
GivenUpvotesLeaderboard)
|
||||
from files.helpers.assetcache import assetcache_path
|
||||
from files.helpers.const import PUSHER_ID, PUSHER_KEY, SITE_FULL, SITE_ID
|
||||
from files.__main__ import app, db_session
|
||||
|
||||
if PUSHER_ID != 'blahblahblah':
|
||||
beams_client = PushNotifications(instance_id=PUSHER_ID, secret_key=PUSHER_KEY)
|
||||
else:
|
||||
beams_client = None
|
||||
|
||||
def pusher_thread2(interests, notifbody, username):
|
||||
if not beams_client: return
|
||||
beams_client.publish_to_interests(
|
||||
interests=[interests],
|
||||
publish_body={
|
||||
'web': {
|
||||
'notification': {
|
||||
'title': f'New message from @{username}',
|
||||
'body': notifbody,
|
||||
'deep_link': f'{SITE_FULL}/notifications?messages=true',
|
||||
'icon': SITE_FULL + assetcache_path(f'images/{SITE_ID}/icon.webp'),
|
||||
}
|
||||
},
|
||||
'fcm': {
|
||||
'notification': {
|
||||
'title': f'New message from @{username}',
|
||||
'body': notifbody,
|
||||
},
|
||||
'data': {
|
||||
'url': '/notifications?messages=true',
|
||||
}
|
||||
}
|
||||
},
|
||||
)
|
||||
sys.stdout.flush()
|
||||
|
||||
_lb_received_downvotes_meta = LeaderboardMeta("Downvotes", "received downvotes", "received-downvotes", "downvotes", "downvoted")
|
||||
_lb_given_upvotes_meta = LeaderboardMeta("Upvotes", "given upvotes", "given-upvotes", "upvotes", "upvoting")
|
||||
|
||||
def leaderboard_thread():
|
||||
global lb_downvotes_received, lb_upvotes_given
|
||||
|
||||
db:scoped_session = db_session() # type: ignore
|
||||
|
||||
lb_downvotes_received = ReceivedDownvotesLeaderboard(_lb_received_downvotes_meta, db)
|
||||
lb_upvotes_given = GivenUpvotesLeaderboard(_lb_given_upvotes_meta, db)
|
||||
|
||||
db.close()
|
||||
sys.stdout.flush()
|
||||
|
||||
if app.config["ENABLE_SERVICES"]:
|
||||
gevent.spawn(leaderboard_thread())
|
Loading…
Add table
Add a link
Reference in a new issue