taskapp/utilities/notification.py
author nishanth
Thu, 04 Mar 2010 17:29:00 +0530
changeset 199 946d0fe60606
parent 186 c083ebb6f8d7
child 201 c429873d8ac8
permissions -rw-r--r--
now a notification is sent to all the mentors after there is a new claim.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
123
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
     1
from datetime import datetime
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
     2
from django.contrib.auth.models import User
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
     3
from pytask.taskapp.models import Notification, RIGHTS_CHOICES
57
67e0d0a915e3 added utilities for creating notification.
anoop
parents:
diff changeset
     4
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
     5
def create_notification(role, sent_to, sent_from=None, reply=None, task=None, remarks=None, requested_by=None, receiving_user=None, pynts=None):
57
67e0d0a915e3 added utilities for creating notification.
anoop
parents:
diff changeset
     6
    """
67e0d0a915e3 added utilities for creating notification.
anoop
parents:
diff changeset
     7
    creates a notification based on the passed arguments.
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
     8
        role: role of the notification - look at choices in models 
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
     9
        sent_to: a user to which the notification is to be sent
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    10
        sent_from : a user from which the message has originated
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    11
            A user who approves/rejects in case of request
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    12
            A mentor who closes/complets the task
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    13
        reply: A boolean
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    14
        task: a task if applicable
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    15
        requested_by: a user makes the request
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    16
            A mentor who assigns credits in case of pynts
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    17
            A mentor who requests to act as a mentor
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    18
        remarks: any remarks for rejecting
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    19
        receiving_user: user receiving pynts
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    20
        pynts: the obvious
57
67e0d0a915e3 added utilities for creating notification.
anoop
parents:
diff changeset
    21
    """
129
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    22
57
67e0d0a915e3 added utilities for creating notification.
anoop
parents:
diff changeset
    23
    notification = Notification(sent_date = datetime.now())
129
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    24
    notification.role = role
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    25
    notification.sent_to = sent_to
57
67e0d0a915e3 added utilities for creating notification.
anoop
parents:
diff changeset
    26
    notification.save()
129
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    27
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    28
    if role == "PY":
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    29
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    30
        notification.sent_from = sent_from
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    31
        notification.task = task
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    32
        notification.pynts = pynts
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    33
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    34
        task_url= '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    35
        credits_url = '<a href="/task/assigncredits/tid=%s">%s</a>'%(task.id, "click here")
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    36
        mentor_url = '<a href="/user/view/uid=%s">%s</a>'%(requested_by.id, requested_by.username)
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    37
        admin_url = '<a href="/user/view/uid=%s">%s</a>'%(sent_from.id, sent_from.username)
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    38
        user_url = '<a href="/user/view/uid=%s">%s</a>'%(receiving_user.id, receiving_user.username)
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    39
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    40
        if reply:
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    41
            notification.sub = "Approved request for assign of credits for %s"%task.title[:20]
129
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    42
            notification.message  = """ Request made by %s to assign %s pynts to %s for the task %s has been approved by %s<br />
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    43
                                    %s if you want the view/assign pynts page of the task.<br />"""%(mentor_url, pynts, user_url, task_url, admin_url, credits_url)
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    44
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    45
        else:
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    46
            notification.sub = "Rejected request for assign of credits for %s"%task.title[:20]
129
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    47
            notification.message = """ Request made by %s to assign %s pynts to %s for the task %s has been rejected by %s.<br /> """%(mentor_url, pynts, user_url, task_url, admin_url)
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    48
            if remarks:
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    49
                notification.remarks = remarks
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    50
                notification.message += "Reason: %s<br />"%remarks
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    51
            notification.message += "<br />"
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
    52
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    53
    elif role == "MT":
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    54
156
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
    55
        notification.task = task
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
    56
        notification.sent_from = sent_from
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
    57
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    58
        task_url= '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    59
        requested_mentor_url = '<a href="/user/view/uid=%s">%s</a>'%(requested_by.id, requested_by.username)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    60
        new_mentor = sent_from
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    61
        new_mentor_url = '<a href="/user/view/uid=%s">%s</a>'%(new_mentor.id, new_mentor.username)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    62
        
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    63
        if reply:
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    64
            notification.sub = "New mentor for the task %s"%task.title[:20]
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    65
            notification.message = "%s has accepted the request made by %s, asking him act as a mentor for the task %s<br />"%(new_mentor_url, requested_mentor_url, task_url)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    66
            notification.message += "He can be contacted on %s"%new_mentor.email
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    67
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    68
        else:
