mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-17 02:45:08 +00:00
added notification for getting points after reading article
This commit is contained in:
@ -47,7 +47,7 @@ from account.utils import custom_response, custom_error_response
|
|||||||
from guardian.utils import upload_image_to_alibaba
|
from guardian.utils import upload_image_to_alibaba
|
||||||
from .utils import update_positions_based_on_points
|
from .utils import update_positions_based_on_points
|
||||||
from notifications.utils import send_notification
|
from notifications.utils import send_notification
|
||||||
from notifications.constants import REMOVE_JUNIOR
|
from notifications.constants import REMOVE_JUNIOR, ARTICLE_REWARD_POINTS
|
||||||
from web_admin.models import Article, ArticleSurvey, SurveyOption, ArticleCard
|
from web_admin.models import Article, ArticleSurvey, SurveyOption, ArticleCard
|
||||||
from web_admin.serializers.article_serializer import (ArticleSerializer, ArticleListSerializer,
|
from web_admin.serializers.article_serializer import (ArticleSerializer, ArticleListSerializer,
|
||||||
StartAssessmentSerializer)
|
StartAssessmentSerializer)
|
||||||
@ -666,6 +666,8 @@ class CompleteArticleAPIView(views.APIView):
|
|||||||
is_answer_correct=True).aggregate(
|
is_answer_correct=True).aggregate(
|
||||||
total_earn_points=Sum('earn_points'))['total_earn_points']
|
total_earn_points=Sum('earn_points'))['total_earn_points']
|
||||||
data = {"total_earn_points":total_earn_points}
|
data = {"total_earn_points":total_earn_points}
|
||||||
|
send_notification.delay(ARTICLE_REWARD_POINTS, None, None,
|
||||||
|
request.user.id, {'points': total_earn_points})
|
||||||
return custom_response(SUCCESS_CODE['3042'], data, response_status=status.HTTP_200_OK)
|
return custom_response(SUCCESS_CODE['3042'], data, response_status=status.HTTP_200_OK)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
return custom_error_response(str(e), response_status=status.HTTP_400_BAD_REQUEST)
|
||||||
|
@ -17,7 +17,8 @@ IN_PROGRESS_TASK_EXPIRING = 13
|
|||||||
TOP_JUNIOR = 14
|
TOP_JUNIOR = 14
|
||||||
|
|
||||||
NEW_ARTICLE_PUBLISHED = 15
|
NEW_ARTICLE_PUBLISHED = 15
|
||||||
REMOVE_JUNIOR = 16
|
ARTICLE_REWARD_POINTS = 16
|
||||||
|
REMOVE_JUNIOR = 17
|
||||||
|
|
||||||
TEST_NOTIFICATION = 99
|
TEST_NOTIFICATION = 99
|
||||||
|
|
||||||
@ -66,7 +67,7 @@ NOTIFICATION_DICT = {
|
|||||||
# as junior send task for approval
|
# as junior send task for approval
|
||||||
TASK_ACTION: {
|
TASK_ACTION: {
|
||||||
"title": "Task completion approval!",
|
"title": "Task completion approval!",
|
||||||
"body": "{from_user} completed her task {task_name}."
|
"body": "{from_user} completed their task {task_name}."
|
||||||
},
|
},
|
||||||
# Juniors will receive notification as soon
|
# Juniors will receive notification as soon
|
||||||
# as their task is rejected by custodians
|
# as their task is rejected by custodians
|
||||||
@ -105,6 +106,11 @@ NOTIFICATION_DICT = {
|
|||||||
"title": "Time to read!",
|
"title": "Time to read!",
|
||||||
"body": "A new article has been published."
|
"body": "A new article has been published."
|
||||||
},
|
},
|
||||||
|
# Juniors will receive notification when they earn points by reading financial Learning
|
||||||
|
ARTICLE_REWARD_POINTS: {
|
||||||
|
"title": "Article reward points!",
|
||||||
|
"body": "You are rewarded with {points} points for reading article and answering questions. "
|
||||||
|
},
|
||||||
# Juniors will receive notification as soon as their custodians remove them from account
|
# Juniors will receive notification as soon as their custodians remove them from account
|
||||||
REMOVE_JUNIOR: {
|
REMOVE_JUNIOR: {
|
||||||
"title": "Disassociate by guardian!",
|
"title": "Disassociate by guardian!",
|
||||||
|
@ -77,6 +77,7 @@ def get_notification_data(notification_type, from_user_id, from_user_type, to_us
|
|||||||
push_data = NOTIFICATION_DICT[notification_type].copy()
|
push_data = NOTIFICATION_DICT[notification_type].copy()
|
||||||
notification_data = push_data.copy()
|
notification_data = push_data.copy()
|
||||||
task_name = None
|
task_name = None
|
||||||
|
points = extra_data.get('points', None)
|
||||||
if 'task_id' in extra_data:
|
if 'task_id' in extra_data:
|
||||||
task = JuniorTask.objects.filter(id=extra_data.get('task_id')).first()
|
task = JuniorTask.objects.filter(id=extra_data.get('task_id')).first()
|
||||||
task_name = task.task_name
|
task_name = task.task_name
|
||||||
@ -85,8 +86,9 @@ def get_notification_data(notification_type, from_user_id, from_user_type, to_us
|
|||||||
|
|
||||||
from_user_name, from_user_image, from_user = get_from_user_details(from_user_id, from_user_type)
|
from_user_name, from_user_image, from_user = get_from_user_details(from_user_id, from_user_type)
|
||||||
|
|
||||||
push_data['body'] = push_data['body'].format(from_user=from_user_name, task_name=task_name)
|
push_data['body'] = push_data['body'].format(from_user=from_user_name, task_name=task_name, points=points)
|
||||||
notification_data['body'] = notification_data['body'].format(from_user=from_user_name, task_name=task_name)
|
notification_data['body'] = notification_data['body'].format(from_user=from_user_name,
|
||||||
|
task_name=task_name, points=points)
|
||||||
notification_data['from_user'] = from_user_name
|
notification_data['from_user'] = from_user_name
|
||||||
notification_data['from_user_image'] = from_user_image
|
notification_data['from_user_image'] = from_user_image
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ class NotificationViewSet(viewsets.GenericViewSet):
|
|||||||
paginator = self.pagination_class()
|
paginator = self.pagination_class()
|
||||||
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
paginated_queryset = paginator.paginate_queryset(queryset, request)
|
||||||
serializer = self.serializer_class(paginated_queryset, many=True)
|
serializer = self.serializer_class(paginated_queryset, many=True)
|
||||||
return custom_response(None, serializer.data)
|
return custom_response(None, serializer.data, count=queryset.count())
|
||||||
|
|
||||||
@action(methods=['post'], detail=False, url_path='device', url_name='device', serializer_class=RegisterDevice)
|
@action(methods=['post'], detail=False, url_path='device', url_name='device', serializer_class=RegisterDevice)
|
||||||
def fcm_registration(self, request):
|
def fcm_registration(self, request):
|
||||||
|
@ -35,11 +35,11 @@ app.conf.beat_schedule = {
|
|||||||
},
|
},
|
||||||
'notify_task_expiry': {
|
'notify_task_expiry': {
|
||||||
'task': 'base.tasks.notify_task_expiry',
|
'task': 'base.tasks.notify_task_expiry',
|
||||||
'schedule': crontab(minute='5', hour='12'),
|
'schedule': crontab(minute='0', hour='18'),
|
||||||
},
|
},
|
||||||
'notify_top_junior': {
|
'notify_top_junior': {
|
||||||
'task': 'base.tasks.notify_top_junior',
|
'task': 'base.tasks.notify_top_junior',
|
||||||
'schedule': crontab(minute='*/5',),
|
'schedule': crontab(minute='0', hour='*/2'),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user