added next and previous capabilities to requests and notifications.
authornishanth
Sun, 28 Feb 2010 01:15:15 +0530
changeset 133 34187a80d279
parent 132 ca88bf4ad362
child 134 3a49a7e23442
added next and previous capabilities to requests and notifications.
taskapp/utilities/notification.py
taskapp/utilities/request.py
taskapp/views/user.py
templates/user/view_notification.html
templates/user/view_request.html
--- a/taskapp/utilities/notification.py	Sat Feb 27 19:21:15 2010 +0530
+++ b/taskapp/utilities/notification.py	Sun Feb 28 01:15:15 2010 +0530
@@ -71,18 +71,17 @@
     elif role in ["DV", "MG", "AD"]:
 
         accepting_user = sent_from
-        user_url = '<a href="/user/view/uid=%s">%s</a>'%(accepting_user.id,accepting_user.username) ## i mean the user who has accepted it
-        requested_by_url = '<a href="/user/view/uid=%s">%s</a>'%(requested_by.id,requested_by.username)
+        user_url = "/user/view/uid=%s"%(accepting_user.id) ## i mean the user who has accepted it
+        requested_by_url = "/user/view/uid=%s"%(requested_by.id)
         role_rights = dict(RIGHTS_CHOICES)[role]
         role_learn_url = "/about/%s"%role_rights.lower()