144
581ad20b8c39 modified get_user method to give only count of unread requests.
nishanth
parents: 142
diff changeset
    69
            notification.sub = "%s rejected request to act as a mentor"%new_mentor.username
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    70
            notification.message = "%s has rejected your request asking him to act as a mentor for %s.<br />"%(new_mentor_url, task_url)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    71
            if remarks:
162
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
    72
                notification.remarks = remarks
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    73
                notification.message += "Remarks: %s<br />"%remarks
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    74
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    75
    elif role in ["DV", "MG", "AD"]:
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    76
156
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
    77
        notification.sent_from = sent_from
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    78
        accepting_user = sent_from
141
2489392ffb56 added the functionality to request a user to be AD MG DV.
nishanth
parents: 133
diff changeset
    79
        user_url = '<a href="/user/view/uid=%s">%s</a>'%(accepting_user.id, accepting_user.username) ## i mean the user who has accepted it
2489392ffb56 added the functionality to request a user to be AD MG DV.
nishanth
parents: 133
diff changeset
    80
        requested_by_url = '<a href="/user/view/uid=%s">%s</a>'%(requested_by.id, requested_by.username)
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    81
        role_rights = dict(RIGHTS_CHOICES)[role]
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    82
        role_learn_url = "/about/%s"%role_rights.lower()
142
bd65e2c9a7b4 fixed the a_or_an bug .
nishanth
parents: 141
diff changeset
    83
        a_or_an = "an" if role_rights == "AD" else "a"
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    84
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    85
        if reply:
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    86
            notification.sub = "New %s for the site"%role_rights
142
bd65e2c9a7b4 fixed the a_or_an bug .
nishanth
parents: 141
diff changeset
    87
            notification.message = "%s has accepted request made by %s asking him to act as %s %s for the website.<br />"%(user_url, requested_by_url, a_or_an, role_rights)
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    88
        else:
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    89
            notification.sub = "Rejected your request to act as %s"%role_rights
147
8c1ed28d04d2 fixed a_or_an in reject request.
nishanth
parents: 145
diff changeset
    90
            notification.message = "%s has rejected your request asking him to act as %s %s.<br />"%(user_url, a_or_an, role_rights)
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    91
            if remarks:
162
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
    92
                notification.remarks = remarks
132
ca88bf4ad362 implemented notification functionality for AD MG DV.
nishanth
parents: 131
diff changeset
    93
                notification.message += "Remarks: %s<br />"%remarks
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    94
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    95
    elif role == "NT":
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    96
156
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
    97
        notification.task = task
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
    98
        new_mentor = sent_to
186
c083ebb6f8d7 finished the phase-2 successfully. added all the learnmore templates. hav to look for bugs if any.
nishanth
parents: 183
diff changeset
    99
        mentor_learn_url = '<sup><a href="/about/mentor/">learn more</a></sup>'
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   100
        task_url= '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   101
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   102
        notification.sub = "You are mentoring the task %s"%task.title[:20]
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   103
        notification.message = "You have accepted to act as a mentor%s for the task %s.<br />"%(mentor_learn_url, task_url)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   104
        notification.message += " Here is a list of other mentors and their email addresses.<br /> <ul>"
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   105
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   106
        for a_mentor in task.mentors.exclude(id=new_mentor.id):
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   107
            notification.message += "<li> %s - %s </li>"%(a_mentor.username, a_mentor.email)
150
604808d27483 fixed a small bug in create_notification for the case NT.
nishanth
parents: 147
diff changeset
   108
        notification.message += "</ul>"
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   109
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   110
        working_users = task.assigned_users.all()
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   111
        if working_users:
153
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   112
            notification.message += "List of users working on the task.<br />"
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   113
            notification.message += "<ul>"
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   114
            for a_user in working_users:
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   115
                notification.message += "<li> %s - %s </li>"%(a_user.username, a_user.email)
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   116
            notification.message += "</ul><br />"
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   117
        notification.message += "Happy Mentoring."
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   118
161
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   119
    elif role == "NU":
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   120
183
c088c79a225c now there is also a notification sent to a new created user in seed_db.
nishanth
parents: 167
diff changeset
   121
        start_here_url = '<a href="/about/starthere/" taget="_blank">click here</a>'
161
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   122
        notification.sub = "Welcome %s"%sent_to.username
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   123
        notification.message = "Welcome to PyTasks %s.<br />"%sent_to.username
183
c088c79a225c now there is also a notification sent to a new created user in seed_db.
nishanth
parents: 167
diff changeset
   124
        notification.message += "%s to know more."%start_here_url
