135 else: |
135 else: |
136 form = TaskCommentForm() |
136 form = TaskCommentForm() |
137 context['form'] = form |
137 context['form'] = form |
138 return render_to_response('task/view.html', context) |
138 return render_to_response('task/view.html', context) |
139 |
139 |
|
140 @login_required |
|
141 def claim_task(response, tid): |
|
142 |
|
143 task_url = "/task/view/tid=%s"%tid |
|
144 claim_url = "/task/claim/tid=%s"%tid |
|
145 task = getTask(tid) |
|
146 |
|
147 if task.status == "UP": |
|
148 raise Http404 |
|
149 |
|
150 user = request.user |
|
151 profile = user.get_profile() |
|
152 |
|
153 context = {"user": user, |
|
154 "profile": profile, |
|
155 "task": task, |
|
156 } |
|
157 |
|
158 context.update(csrf(request)) |
|
159 |
|
160 reviewers = task.reviewers.all() |
|
161 claimed_users = task.claimed_users.all() |
|
162 assigned_users = task.assigned_users.all() |
|
163 |
|
164 is_creator = True if user == task.created_by else False |
|
165 is_reviewer = True if user in reviewers else False |
|
166 has_claimed = True if user in claimed_users else False |
|
167 |
|
168 task_claimable = True if task.status in ["OP", "WR"] else False |
|
169 can_claim = True if task_claimable and ( not has_claimed )\ |
|
170 and ( not is_reviewer ) else False |
|
171 |
|
172 old_claims = task.claims.all() |
|
173 |
|
174 context.update({"is_creator": is_creator, |
|
175 "task_claimable": task_claimable, |
|
176 "can_claim": can_claim, |
|
177 "old_claims": old_claims}) |
|
178 |
|
179 if request.method == "POST" and can_claim: |
|
180 form = ClaimTaskForm(request.POST) |
|
181 if form.is_valid(): |
|
182 data = form.cleaned_data.copy() |
|
183 data.update({"uniq_key": make_key(TaskClaim), |
|
184 "task": task, |
|
185 "claim_datetime": datetime.now(), |
|
186 "claimed_by": user,}) |
|
187 new_claim = TaskClaim(**data) |
|
188 new_claim.save() |
|
189 return redirect(claim_url) |
|
190 |
|
191 else: |
|
192 context.update({"form": form}) |
|
193 return render_to_response("task/claim.html", context) |
|
194 else: |
|
195 form = ClaimTaskForm() |
|
196 context.update({"form": form}) |
|
197 return render_to_response("task/claim.html", context) |
|
198 |
|
199 |