3 from django.http import HttpResponse, Http404 |
3 from django.http import HttpResponse, Http404 |
4 from django.shortcuts import render_to_response, redirect |
4 from django.shortcuts import render_to_response, redirect |
5 |
5 |
6 from pytask.taskapp.models import User, Task, Comment, Claim, Request, Notification |
6 from pytask.taskapp.models import User, Task, Comment, Claim, Request, Notification |
7 from pytask.taskapp.utilities.task import getTask |
7 from pytask.taskapp.utilities.task import getTask |
8 from pytask.taskapp.forms.task import TaskCreateForm, AddMentorForm, AddTaskForm, ChoiceForm, AssignCreditForm, RemoveUserForm |
8 from pytask.taskapp.forms.task import TaskCreateForm, AddMentorForm, AddTaskForm, ChoiceForm, AssignCreditForm, RemoveUserForm, EditTaskForm |
9 from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask, closeTask, addMentor |
9 from pytask.taskapp.events.task import createTask, reqMentor, publishTask, addSubTask, addDep, addClaim, assignTask, updateTask, removeTask, removeUser, assignCredits, completeTask, closeTask, addMentor |
10 from pytask.taskapp.views.user import show_msg |
10 from pytask.taskapp.views.user import show_msg |
11 from pytask.taskapp.utilities.user import get_user |
11 from pytask.taskapp.utilities.user import get_user |
12 |
12 |
13 ## everywhere if there is no task, django should display 500 message.. but take care of that in sensitive views like add mentor and all |
13 ## everywhere if there is no task, django should display 500 message.. but take care of that in sensitive views like add mentor and all |
135 publish = data['publish'] |
135 publish = data['publish'] |
136 task = createTask(title,desc,user,credits) |
136 task = createTask(title,desc,user,credits) |
137 |
137 |
138 if not task: |
138 if not task: |
139 error_msg = "Another task with the same title exists" |
139 error_msg = "Another task with the same title exists" |
140 return render_to_response('task/create.html',{'form':form, 'error_msg':error_msg}) |
140 return render_to_response('task/create.html',{'user':user, 'form':form, 'error_msg':error_msg}) |
141 |
141 |
142 addMentor(task, user) |
142 addMentor(task, user) |
143 updateTask(task,tags_field=data['tags_field']) |
143 updateTask(task,tags_field=data['tags_field']) |
144 if publish: publishTask(task) |
144 # if publish: publishTask(task) |
145 task_url = '/task/view/tid=%s'%task.id |
145 task_url = '/task/view/tid=%s'%task.id |
146 return redirect(task_url) |
146 return redirect(task_url) |
147 else: |
147 else: |
148 return render_to_response('task/create.html',{'form':form}) |
148 return render_to_response('task/create.html',{'user':user, 'form':form}) |
149 else: |
149 else: |
150 form = TaskCreateForm() |
150 form = TaskCreateForm() |
151 return render_to_response('task/create.html',{'form':form}) |
151 return render_to_response('task/create.html',{'form':form}) |
152 else: |
152 else: |
153 return show_msg(user, 'You are not authorised to create a task.') |
153 return show_msg(user, 'You are not authorised to create a task.') |
519 def edit_task(request, tid): |
519 def edit_task(request, tid): |
520 """ see what are the attributes that can be edited depending on the current status |
520 """ see what are the attributes that can be edited depending on the current status |
521 and then give the user fields accordingly. |
521 and then give the user fields accordingly. |
522 """ |
522 """ |
523 |
523 |
524 task = Task.objects.get(id=tid) |
524 task = Task.objects.get(id=tid) |
525 user = get_user(request.user) if request.user.is_authenticated() else request.user |
525 task_url = "/task/view/tid=%s"%tid |
|
526 user = get_user(request.user) if request.user.is_authenticated() else request.user |
|
527 |
|
528 is_mentor = True if user in task.mentors.all() else False |
|
529 can_edit = True if is_mentor and task.status == "UP" else False |
|
530 |
|
531 if can_edit: |
|
532 form = EditTaskForm(task) |
|
533 if request.method=="POST": |
|
534 data = request.POST |
|
535 form = EditTaskForm(task, data) |
|
536 if form.is_valid(): |
|
537 data = form.cleaned_data |
|
538 title = data['title'] |
|
539 try: |
|
540 prev_task = Task.objects.get(title=title) |
|
541 if prev_task != task: |
|
542 error_msg = "Another task exists with the same title" |
|
543 return render_to_response('task/edittask.html',{'user':user, 'form':form, 'error_msg':error_msg}) |
|
544 except Task.DoesNotExist: |
|
545 pass |
|
546 task.title = title |
|
547 task.desc = data['desc'] |
|
548 task.tags_field = data['tags_field'] |
|
549 task.credits = data['credits'] |
|
550 task.save() |
|
551 return redirect(task_url) |
|
552 else: |
|
553 return render_to_response('task/edittask.html',{'user':user, 'form':form}) |
|
554 else: |
|
555 return render_to_response('task/edittask.html',{'user':user, 'form':form}) |
|
556 else: |
|
557 return show_msg(user, "You cannot edit the task at this stage", task_url, "view the task") |
|
558 |
|
559 |
|
560 |
526 |
561 |
527 def complete_task(request, tid): |
562 def complete_task(request, tid): |
528 """ call the event called complete task. |
563 """ call the event called complete task. |
529 and also pass it the current user to know who marked it as complete. |
564 and also pass it the current user to know who marked it as complete. |
530 """ |
565 """ |