diff options
-rw-r--r-- | pytask/taskapp/forms.py | 12 | ||||
-rw-r--r-- | pytask/taskapp/urls.py | 3 | ||||
-rwxr-xr-x | pytask/taskapp/views.py | 50 | ||||
-rw-r--r-- | pytask/templates/task/addreviewer.html | 9 | ||||
-rw-r--r-- | pytask/templates/task/view.html | 11 |
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 /> |