diff options
-rw-r--r-- | taskapp/models.py | 4 | ||||
-rw-r--r-- | taskapp/views/user.py | 56 | ||||
-rw-r--r-- | templates/user/browse_requests.html | 9 | ||||
-rw-r--r-- | templates/user/view_request.html | 24 | ||||
-rw-r--r-- | urls.py | 4 |
5 files changed, 93 insertions, 4 deletions
diff --git a/taskapp/models.py b/taskapp/models.py index fab49cd..9f9cbbf 100644 --- a/taskapp/models.py +++ b/taskapp/models.py @@ -143,6 +143,10 @@ class Request(models.Model): assigned_user = models.ForeignKey(User, related_name = "%(class)s_assigned_user", blank = True, null = True) pynts = models.PositiveIntegerField(default=0) + def __unicode__(self): + + return u"Request %s %s"%(self.by.username, self.role) + class Notification(models.Model): to = models.ManyToManyField(User, related_name = "%(class)s_to", blank = False) diff --git a/taskapp/views/user.py b/taskapp/views/user.py index 3ec7abd..c0df9b3 100644 --- a/taskapp/views/user.py +++ b/taskapp/views/user.py @@ -1,13 +1,13 @@ import os + from django.http import HttpResponse, Http404 from django.shortcuts import redirect, render_to_response -from pytask.taskapp.models import Task -from pytask.taskapp.forms.user import UserProfileEditForm -from pytask.taskapp.events.user import createUser, updateProfile from django.contrib.auth.models import User -from pytask.taskapp.models import Profile from django.contrib.auth.decorators import login_required +from pytask.taskapp.models import Task, Profile, Request +from pytask.taskapp.events.user import createUser, updateProfile +from pytask.taskapp.forms.user import UserProfileEditForm def show_msg(message, redirect_url=None, url_desc=None): """ simply redirect to homepage """ @@ -95,3 +95,51 @@ def edit_my_profile(request): edit_profile_form = UserProfileEditForm(instance = profile) return render_to_response('user/edit_profile.html',{'edit_profile_form' : edit_profile_form, 'user':request.user}) +@login_required +def browse_requests(request): + + user = request.user + active_reqs = user.request_to.filter(replied=False) + reqs = active_reqs.order_by('creation_date').reverse() + for pos, req in enumerate(reversed(reqs)): + req.pos = pos + context = { + 'user':user, + 'reqs':reqs, + } + + return render_to_response('user/browse_requests.html', context) + +@login_required +def view_request(request, rid): + """ please note that request variable in this method is that of django. + our app request is called user_request. + """ + + user = request.user + reqs = user.request_to.filter(replied=False).order_by('creation_date') + user_request = reqs[int(rid)] + + context = { + 'user':user, + 'req':user_request, + 'sent_users':user_request.to.all() + } + + return render_to_response('user/view_request.html', context) + +@login_required +def process_request(request, rid, reply): + """ check if the method is post and then update the request. + if it is get, display a 404 error. + """ + + if request.method=="POST": + user = request.user + browse_request_url= '/user/requests' + reqs = user.request_to.filter(replied=False).order_by('creation_date') + user_request = reqs[int(rid)] + + return show_msg("Your reply has been processed", browse_request_url, "view other requests") + else: + return show_msg("You are not authorised to do this", browse_request_url, "view other requests") diff --git a/templates/user/browse_requests.html b/templates/user/browse_requests.html new file mode 100644 index 0000000..da2bedb --- /dev/null +++ b/templates/user/browse_requests.html @@ -0,0 +1,9 @@ +{% extends 'base.html' %} +{% block content %} + {% for req in reqs %} + <form><a href="/user/requests/rid={{req.pos}}">{{req.by.username}}|{{req.role}}| + {% ifequal req.role "PY" %} + {{req.task.title}} + {% endifequal %}</a><br /></form> + {% endfor %} +{% endblock %} diff --git a/templates/user/view_request.html b/templates/user/view_request.html new file mode 100644 index 0000000..dad4c7e --- /dev/null +++ b/templates/user/view_request.html @@ -0,0 +1,24 @@ +{% extends 'base.html' %} +{% block content %} + From: <a href=""/user/view/uid={{req.by.id}}"">{{req.by.username}}</a><br /> + To: + {% for to_user in sent_users %} + <a href="/user/view/uid={{to_user.id}}">{{to_user.username}}</a>, + {% endfor %} + <br /> + Message: <br /> + {% ifequal "PY" req.role %} + <a href="/user/view/uid={{req.by.id}}">{{req.by.username}}</a> assigned {{req.pynts}} pynts to + <a href="/user/view/uid={{req.assigned_to.id}}">{{req.assigned_to.username}}</a> for the task + <a href="/task/view/tid={{req.task.id}}">{{req.task.title}}</a><br /> + Please click yes/no<br /> + <form action="yes/" method="post"> + <input value="Yes" type="submit"> + </form> + <form action="no/" method="post"> + <input value="No" type="submit"> + </form> + {% else %} + {% endifequal %} + +{% endblock %} @@ -40,5 +40,9 @@ urlpatterns = patterns('', (r'^user/view/uid=(\d+)$', userViews.view_my_profile), (r'^user/edit/?$', userViews.edit_my_profile), + + (r'^user/requests/$', userViews.browse_requests), + (r'^user/requests/rid=(\d+)/$', userViews.view_request), + (r'^user/requests/rid=(\d+)/(\w+)/$', userViews.process_request), ) |