diff options
-rw-r--r-- | taskapp/forms/task.py | 6 | ||||
-rw-r--r-- | taskapp/views/task.py | 28 | ||||
-rw-r--r-- | templates/task/addmentor.html | 1 |
3 files changed, 24 insertions, 11 deletions
diff --git a/taskapp/forms/task.py b/taskapp/forms/task.py index f3655bf..9f8cc98 100644 --- a/taskapp/forms/task.py +++ b/taskapp/forms/task.py @@ -12,7 +12,7 @@ def AddMentorForm(choices,instance=None): class myform(forms.Form): mentor = forms.ChoiceField(choices=choices, required=True) - form = myform(instance=instance) if instance else myform() + form = myform(instance) if instance else myform() return form class ClaimTaskForm(forms.ModelForm): @@ -20,12 +20,12 @@ class ClaimTaskForm(forms.ModelForm): model = Claim fields = ['message'] -def ChoiceForm(choices): +def ChoiceForm(choices, instance=None): """ return a form object with appropriate choices """ class myform(forms.Form): choice = forms.ChoiceField(choices=choices, required=True) - form = myform() + form = myform(instance) if instance else myform() return form def AddTaskForm(task_choices, is_plain=False): diff --git a/taskapp/views/task.py b/taskapp/views/task.py index e75df50..d90e7cd 100644 --- a/taskapp/views/task.py +++ b/taskapp/views/task.py @@ -1,6 +1,6 @@ from datetime import datetime -from django.http import HttpResponse +from django.http import HttpResponse, Http404 from django.shortcuts import render_to_response, redirect from pytask.taskapp.models import User, Task, Comment, Claim, Credit, Request @@ -177,18 +177,30 @@ def add_mentor(request, tid): for req in user_pending_requests: user_list.remove(req.sent_to.all()[0]) - non_mentors = ((_.id,_.username) for _ in user_list) + non_mentors = ((_.id, _.username) for _ in user_list) + non_mentor_ids = [ str(a_user.id) for a_user in user_list ] ## code till must be made elegant and not brute force like above form = AddMentorForm(non_mentors) + + context = { + 'user':user, + 'pending_requests':pending_requests, + 'form':form, + } + if request.method == "POST": - uid = request.POST['mentor'] - new_mentor = User.objects.get(id=uid) - reqMentor(task, new_mentor, user) - return redirect(task_url) + data = request.POST + uid = data.get('mentor', None) + if uid in non_mentor_ids: + new_mentor = User.objects.get(id=int(uid)) + reqMentor(task, new_mentor, user) + return redirect('/task/addmentor/tid=%s'%task.id) + else: + ## bogus post request + raise Http404 else: - return render_to_response('task/addmentor.html', {'user':user,'pending_requests':pending_requests,'form':form, 'errors':errors}) - + return render_to_response('task/addmentor.html', context) else: return show_msg(user, 'You are not authorised to add mentors for this task', task_url, 'view the task') diff --git a/templates/task/addmentor.html b/templates/task/addmentor.html index 0548577..cbcde65 100644 --- a/templates/task/addmentor.html +++ b/templates/task/addmentor.html @@ -1,5 +1,6 @@ {% extends 'base.html' %} {% block content %} + <a href="/task/view/tid={{task.id}}">Click here</a> to return to the task. <form action="" method="post"> {{form.as_table}} <input type="submit" value="submit"> |