diff options
Diffstat (limited to 'taskapp')
-rw-r--r-- | taskapp/forms/task.py | 8 | ||||
-rw-r--r-- | taskapp/models.py | 5 | ||||
-rw-r--r-- | taskapp/views/task.py | 58 | ||||
-rw-r--r-- | taskapp/views/user.py | 8 |
4 files changed, 73 insertions, 6 deletions
diff --git a/taskapp/forms/task.py b/taskapp/forms/task.py index e69de29..c185164 100644 --- a/taskapp/forms/task.py +++ b/taskapp/forms/task.py @@ -0,0 +1,8 @@ +from django import forms +from pytask.taskapp.models import Task + +class TaskCreateForm(forms.ModelForm): + class Meta: + model = Task + fields = ['title', 'desc', 'tags', 'credits'] + publish = forms.BooleanField(required=False) diff --git a/taskapp/models.py b/taskapp/models.py index a23308e..2b64e8d 100644 --- a/taskapp/models.py +++ b/taskapp/models.py @@ -9,6 +9,7 @@ RIGHTS_CHOICES = ( ("CT", "Contributor"),) STATUS_CHOICES = ( + ("UP", "Unpublished"), ("OP", "Open"), ("LO", "Locked"), ("CL", "Claimed"), @@ -47,14 +48,14 @@ class Task(models.Model): title = models.CharField(max_length = 200, unique = True) desc = models.TextField() - status = models.CharField(max_length = 2, choices = STATUS_CHOICES) + status = models.CharField(max_length = 2, choices = STATUS_CHOICES, default = "UP") tags = models.CharField(max_length = 200, blank = True) subs = models.ManyToManyField('self', blank = True, related_name = "%(class)s_parents") deps = models.ManyToManyField('self', blank = True, related_name = "%(class)s_deps") credits = models.PositiveSmallIntegerField() - progress = models.PositiveSmallIntegerField() + progress = models.PositiveSmallIntegerField(default = 0) mentors = models.ManyToManyField(User, related_name = "%(class)s_mentors") created_by = models.ForeignKey(User, related_name = "%(class)s_created_by") diff --git a/taskapp/views/task.py b/taskapp/views/task.py index a8fec95..67fda8c 100644 --- a/taskapp/views/task.py +++ b/taskapp/views/task.py @@ -2,7 +2,11 @@ from datetime import datetime from django.http import HttpResponse from django.shortcuts import render_to_response, redirect + from pytask.taskapp.models import Task, Comment +from pytask.taskapp.forms.task import TaskCreateForm +from pytask.taskapp.events.task import createTask, addMentor, publishTask +from pytask.taskapp.views.user import show_msg def browse_tasks(request): """ display all the tasks """ @@ -50,3 +54,57 @@ def view_task(request, tid): return render_to_response('task/view.html', context) else: return render_to_response('task/view.html', context) + +def create_task(request): + """ check for rights and create a task if applicable. + if user cannot create a task, redirect to homepage. + """ + + user = request.user + is_guest = True if not user.is_authenticated() else False + + if not is_guest: + user_profile = user.get_profile() + can_create_task = False if user_profile.rights == "CT" else True + if can_create_task: + if request.method == "POST": + form = TaskCreateForm(request.POST) + if form.is_valid(): + data = form.cleaned_data + title = data['title'] + desc = data['desc'] + credits = data['credits'] + publish = data['publish'] + task = createTask(title,desc,user,credits) + + if not task: + error_msg = "Another task with the same title exists" + return render_to_response('task/create.html',{'form':form, 'error_msg':error_msg}) + + addMentor(task, user) + if publish: publishTask(task) + task_url = '/task/view/tid=%s'%task.id + return redirect(task_url) + else: + return render_to_response('task/create.html',{'form':form}) + else: + form = TaskCreateForm() + return render_to_response('task/create.html',{'form':form}) + else: + return show_msg('You are not authorised to create a task.') + else: + return show_msg('You are not authorised to create a task.') + + + + + + + + + + + + + + diff --git a/taskapp/views/user.py b/taskapp/views/user.py index 5d07f76..6013fe9 100644 --- a/taskapp/views/user.py +++ b/taskapp/views/user.py @@ -6,10 +6,10 @@ from pytask.taskapp.events.user import createUser from django.contrib.auth import login, logout, authenticate from django.contrib.auth.models import User -def redirect_to_homepage(request): +def show_msg(error_msg): """ simply redirect to homepage """ - return redirect('/') + return render_to_response('error.html',{'error_msg':error_msg}) def homepage(request): """ check for authentication and display accordingly. """ @@ -81,7 +81,7 @@ def user_login(request): login(request, user) return redirect('/')# Redirect to a success page. else: - return HttpResponse('username is not active, please contact the administrator')# Return a 'disabled account' error message + return show_msg('username is not active, please contact the administrator')# Return a 'disabled account' error message else: errors = ['Please check your username and password'] form = LoginForm() @@ -93,4 +93,4 @@ def user_login(request): def user_logout(request): logout(request) - return HttpResponse('You have logged off successfully!!!') + return show_msg('You have logged off successfully!!!') |