You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
3.5 KiB
134 lines
3.5 KiB
# coding=utf-8
|
|
from django.contrib.auth.decorators import login_required
|
|
from django.shortcuts import render, redirect, get_object_or_404
|
|
from accounts_app.models import UserProfile
|
|
from models import Task
|
|
from mydefs import pag_mn, only_admins, safe_int
|
|
from forms import TaskFrm
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def home(request):
|
|
tasks = Task.objects.filter(recipient=request.user, state='S') # Новые задачи
|
|
|
|
# filter
|
|
#dir, field = order_helper(request)
|
|
#if field:
|
|
# tasks = tasks.order_by(field)
|
|
|
|
tasks = pag_mn(request, tasks)
|
|
|
|
return render(request, 'taskapp/tasklist.html', {
|
|
'tasks': tasks
|
|
})
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def active_tasks(request):
|
|
tasks = Task.objects.filter(recipient=request.user, state='C') # На выполнении
|
|
tasks = pag_mn(request, tasks)
|
|
return render(request, 'taskapp/tasklist_active.html', {
|
|
'tasks': tasks
|
|
})
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def finished_tasks(request):
|
|
tasks = Task.objects.filter(recipient=request.user, state='F') # Выполненные
|
|
tasks = pag_mn(request, tasks)
|
|
return render(request, 'taskapp/tasklist_finish.html', {
|
|
'tasks': tasks
|
|
})
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def own_tasks(request):
|
|
tasks = Task.objects.filter(author=request.user).exclude(state='F') # Назначенные мной и не законченная
|
|
tasks = pag_mn(request, tasks)
|
|
return render(request, 'taskapp/tasklist_own.html', {
|
|
'tasks': tasks
|
|
})
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def all_tasks(request):
|
|
tasks = Task.objects.filter(recipient=request.user) # Все задачи
|
|
tasks = pag_mn(request, tasks)
|
|
return render(request, 'taskapp/tasklist.html', {
|
|
'tasks': tasks
|
|
})
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def task_delete(request, task_id):
|
|
get_object_or_404(Task, id=task_id).delete()
|
|
return redirect('task_home')
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def task_add_edit(request, task_id=0):
|
|
task_id = int(task_id)
|
|
warntext = ''
|
|
|
|
# чтоб при добавлении сразу был выбран исполнитель
|
|
frm_recipient_id = safe_int(request.GET.get('rp'))
|
|
|
|
if request.method == 'POST':
|
|
frm = TaskFrm(request.POST)
|
|
if frm.is_valid():
|
|
if task_id == 0:
|
|
tsk = Task()
|
|
else:
|
|
tsk = get_object_or_404(Task, id=task_id)
|
|
tsk.save_form(frm, request.user)
|
|
tsk.save()
|
|
return redirect('task_home')
|
|
else:
|
|
warntext = u'Исправте ошибки'
|
|
|
|
if task_id == 0:
|
|
task = Task()
|
|
frm = TaskFrm(initial={
|
|
'recipient': frm_recipient_id
|
|
})
|
|
else:
|
|
task = get_object_or_404(Task, id=task_id)
|
|
frm = TaskFrm({
|
|
'descr': task.descr,
|
|
'recipient': task.recipient.id,
|
|
'device': task.device.id,
|
|
'priority': task.priority,
|
|
'out_date': task.out_date,
|
|
'state': task.state
|
|
})
|
|
|
|
return render(request, 'taskapp/add_edit_task.html', {
|
|
'warntext': warntext,
|
|
'form': frm,
|
|
'task': task
|
|
})
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def task_finish(request, task_id):
|
|
task = get_object_or_404(Task, id=task_id)
|
|
task.finish(request.user)
|
|
task.save()
|
|
return redirect('task_home')
|
|
|
|
|
|
@login_required
|
|
@only_admins
|
|
def task_begin(request, task_id):
|
|
task = get_object_or_404(Task, id=task_id)
|
|
task.begin(request.user)
|
|
task.save()
|
|
return redirect('task_home')
|