summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMadhusudan.C.S2011-02-09 03:26:25 +0530
committerMadhusudan.C.S2011-02-09 03:26:25 +0530
commit37b695508d87930cf76421920685af45f8c1a1df (patch)
tree7c91cab0379cadf84f1c35a2c6eec293c0863ca2
parente820300c671ba578da8867d9a72d4b3b9354ce3f (diff)
downloadpytask-37b695508d87930cf76421920685af45f8c1a1df.tar.gz
pytask-37b695508d87930cf76421920685af45f8c1a1df.tar.bz2
pytask-37b695508d87930cf76421920685af45f8c1a1df.zip
Allow reviewers for the task, coordinators and admit to approve task claims.
Also fix styling issues.
-rwxr-xr-xpytask/taskapp/views/task.py75
-rw-r--r--pytask/templates/task/claim.html2
2 files changed, 51 insertions, 26 deletions
diff --git a/pytask/taskapp/views/task.py b/pytask/taskapp/views/task.py
index 8506614..210a9a7 100755
--- a/pytask/taskapp/views/task.py
+++ b/pytask/taskapp/views/task.py
@@ -326,7 +326,9 @@ def approve_task(request, task_id):
task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
- if profile.role not in [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]] or task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]:
+ if (profile.role not in [profile_models.ROLES_CHOICES[0][0],
+ profile_models.ROLES_CHOICES[1][0]] or
+ task.status != taskapp_models.TASK_STATUS_CHOICES[0][0]):
raise http.Http404
context = {"user": user,
@@ -524,7 +526,7 @@ def submit_report(request, task_id):
'task/submit_report.html', RequestContext(request, context))
@login_required
-def claim_task(request, task_id):
+def claim_task(request, task_id, template_name='task/claim.html'):
context = {}
@@ -552,25 +554,42 @@ def claim_task(request, task_id):
is_reviewer = True if user in reviewers else False
has_claimed = True if user in claimed_users else False
- task_claimable = True if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]] else False
- can_claim = True if task_claimable and ( not has_claimed )\
- and ( not is_reviewer ) and (not is_creator ) \
- else False
+ if task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0],
+ taskapp_models.TASK_STATUS_CHOICES[3][0]]:
+ task_claimable = True
+ else:
+ task_claimable = False
+
+ if (task_claimable and not has_claimed
+ and not is_reviewer and not is_creator):
+ can_claim = True
+ else:
+ can_claim =False
+
+ if (is_creator or is_reviewer or profile.role in
+ [profile_models.ROLES_CHOICES[0][0],
+ profile_models.ROLES_CHOICES[1][0]]):
+ can_approve = True
+ else:
+ can_approve = False
old_claims = task.claims.all()
- context.update({"is_creator": is_creator,
- "task_claimable": task_claimable,
- "can_claim": can_claim,
- "old_claims": old_claims})
+ context.update({
+ 'can_approve': can_approve,
+ 'task_claimable': task_claimable,
+ 'can_claim': can_claim,
+ 'old_claims': old_claims
+ })
- if request.method == "POST" and can_claim:
+ if request.method == 'POST' and can_claim:
form = taskapp_forms.ClaimTaskForm(request.POST)
if form.is_valid():
data = form.cleaned_data.copy()
- data.update({"task": task,
- "claim_datetime": datetime.now(),
- "claimed_by": user,})
+ data.update({
+ 'task': task,
+ 'claim_datetime': datetime.now(),
+ 'claimed_by': user,})
new_claim = taskapp_models.TaskClaim(**data)
new_claim.save()
@@ -580,14 +599,14 @@ def claim_task(request, task_id):
return shortcuts.redirect(claim_url)
else:
- context.update({"form": form})
+ context.update({'form': form})
return shortcuts.render_to_response(
- "task/claim.html", RequestContext(request, context))
+ template_name, RequestContext(request, context))
else:
form = taskapp_forms.ClaimTaskForm()
- context.update({"form": form})
+ context.update({'form': form})
return shortcuts.render_to_response(
- "task/claim.html", RequestContext(request, context))
+ template_name, RequestContext(request, context))
@login_required
def select_user(request, task_id):
@@ -601,20 +620,26 @@ def select_user(request, task_id):
profile = user.get_profile()
task = shortcuts.get_object_or_404(taskapp_models.Task, pk=task_id)
- context = {"user": user,
- "profile": profile,
- "task": task,
- }
+ context = {
+ 'user': user,
+ 'profile': profile,
+ 'task': task,
+ }
context.update(csrf(request))
+ reviewers = task.reviewers.all()
claimed_users = task.claimed_users.all()
+
+ is_reviewer = True if user in reviewers else False
task_claimed = True if claimed_users else False
-
+
is_creator = True if user == task.created_by else False
- if (is_creator or profile.role in [profile_models.ROLES_CHOICES[1][0], profile_models.ROLES_CHOICES[2][0]]) and \
- task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0], taskapp_models.TASK_STATUS_CHOICES[3][0]]:
+ if (is_creator or is_reviewer or profile.role in
+ [profile_models.ROLES_CHOICES[0][0], profile_models.ROLES_CHOICES[1][0]]
+ and task.status in [taskapp_models.TASK_STATUS_CHOICES[1][0],
+ taskapp_models.TASK_STATUS_CHOICES[3][0]]):
if task_claimed:
diff --git a/pytask/templates/task/claim.html b/pytask/templates/task/claim.html
index 6204356..7f24fdd 100644
--- a/pytask/templates/task/claim.html
+++ b/pytask/templates/task/claim.html
@@ -24,7 +24,7 @@
The task cannot be claimed at this stage.<br />
{% endif %}
{% endif %}
- {% if old_claims and is_creator %}
+ {% if old_claims and can_approve %}
<hr />
<a href="{% url select_user task.id %}">Select a user to assign the work</a>
{% endif %}