summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pytask/taskapp/forms.py12
-rw-r--r--pytask/taskapp/urls.py3
-rwxr-xr-xpytask/taskapp/views.py50
-rw-r--r--pytask/templates/task/addreviewer.html9
-rw-r--r--pytask/templates/task/view.html11
5 files changed, 64 insertions, 21 deletions
diff --git a/pytask/taskapp/forms.py b/pytask/taskapp/forms.py
index fb206f1..c2a8609 100644
--- a/pytask/taskapp/forms.py
+++ b/pytask/taskapp/forms.py
@@ -78,11 +78,11 @@ class ClaimTaskForm(forms.ModelForm):
raise forms.ValidationError('Enter something as a proposal')
return data
-def ChoiceForm(choices, data=None):
+def ChoiceForm(choices, data=None, label="choice"):
""" return a form object with appropriate choices """
class myform(forms.Form):
- choice = forms.ChoiceField(choices=choices, required=True)
+ choice = forms.ChoiceField(choices=choices, required=True, label=label)
form = myform(data) if data else myform()
return form
@@ -98,14 +98,6 @@ class EditTextbookForm(forms.ModelForm):
model = TextBook
fields = ['name', 'chapters', 'tags_field']
-def AddReviewerForm(choices,instance=None):
- """ return a form object with appropriate choices """
-
- class myform(forms.Form):
- reviewer = forms.ChoiceField(choices=choices, required=True)
- form = myform(instance) if instance else myform()
- return form
-
def AddTaskForm(task_choices, is_plain=False):
""" if is_plain is true, it means the task has no subs/deps.
so we also give a radio button to choose between subs and dependencies.
diff --git a/pytask/taskapp/urls.py b/pytask/taskapp/urls.py
index 7efc9be..a2de8f3 100644
--- a/pytask/taskapp/urls.py
+++ b/pytask/taskapp/urls.py
@@ -3,7 +3,7 @@ from django.conf.urls.defaults import *
from pytask.taskapp.views import create_task, view_task, claim_task, \
select_user, edit_task, create_textbook, view_textbook, \
browse_tasks, edit_textbook, approve_task, approved_task,\
- browse_textbooks, approve_textbook, approved_textbook
+ browse_textbooks, approve_textbook, approved_textbook, addreviewer
from pytask.views import under_construction
@@ -16,6 +16,7 @@ urlpatterns = patterns('',
(r'^select/tid=(\w+)$', select_user),
(r'^approve/tid=(\w+)$', approve_task),
(r'^approved/tid=(\w+)$', approved_task),
+ (r'^addreviewer/tid=(\w+)$', addreviewer),
(r'^browse/$', browse_tasks),
(r'^textbook/create/$', create_textbook),
diff --git a/pytask/taskapp/views.py b/pytask/taskapp/views.py
index 7d17c36..4edca0a 100755
--- a/pytask/taskapp/views.py
+++ b/pytask/taskapp/views.py
@@ -148,6 +148,9 @@ def view_task(request, tid):
context['can_comment'] = True if task.status != "UP" or\
profile.rights!="CT" else False
+ context['can_mod_reviewers'] = True if profile.rights in ["MG", "DC"] else\
+ False
+
# if task.status == "CD":
# context['closing_notification'] = Notification.objects.filter(task=task,role="CD")[0]
# elif task.status == "CM":
@@ -253,6 +256,53 @@ def approved_task(request, tid):
return render_to_response("task/approved_task.html", context)
@login_required
+def addreviewer(request, tid):
+
+ user = request.user
+ profile = user.get_profile()
+
+ task_url = "/task/view/tid=%s"%tid
+ task = getTask(tid)
+
+ can_mod_reviewers = True if profile.rights in ["MG", "DC"] else False
+ if not can_mod_reviewers:
+ raise Http404
+
+ context = {"user": user,
+ "profile": profile,
+ "task": task,
+ }
+
+ context.update(csrf(request))
+
+
+ # This part has to be made better
+ reviewer_choices = User.objects.filter(is_active=True).\
+ exclude(reviewing_tasks__uniq_key=tid).\
+ exclude(claimed_tasks__uniq_key=tid).\
+ exclude(approved_tasks__uniq_key=tid).\
+ exclude(created_tasks__uniq_key=tid)
+ choices = ((a_user.id,a_user.username) for a_user in reviewer_choices)
+ label = "Reviewer"
+
+ if request.method == "POST":
+ form = ChoiceForm(choices, data=request.POST, label=label)
+ if form.is_valid():
+ data = form.cleaned_data.copy()
+ uid = data['choice']
+ reviewer = User.objects.get(id=uid)
+
+ task.reviewers.add(reviewer)
+ return redirect(task_url)
+ else:
+ context.update({"form": form})
+ return render_to_response("task/addreviewer.html", context)
+ else:
+ form = ChoiceForm(choices, label=label)
+ context.update({"form": form})
+ return render_to_response("task/addreviewer.html", context)
+
+@login_required
def create_textbook(request):
user = request.user
diff --git a/pytask/templates/task/addreviewer.html b/pytask/templates/task/addreviewer.html
new file mode 100644
index 0000000..b497390
--- /dev/null
+++ b/pytask/templates/task/addreviewer.html
@@ -0,0 +1,9 @@
+{% extends 'base.html' %}
+{% block content %}
+ Select a user as a reviewer for this task.<br />
+ <form action="" method="POST">
+ {% csrf_token %}
+ {{form.as_table}}
+ <input type="submit" value="Select">
+ </form>
+{% endblock %}
diff --git a/pytask/templates/task/view.html b/pytask/templates/task/view.html
index a106c02..71ed85a 100644
--- a/pytask/templates/task/view.html
+++ b/pytask/templates/task/view.html
@@ -27,12 +27,7 @@
on {{task.creation_datetime|date:"D d M Y"}} at {{task.creation_datetime|time:"H:i"}}<br />
{% if reviewers %}
- {% ifequal task.status "UP" %}
- Task can be viewed by:
- {% else %}
Reviewers:
- {% endifequal %}
-
{% for reviewer in reviewers %}
<a href="/profile/user/view/uid={{reviewer.id}}">{{reviewer.username}}</a>
{% endfor %}
@@ -41,11 +36,7 @@
{% if can_mod_reviewers %}
<a href="/task/addreviewer/tid={{task.uniq_key}}">
- {% ifequal task.status "UP" %}
- Request others to view/edit the task
- {% else %}
- Add another Reviewer to this task
- {% endifequal %}</a>
+ Add a Reviewer to this task</a>
{% endif %}
<br />