161
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   125
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   126
    elif role in ["ND", "NG", "NA"]:
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   127
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   128
        rights_dict = dict(RIGHTS_CHOICES)
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   129
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   130
        if role == "ND":
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   131
            role_rights = rights_dict["DV"]
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   132
        elif role == "NG":
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   133
            role_rights = rights_dict["MG"]
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   134
        elif role == "NA":
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   135
            role_rights = rights_dict["AD"]
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   136
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   137
        requested_by_url = r'<a href="/user/view/uid=%s">%s</a>'%(requested_by.id, requested_by.username)
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   138
        role_learn_url = r'<a href="/about/%s" target="_blank">click here</a>'%role_rights.lower()
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   139
        a_or_an = "an" if role_rights == "Admin" else "a"
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   140
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   141
        notification.sub = "You are now %s %s"%(a_or_an, role_rights)
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   142
        notification.message = r"You have accepted the request made by %s asking you to act as %s %s in the site "%(requested_by_url, a_or_an, role_rights)
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   143
        notification.message += "and you are now %s %s in the site.<br /> %s to learn more on %s."%(a_or_an, role_rights, role_learn_url, role_rights)
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   144
74ef330c9185 implemented nu nt nd ng na notifications.
nishanth
parents: 156
diff changeset
   145
153
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   146
    elif role in ["CM", "CD"]:
156
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
   147
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
   148
        notification.sent_from = sent_from
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
   149
        notification.role = role
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
   150
        notification.task = task
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
   151
        notification.remarks = remarks
7cad1e92713d finalised the view_task page.
nishanth
parents: 153
diff changeset
   152
153
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   153
        mentor = sent_from
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   154
        mentor_url = '<a href="/user/view/uid=%s">%s</a>'%(mentor.id, mentor.username)
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   155
        task_url= '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   156
        
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   157
        if role == "CM":
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   158
            notification.sub = "%s has been marked complete"%task.title
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   159
            notification.message = "The task %s has been marked complete by %s.<br />"%(task_url, mentor_url)
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   160
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   161
        elif role == "CD":
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   162
            notification.sub = "%s has been closed"%task.title
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   163
            notification.message = "The task %s has been closed by %s.<br />"%(task_url, mentor_url)
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   164
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   165
        if remarks:
162
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   166
            notification.remarks = remarks
153
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   167
            notification.message += "<b>Remarks:</b> %s"%remarks
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   168
162
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   169
    elif role == "AU":
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   170
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   171
        notification.task = task
167
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   172
        notification.sent_from = sent_from
162
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   173
        added_user = sent_to
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   174
        mentor = sent_from
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   175
        assigned_by_url = '<a href="/user/view/uid=%s">%s</a>'%(mentor.id, mentor.username)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   176
        task_url= '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   177
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   178
        notification.sub = "Your claim for the task %s accepted."%task.title[:20]
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   179
        notification.message = "You have been selected to work on the task %s by %s.<br />"%(task_url, assigned_by_url)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   180
        notification.message += "You can now start working on the task and will be credited by the mentors for your work.<br />"
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   181
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   182
        notification.message += " Here is a list of mentors for the task and their email addresses.<br /> <ul>"
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   183
        for a_mentor in task.mentors.all():
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   184
            notification.message += "<li> %s - %s </li>"%(a_mentor.username, a_mentor.email)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   185
        notification.message += "</ul>"
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   186
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   187
        working_users = task.assigned_users.exclude(id=added_user.id)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   188
        if working_users:
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   189
            notification.message += "List of other users working on the task.<br />"
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   190
            notification.message += "<ul>"
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   191
            for a_user in working_users:
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   192
                notification.message += "<li> %s - %s </li>"%(a_user.username, a_user.email)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   193
            notification.message += "</ul><br />"
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   194
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   195
    elif role == "RU":
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   196
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   197
        notification.task = task
167
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   198
        notification.sent_from = sent_from
162
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   199
        removed_user = sent_to
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   200
        mentor = sent_from
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   201
        removed_by_url = '<a href="/user/view/uid=%s">%s</a>'%(mentor.id, mentor.username)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   202
        task_url = '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   203
        claim_url = '<a href="/task/claim/tid=%s">%s</a>'%(task.id, "clicking here")
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   204
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   205
        notification.sub = "You have been removed from working users of %s"%task.title[:20]
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   206
        notification.message = "%s has removed you from the working users list of %s.<br />"%(removed_by_url, task_url)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   207
        notification.message += "if you want to work on the task again, you can claim the task by %s.<br />"%claim_url
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   208
        if remarks:
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   209
            notification.remarks = remarks
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   210
            notification.message += "<b>Reason: </b>%s"%(remarks)