-        a_or_an = "an" if role == "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.<br />"%(user_url, requested_by_url, a_or_an,  role_rights)
+            notification.message = "%s has accepted request made by %s asking him to act as a %s for the website.<br />"(user_url, requested_by_url, 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 for the website.<br />"%(user_url, a_or_an, role_rights)
+            notification.message = "%s has rejected your request asking him to act as a %s.<br />"%(new_mentor_url, task_url)
             if remarks:
                 notification.message += "Remarks: %s<br />"%remarks
 
@@ -110,7 +109,6 @@
 
     notification.save()
 
-
 def mark_notification_read(notification_id):
     """
     makes a notification identified by the notification_id read.
@@ -144,10 +142,28 @@
     else return None.
     """
 
-    try:
-        notify_obj = Notification.objects.get(id=nid)
-    except Notification.DoesNotExist:
-        return None
+    user_notifications = user.notification_sent_to.filter(is_deleted=False).order_by('sent_date')
+    current_notifications = user_notifications.filter(id=nid)
+    if user_notifications:
+        current_notification = current_notifications[0]
+
+        try:
+            newer_notification = current_notification.get_next_by_sent_date(sent_to=user, is_deleted=False)
+            newest_notification = user_notifications.reverse()[0]
+            if newest_notification == newer_notification:
+                newest_notification = None
+        except Notification.DoesNotExist:
+            newest_notification, newer_notification = None, None
 
-    if notify_obj.sent_to == user and ( not notify_obj.is_deleted ):
-        return notify_obj
+        try:
+            older_notification = current_notification.get_previous_by_sent_date(sent_to=user, is_deleted=False)
+            oldest_notification = user_notifications[0]
+            if oldest_notification == older_notification:
+                oldest_notification = None
+        except:
+            oldest_notification, older_notification = None, None
+
+        return newest_notification, newer_notification, current_notification, older_notification, oldest_notification
+
+    else:
+        return None, None, None, None, None
--- a/taskapp/utilities/request.py	Sat Feb 27 19:21:15 2010 +0530
+++ b/taskapp/utilities/request.py	Sun Feb 28 01:15:15 2010 +0530
@@ -35,16 +35,28 @@
     raise 404 error. else return request.
     """
 
-    try:
-        request_obj = Request.objects.get(id=rid)
-    except Request.DoesNotExist:
-        return None
+    active_requests = user.request_sent_to.filter(is_valid=True, is_replied=False).order_by('creation_date')
+    current_requests = active_requests.filter(id=rid)
+    if current_requests:
+        current_request = current_requests[0]
+
+        try:
+            newer_request = current_request.get_next_by_creation_date(sent_to=user, is_replied=False, is_valid=True)
+            newest_request = active_requests.reverse()[0]
+            if newer_request == newest_request:
+                newest_request = None
+        except Request.DoesNotExist:
+            newer_request, newest_request = None, None
 
-    if request_obj.is_replied == True:
-        return None
+        try:
+            older_request = current_request.get_previous_by_creation_date(sent_to=user, is_replied=False, is_valid=True)
+            oldest_request = active_requests[0]
+            if oldest_request == older_request:
+                oldest_request = None
+        except Request.DoesNotExist:
+            older_request, oldest_request = None, None
+
+        return newest_request, newer_request, current_request, older_request, oldest_request 
+
     else:
-        try:
-            request_obj.sent_to.get(id=user.id)
-        except User.DoesNotExist:
-            return None
-        return request_obj
+        return None, None, None, None, None
--- a/taskapp/views/user.py	Sat Feb 27 19:21:15 2010 +0530
+++ b/taskapp/views/user.py	Sun Feb 28 01:15:15 2010 +0530
@@ -144,7 +144,7 @@
     """
 
     user = request.user
-    user_request = get_request(rid, user)
+    newest, newer, user_request, older, oldest = get_request(rid, user)
     if not user_request:
         raise Http404
 
@@ -154,7 +154,11 @@
     context = {
         'user':user,
         'req':user_request,
-        'sent_users':user_request.sent_to.all()
+        'sent_users':user_request.sent_to.all(),
+        'newest':newest,
+        'newer':newer,
+        'older':older,
+        'oldest':oldest,
     }
 
     return render_to_response('user/view_request.html', context)
@@ -167,7 +171,7 @@
 
     user = request.user
     browse_request_url= '/user/requests'
-    req_obj = get_request(rid, user)
+    newest, newer, req_obj, older, oldest = get_request(rid, user)
 
     if not req_obj:
         return show_msg(user, "Your reply has been processed", browse_request_url, "view other requests")
@@ -178,7 +182,11 @@
         req_obj.save()
 
         reply_to_request(req_obj, reply, user)
-        
+
+        if older:
+            return redirect('/user/requests/rid=%s'%older.id)
+        else:
+            return redirect(browse_request_url)
         return show_msg(user, "Your reply has been processed", browse_request_url, "view other requests")
     else:
         return show_msg(user, "You are not authorised to do this", browse_request_url, "view other requests")
@@ -206,7 +214,7 @@
     """
 
     user = request.user
-    notification = get_notification(nid, user)
+    newest, newer, notification, older, oldest = get_notification(nid, user)
     if not notification:
         raise Http404
 
@@ -216,6 +224,10 @@
     context = {
         'user':user,
         'notification':notification,
+        'newest':newest,
+        'newer':newer,
+        'older':older,
+        'oldest':oldest,
     }
 
     return render_to_response('user/view_notification.html', context)
@@ -228,7 +240,7 @@
     """
 
     user = request.user
-    notification = get_notification(nid, user)
+    newest, newer, notification, older, oldest = get_notification(nid, user)
 
     if not notification:
         raise Http404
@@ -242,7 +254,10 @@
             notification.is_read = False
         
         notification.save()
-        return redirect(notifications_url)
+        if older:
+            return redirect('/user/notifications/nid=%s'%older.id)
+        else:
+            return redirect(notifications_url)
     else:
         return show_msg(user, 'This is wrong', notification_url, "view the notification")
    
--- a/templates/user/view_notification.html	Sat Feb 27 19:21:15 2010 +0530
+++ b/templates/user/view_notification.html	Sun Feb 28 01:15:15 2010 +0530
@@ -1,10 +1,24 @@
 {% extends 'base.html' %}
 {% block content %}
+    {% if newest %}
+        <a href="/user/notifications/nid={{newest.id}}">&lt;&lt;newest</a>
+    {% endif %}
+    {% if newer %}
+        <a href="/user/notifications/nid={{newer.id}}">&lt;newer</a>
+    {% endif %}
+    {% if older %}
+        <a href="/user/notifications/nid={{older.id}}">older&gt;</a>
+    {% endif %}
+    {% if oldest %}
+        <a href="/user/notifications/nid={{oldest.id}}">oldest&gt;&gt;</a>
+    {% endif %}
+    <br />
+        
+    <form action="delete/" method="post"> <input type="submit" value="Delete"> </form>
+    <form action="unread/" method="post"> <input type="submit" value="Keep Unread"> </form>
+    <br />
     sent at {{notification.sent_date}}<br />
     Sub: {{notification.sub}}<br />
-    
     <br />
         {{notification.message|safe}}
-    <form action="delete/" method="post"> <input type="submit" value="Delete"> </form>
-    <form action="unread/" method="post"> <input type="submit" value="Keep Unread"> </form>
 {% endblock %}
--- a/templates/user/view_request.html	Sat Feb 27 19:21:15 2010 +0530
+++ b/templates/user/view_request.html	Sun Feb 28 01:15:15 2010 +0530
@@ -1,11 +1,25 @@
 {% extends 'base.html' %}
 {% block content %}
+    {% if newest %}
+        <a href="/user/requests/rid={{newest.id}}">&lt;&lt;newest</a>
+    {% endif %}
+    {% if newer %}
+        <a href="/user/requests/rid={{newer.id}}">&lt;newer</a>
+    {% endif %}
+    {% if older %}
+        <a href="/user/requests/rid={{older.id}}">older&gt;</a>
+    {% endif %}
+    {% if oldest %}
+        <a href="/user/requests/rid={{oldest.id}}">oldest&gt;&gt;</a>
+    {% endif %}
+    <br />
     From:&nbsp; <a href="/user/view/uid={{req.sent_by.id}}">{{req.sent_by.username}}</a><br />
     To: 
     {% for to_user in sent_users %}
-        <a href="/user/view/uid={{to_user.id}}">{{to_user.username}}</a>,&nbsp;
+        <a href="/user/view/uid={{to_user.id}}">{{to_user.username}}</a>&nbsp;
     {% endfor %}
     <br />
+    sent at {{req.creation_date}}<br />
     Message: <br />
     {% ifequal "PY" req.role %}
         <a href="/user/view/uid={{req.sent_by.id}}">{{req.sent_by.username}}</a> assigned {{req.pynts}} pynts to