mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-11-27 00:54:54 +00:00
added notification when admin adds a new article
This commit is contained in:
@ -14,10 +14,10 @@ TASK_REJECTED = 10
|
||||
TASK_APPROVED = 11
|
||||
PENDING_TASK_EXPIRING = 12
|
||||
IN_PROGRESS_TASK_EXPIRING = 13
|
||||
|
||||
TOP_JUNIOR = 14
|
||||
|
||||
REMOVE_JUNIOR = 15
|
||||
NEW_ARTICLE_PUBLISHED = 15
|
||||
REMOVE_JUNIOR = 16
|
||||
|
||||
TEST_NOTIFICATION = 99
|
||||
|
||||
@ -68,7 +68,8 @@ NOTIFICATION_DICT = {
|
||||
"title": "Task completion approval!",
|
||||
"body": "{from_user} completed her task {task_name}."
|
||||
},
|
||||
# Juniors will receive notification as soon as their task is rejected by custodians
|
||||
# Juniors will receive notification as soon
|
||||
# as their task is rejected by custodians
|
||||
TASK_REJECTED: {
|
||||
"title": "Task completion rejected!",
|
||||
"body": "Your task completion request has been rejected by {from_user}."
|
||||
@ -92,11 +93,18 @@ NOTIFICATION_DICT = {
|
||||
"body": "{from_user} didn't take any action on assigned task {task_name} and it's expiring soon. "
|
||||
"Please assist to complete it."
|
||||
},
|
||||
# Juniors will receive Notification related to Leaderboard progress
|
||||
# Juniors will receive Notification
|
||||
# related to Leaderboard progress
|
||||
TOP_JUNIOR: {
|
||||
"title": "Leaderboard topper!",
|
||||
"body": "{from_user} is on top in leaderboard with {points} points."
|
||||
},
|
||||
# Juniors will receive notification
|
||||
# when admin add any new financial learnings
|
||||
NEW_ARTICLE_PUBLISHED: {
|
||||
"title": "Time to read!",
|
||||
"body": "A new article has been published."
|
||||
},
|
||||
# Juniors will receive notification as soon as their custodians remove them from account
|
||||
REMOVE_JUNIOR: {
|
||||
"title": "Disassociate by guardian!",
|
||||
|
||||
@ -8,6 +8,7 @@ from firebase_admin.messaging import Message, Notification as FirebaseNotificati
|
||||
|
||||
# django imports
|
||||
from django.contrib.auth import get_user_model
|
||||
from django.db.models import Q
|
||||
|
||||
# local imports
|
||||
from account.models import UserNotification
|
||||
@ -79,6 +80,7 @@ def get_notification_data(notification_type, from_user_id, from_user_type, to_us
|
||||
if 'task_id' in extra_data:
|
||||
task = JuniorTask.objects.filter(id=extra_data.get('task_id')).first()
|
||||
task_name = task.task_name
|
||||
extra_data['task_name'] = task_name
|
||||
extra_data['task_image'] = task.image if task.image else task.default_image
|
||||
|
||||
from_user_name, from_user_image, from_user = get_from_user_details(from_user_id, from_user_type)
|
||||
@ -124,10 +126,13 @@ def send_multiple_push(queryset, data):
|
||||
|
||||
@shared_task()
|
||||
def send_notification_multiple_user(notification_type, from_user_id, from_user_type,
|
||||
to_user_list: list = [], extra_data: dict = {}):
|
||||
extra_data: dict = {}):
|
||||
"""
|
||||
used to send notification to multiple user for the given notification type
|
||||
"""
|
||||
to_user_list = User.objects.filter(junior_profile__is_verified=True, is_superuser=False
|
||||
).exclude(junior_profile__isnull=True, guardian_profile__isnull=True)
|
||||
|
||||
push_data = NOTIFICATION_DICT[notification_type].copy()
|
||||
notification_data = push_data.copy()
|
||||
points = extra_data.get('points', None)
|
||||
@ -144,7 +149,7 @@ def send_notification_multiple_user(notification_type, from_user_id, from_user_t
|
||||
notification_from=from_user,
|
||||
data=notification_data))
|
||||
Notification.objects.bulk_create(notification_list)
|
||||
|
||||
to_user_list = to_user_list.filter(user_notification__push_notification=True)
|
||||
send_multiple_push(to_user_list, push_data)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user