from datetime import datetime from django.contrib.auth.models import User from pytask.taskapp.models import Notification def create_notification(role, sent_to, sent_from=None, reply=None, task=None, receiving_user=None, pynts=None, requested_by=None, remarks=None): """ creates a notification based on the passed arguments. to - a list of users to which the notification is to be sent subject - subject of the notification message to be sent message - message body of the notification """ notification = Notification(sent_date = datetime.now()) notification.role = role notification.sent_to = sent_to notification.save() if role == "PY": notification.sent_from = sent_from notification.task = task notification.pynts = pynts task_url= '%s'%(task.id, task.title) credits_url = '%s'%(task.id, "click here") mentor_url = '%s'%(requested_by.id, requested_by.username) admin_url = '%s'%(sent_from.id, sent_from.username) user_url = '%s'%(receiving_user.id, receiving_user.username) if reply: notification.sub = "Approved request for assign of credits" notification.message = """ Request made by %s to assign %s pynts to %s for the task %s has been approved by %s
%s if you want the view/assign pynts page of the task.
"""%(mentor_url, pynts, user_url, task_url, admin_url, credits_url) else: notification.sub = "Rejected request for assign of credits" notification.message = """ Request made by %s to assign %s pynts to %s for the task %s has been rejected by %s.
"""%(mentor_url, pynts, user_url, task_url, admin_url) if remarks: notification.remarks = remarks notification.message += "Reason: %s
"%remarks notification.message += "
" notification.save() def mark_notification_read(notification_id): """ makes a notification identified by the notification_id read. arguments: notification_id - a number denoting the id of the Notification object """ try: notification = Notification.objects.get(id = notification_id) except Notification.DoesNotExist: return False notification.is_read = True notification.save() return True def delete_notification(notification_id): """ deletes a notification identified by the notification_id. arguments: notification_id - a number denoting the id of the Notification object """ try: notification = Notification.objects.get(id = notification_id) except Notification.DoesNotExist: return False notification.is_deleted = True notification.save() return True def get_notification(nid, user): """ if notification exists, and belongs to the current user, return it. else return None. """ try: notify_obj = Notification.objects.get(id=nid) except Notification.DoesNotExist: return None if notify_obj.sent_to == user and ( not notify_obj.is_deleted ): return notify_obj