taskapp/views/task.py
changeset 165 8ea5bcf3bd01
parent 164 bfe621e64a16
child 166 ac72d641046e
equal deleted inserted replaced
164:bfe621e64a16 165:8ea5bcf3bd01
     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     """