示例#1
0
def todo(request, project_name):
    """Allows to create a new todolist and todoitems.
    Actions available here:
    Add a todolist: Owner Participant
    Add a todoitem: Owner Participant
    """
    project = get_project(request, project_name)
    access = get_access(project, request.user)
    if request.GET.get('includecomplete', 0):
        lists = TodoList.objects.filter(user=request.user, project=project)
    else:
        lists = TodoList.objects.filter(user=request.user, project=project, is_complete_attr=False)
    addlistform = bforms.AddTodoListForm()
    if request.method == 'POST':
        if request.POST.has_key('addlist'):
            addlistform = bforms.AddTodoListForm(project, request.user, request.POST)
            if addlistform.is_valid():
                addlistform.save()
                return HttpResponseRedirect('.')
        elif request.POST.has_key('additem'):
            id = int(request.POST['id'])
            list = TodoList.objects.get(id=id)
            text_id = '%s-text' % list.id
            if request.POST[text_id]:
                item = TodoItem(list=list, text=request.POST[text_id])
                item.save()
        elif request.POST.has_key('listmarkdone'):
            id = int(request.POST['id'])
            list = TodoList.objects.get(id=id)
            list.is_complete = True
            list.save()
            return HttpResponseRedirect('.')
        elif request.POST.has_key('itemmarkdone'):
            id = int(request.POST['id'])
            todoitem = TodoItem.objects.get(id=id)
            todoitem.is_complete = True
            todoitem.save()
            return HttpResponseRedirect('.')

    if request.method == 'GET':
        addlistform = bforms.AddTodoListForm()

    if request.GET.get('csv', ''):
        response, writer = reponse_for_cvs(project=project)
        writer.writerow(('Todo Lists',))
        writer.writerow(TodoList.as_csv_header())
        lists = TodoList.objects.filter(user=request.user, project=project)
        for list in lists:
            writer.writerow(list.as_csv())
        for list in lists:
            for item in list.todoitem_set.all():
                writer.writerow(item.as_csv())
        return response
    payload = {'project': project, 'lists': lists, 'addlistform': addlistform}
    return render(request, 'project/todo.html', payload)