Ejemplo n.º 1
0
def toggle_all(request, pk):
    project = find(Project, pk=pk)
    completed = (request.PUT.get('completed', '0') == '1')
    query = project.task_set.filter(completed=not(completed))
    task_ids = list(query.values_list('pk', flat=True))
    query.update(completed=completed, updated_at=timezone.now())
    return render_js(request, 'toggle_all', _ctx(project, completed=completed, task_ids=task_ids))
Ejemplo n.º 2
0
def update(request, pk):
    project = find(Project, pk=pk)
    form = ProjectForm(request.PUT, instance=project)
    if form.is_valid():
        project = form.save(commit=False)
        project.save(update_fields=['name'])
    else:
        project.name = form.initial['name'] # reset changes
    return render_js(request, 'update', { 'project': project })
Ejemplo n.º 3
0
def toggle_task(request, pk, project_id):
    # fetch the task with the related project and verify the relationship (pk/project_id)
    task = find(Task.objects.select_related('project'), pk=pk, project_id=project_id)
    form = ToggleTaskForm(request.PUT, instance=task)
    if form.is_valid():
        task = form.save(commit=False)
        task.save(update_fields=['completed'])
        return render_js(request, 'task_toggle', _ctx(task.project, task=task))
    else:
        return HttpResponseBadRequest()
Ejemplo n.º 4
0
def update_task(request, pk, project_id):
    # fetch the task and verify the relationship (pk/project_id)
    task = find(Task, pk=pk, project_id=project_id)
    form = TaskForm(request.PUT, instance=task)
    if form.is_valid():
        task = form.save(commit=False)
        task.save(update_fields=['title'])
    elif not form.data.get('title', '').strip(): # empty title, just delete the task
        task.delete()
        return render_js(request, 'task_delete', _ctx(task.project, pk=pk))
    else:
        task.title = form.initial['title'] # reset changes
    return render_js(request, 'task_update', { 'task': task })
Ejemplo n.º 5
0
def show(request, pk, filter='all'):
    project = find(Project, pk=pk)
    context = { 'filter': filter }

    # retrieve project tasks with the specified filter
    if filter == 'active':
        context['tasks'] = project.task_set.active()
        # prevent a new db hit to count remaining tasks
        context['remaining_tasks_count'] = len(context['tasks'])
    elif filter == 'completed':
        context['tasks'] = project.task_set.completed()
        # prevent a new db hit to count completed tasks
        context['completed_tasks_count'] = len(context['tasks'])
    else:
        context['tasks'] = project.task_set.all()

    return render_html(request, 'show', _ctx(project, **context))
Ejemplo n.º 6
0
def clear_completed(request, pk):
    project = find(Project, pk=pk)
    query = project.task_set.completed()
    task_ids = list(query.values_list('pk', flat=True))
    query.delete()
    return render_js(request, 'clear_completed', _ctx(project, task_ids=task_ids))
Ejemplo n.º 7
0
def delete(request, pk):
    project = find(Project, pk=pk)
    project.delete()
    return render_js(request, 'delete', { 'pk': pk })
Ejemplo n.º 8
0
def delete_task(request, pk, project_id):
    # fetch the task with the related project and verify the relationship (pk/project_id)
    task = find(Task.objects.select_related('project'), pk=pk, project_id=project_id)
    task.delete()
    return render_js(request, 'task_delete', _ctx(task.project, pk=pk))