d378eff02f2e added au ru notifications.
nishanth
parents: 161
diff changeset
   211
167
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   212
    elif role == "DL":
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   213
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   214
        notification.sent_from = sent_from
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   215
        notification.task = task
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   216
        deleted_by_url = '<a href="/user/view/uid=%s">%s</a>'%(sent_from.id, sent_from.username)
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   217
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   218
        notification.sub = "Task deleted"
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   219
        notification.message = 'The unpublished task "%s" viewable by you has been deleted by its creator %s.<br />'%(task.title, deleted_by_url)
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   220
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   221
        if remarks:
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   222
            notification.remarks = remarks
b61e45074ba1 implemented deleting of a task.
nishanth
parents: 162
diff changeset
   223
            notification.message += "<b>Reason: </b>%s"%remarks
153
925af1b4ee65 ditchaxed credit model.
nishanth
parents: 150
diff changeset
   224
199
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   225
    elif role == "CL":
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   226
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   227
        notification.sent_from = sent_from
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   228
        notification.task = task
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   229
        notification.remarks = remarks
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   230
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   231
        claimed_by_url = '<a href="/user/view/uid=%s">%s</a>'%(sent_from.id, sent_from.username)
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   232
        task_url = '<a href="/task/view/tid=%s">%s</a>'%(task.id, task.title)
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   233
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   234
        notification.sub = 'New claim for the task "%s"'%(task.title[:20])
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   235
        notification.message = '%s has submitted a claim for the task "%s" mentored by you.<br />'%(claimed_by_url, task_url)
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   236
        notification.message += '<b>Claim proposal:</b> %s'%(remarks)
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   237
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   238
946d0fe60606 now a notification is sent to all the mentors after there is a new claim.
nishanth
parents: 186
diff changeset
   239
131
85276c5aee5c added notifications for approval and rejection of a mentor.
nishanth
parents: 129
diff changeset
   240
    notification.save()
129
e747da8bc110 notifications work for approving and rejecting credits.
nishanth
parents: 123
diff changeset
   241
78
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   242
def mark_notification_read(notification_id):
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   243
    """
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   244
    makes a notification identified by the notification_id read.
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   245
    arguments:
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   246
        notification_id - a number denoting the id of the Notification object
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   247
    """
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   248
    try:
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   249
        notification = Notification.objects.get(id = notification_id)
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   250
    except Notification.DoesNotExist:
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   251
        return False
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   252
    notification.is_read = True
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   253
    notification.save()
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   254
    return True
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   255
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   256
def delete_notification(notification_id):
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   257
    """
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   258
    deletes a notification identified by the notification_id.
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   259
    arguments:
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   260
        notification_id - a number denoting the id of the Notification object
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   261
    """
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   262
    try:
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   263
        notification = Notification.objects.get(id = notification_id)
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   264
    except Notification.DoesNotExist:
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   265
        return False
123
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   266
    notification.is_deleted = True
78
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   267
    notification.save()
c5bcafccc135 added utilities reply_to_request, mark_notification_read, delete_notification and made change to create_request utility.
anoop
parents: 57
diff changeset
   268
    return True
123
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   269
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   270
def get_notification(nid, user):
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   271
    """ if notification exists, and belongs to the current user, return it.
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   272
    else return None.
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   273
    """
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   274
133
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   275
    user_notifications = user.notification_sent_to.filter(is_deleted=False).order_by('sent_date')
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   276
    current_notifications = user_notifications.filter(id=nid)
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   277
    if user_notifications:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   278
        current_notification = current_notifications[0]
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   279
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   280
        try:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   281
            newer_notification = current_notification.get_next_by_sent_date(sent_to=user, is_deleted=False)
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   282
            newest_notification = user_notifications.reverse()[0]
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   283
            if newest_notification == newer_notification:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   284
                newest_notification = None
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   285
        except Notification.DoesNotExist:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   286
            newest_notification, newer_notification = None, None
123
a6b4234388c8 now notification depends on id and not pos.
nishanth
parents: 78
diff changeset
   287
133
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   288
        try:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   289
            older_notification = current_notification.get_previous_by_sent_date(sent_to=user, is_deleted=False)
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   290
            oldest_notification = user_notifications[0]
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   291
            if oldest_notification == older_notification:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   292
                oldest_notification = None
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   293
        except:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   294
            oldest_notification, older_notification = None, None
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   295
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   296
        return newest_notification, newer_notification, current_notification, older_notification, oldest_notification
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   297
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   298
    else:
34187a80d279 added next and previous capabilities to requests and notifications.
nishanth
parents: 132
diff changeset
   299
        return None, None, None, None, None