from datetime import datetime
from django.contrib.auth.models import User
from pytask.taskapp.models import Notification, RIGHTS_CHOICES
def create_notification(role, sent_to, sent_from=None, reply=None, task=None, remarks=None, requested_by=None, receiving_user=None, pynts=None):
"""
creates a notification based on the passed arguments.
role: role of the notification - look at choices in models
sent_to: a user to which the notification is to be sent
sent_from : a user from which the message has originated
A user who approves/rejects in case of request
A mentor who closes/complets the task
reply: A boolean
task: a task if applicable
requested_by: a user makes the request
A mentor who assigns credits in case of pynts
A mentor who requests to act as a mentor
remarks: any remarks for rejecting
receiving_user: user receiving pynts
pynts: the obvious
"""
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 for %s"%task.title[:20]
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 for %s"%task.title[:20]
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 += "
"
elif role == "MT":
notification.task = task
notification.sent_from = sent_from
task_url= '%s'%(task.id, task.title)
requested_mentor_url = '%s'%(requested_by.id, requested_by.username)
new_mentor = sent_from
new_mentor_url = '%s'%(new_mentor.id, new_mentor.username)
if reply:
notification.sub = "New mentor for the task %s"%task.title[:20]
notification.message = "%s has accepted the request made by %s, asking him act as a mentor for the task %s
"%(new_mentor_url, requested_mentor_url, task_url)
notification.message += "He can be contacted on %s"%new_mentor.email
else:
notification.sub = "%s rejected request to act as a mentor"%new_mentor.username
notification.message = "%s has rejected your request asking him to act as a mentor for %s.
"%(new_mentor_url, task_url)
if remarks:
notification.remarks = remarks
notification.message += "Remarks: %s
"%remarks
elif role in ["DV", "MG", "AD"]:
notification.sent_from = sent_from
accepting_user = sent_from
user_url = '%s'%(accepting_user.id, accepting_user.username) ## i mean the user who has accepted it
requested_by_url = '%s'%(requested_by.id, requested_by.username)
role_rights = dict(RIGHTS_CHOICES)[role]
role_learn_url = "/about/%s"%role_rights.lower()
a_or_an = "an" if role_rights == "AD" else "a"
if reply:
notification.sub = "New %s for the site"%role_rights
notification.message = "%s has accepted request made by %s asking him to act as %s %s for the website.
"%(user_url, requested_by_url, a_or_an, role_rights)
else:
notification.sub = "Rejected your request to act as %s"%role_rights
notification.message = "%s has rejected your request asking him to act as %s %s.
"%(user_url, a_or_an, role_rights)
if remarks:
notification.remarks = remarks
notification.message += "Remarks: %s
"%remarks
elif role == "NT":
notification.task = task
new_mentor = sent_to
mentor_learn_url = 'learn more'
task_url= '%s'%(task.id, task.title)
notification.sub = "You are mentoring the task %s"%task.title[:20]
notification.message = "You have accepted to act as a mentor%s for the task %s.
"%(mentor_learn_url, task_url)
notification.message += " Here is a list of other mentors and their email addresses.