mirror of https://github.com/raiots/TasksManager
add: pager for tasklist view to change year
fix: query bug which cause repeated results in tasklist
This commit is contained in:
parent
69af43c01c
commit
066dd333a8
|
@ -7,18 +7,18 @@ register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='quarter_cate')
|
@register.filter(name='quarter_cate')
|
||||||
def quarter_cate(value, quarter):
|
def quarter_cate(value, year_quarter):
|
||||||
year_now = datetime.now().strftime('%Y')
|
year_now = datetime.now().strftime('%Y')
|
||||||
month = value.deadline.strftime('%m')
|
month = value.deadline.strftime('%m')
|
||||||
year = value.deadline.strftime('%Y')
|
year = value.deadline.strftime('%Y')
|
||||||
month = int(month)
|
month = int(month)
|
||||||
# year = int(year)
|
# year = int(year)
|
||||||
# year_now = int(year) 不知道为什么,如果转整数会把2021和2022认为相同
|
# year_now = int(year) 不知道为什么,如果转整数会把2021和2022认为相同
|
||||||
quarter = int(quarter)
|
# print(quarter)
|
||||||
|
req_year = str(year_quarter[1])
|
||||||
|
quarter = int(year_quarter[0])
|
||||||
# 可能造成性能损失,每次数据库会调出符合“当年”的任务或工作包的全部任务下工作包,并逐个判断
|
# 可能造成性能损失,每次数据库会调出符合“当年”的任务或工作包的全部任务下工作包,并逐个判断
|
||||||
|
if year == req_year:
|
||||||
if year == year_now:
|
|
||||||
print("jakfjklajfklsdjf")
|
|
||||||
if quarter == 1 and 1 <= month <= 3:
|
if quarter == 1 and 1 <= month <= 3:
|
||||||
return str(value) + ' '
|
return str(value) + ' '
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@ def quarter_cate(value, quarter):
|
||||||
else:
|
else:
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='last_month')
|
@register.filter(name='last_month')
|
||||||
def last_month(value):
|
def last_month(value):
|
||||||
curent_date = datetime.strptime(value, '%Y年%m月')
|
curent_date = datetime.strptime(value, '%Y年%m月')
|
||||||
|
@ -43,6 +44,7 @@ def last_month(value):
|
||||||
last_month = last_date.strftime('%Y/%m')
|
last_month = last_date.strftime('%Y/%m')
|
||||||
return last_month
|
return last_month
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='next_month')
|
@register.filter(name='next_month')
|
||||||
def next_month(value):
|
def next_month(value):
|
||||||
curent_date = datetime.strptime(value, '%Y年%m月')
|
curent_date = datetime.strptime(value, '%Y年%m月')
|
||||||
|
@ -50,7 +52,28 @@ def next_month(value):
|
||||||
next_month = next_date.strftime('%Y/%m')
|
next_month = next_date.strftime('%Y/%m')
|
||||||
return next_month
|
return next_month
|
||||||
|
|
||||||
|
|
||||||
@register.filter(name='this_month')
|
@register.filter(name='this_month')
|
||||||
def this_month(value):
|
def this_month(value):
|
||||||
curent_date = datetime.strptime(value, '%Y年%m月')
|
curent_date = datetime.strptime(value, '%Y年%m月')
|
||||||
return curent_date.strftime('%m')
|
return curent_date.strftime('%m')
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='last_year')
|
||||||
|
def last_year(value):
|
||||||
|
curent_year = value[1]
|
||||||
|
last_year = curent_year - 1
|
||||||
|
return last_year
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='next_year')
|
||||||
|
def next_year(value):
|
||||||
|
curent_year = value[1]
|
||||||
|
next_year = curent_year + 1
|
||||||
|
return next_year
|
||||||
|
|
||||||
|
|
||||||
|
@register.filter(name='this_year')
|
||||||
|
def this_year(value):
|
||||||
|
curent_year = value[1]
|
||||||
|
return curent_year
|
|
@ -381,9 +381,12 @@ class TaskListView(View):
|
||||||
def get(self, request, year=timezone.now().year): # TODO 把timezone.now().year写在后面要用year替换的地方是否可以解决
|
def get(self, request, year=timezone.now().year): # TODO 把timezone.now().year写在后面要用year替换的地方是否可以解决
|
||||||
tasks = Task.objects.filter(department=request.user.department, deadline__year=year).order_by('task_id')\
|
tasks = Task.objects.filter(department=request.user.department, deadline__year=year).order_by('task_id')\
|
||||||
| Task.objects.filter(department=request.user.department, related_task__deadline__year=year).order_by('task_id')
|
| Task.objects.filter(department=request.user.department, related_task__deadline__year=year).order_by('task_id')
|
||||||
|
tasks = tasks.distinct()
|
||||||
|
# tasks = Task.objects.filter(Q(department=request.user.department), Q(deadline__year=year) | Q(related_task__deadline__year=year)).order_by('task_id')
|
||||||
# 使用‘或’,找出工作包/年度任务的截止日期在今年的年度任务。后面还要做一个筛选,以达到只显示本年度的工作包
|
# 使用‘或’,找出工作包/年度任务的截止日期在今年的年度任务。后面还要做一个筛选,以达到只显示本年度的工作包
|
||||||
|
year_quarter = {'1': [1, year], '2': [2, year], '3': [3, year], '4': [4, year]}
|
||||||
|
|
||||||
context = {'tasks': tasks}
|
context = {'tasks': tasks, 'year_quarter': year_quarter}
|
||||||
return render(request, 'tasks/tasklist.html', context)
|
return render(request, 'tasks/tasklist.html', context)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -35,8 +35,15 @@
|
||||||
<table class="table table-striped" style="word-break: break-all; overflow: auto" cellspacing="0">
|
<table class="table table-striped" style="word-break: break-all; overflow: auto" cellspacing="0">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12" style="background-color: #f2f2f2">
|
<div class="col-12" style="background-color: #f2f2f2">
|
||||||
<button type="button" id="unfold" onclick="alert1()" class="btn btn-default float-right"><i class="far fa-credit-card"></i> 展开
|
<button type="button" id="unfold" onclick="alert1()" class="btn btn-default float-left"><i class="far fa-credit-card"></i> 展开
|
||||||
</button>
|
</button>
|
||||||
|
<ul class="pagination float-md-right">
|
||||||
|
{% load taskfilter %}
|
||||||
|
<li class="page-item"><a class="page-link" href="/tasklist/{{ year_quarter.1|last_year }}">«</a></li>
|
||||||
|
<li class="page-item"><a class="page-link"> {{ year_quarter.1|this_year }}年 </a></li>
|
||||||
|
<li class="page-item"><a class="page-link" href="/tasklist/{{ year_quarter.1|next_year }}">»</a></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<thead>
|
<thead>
|
||||||
|
@ -86,16 +93,16 @@
|
||||||
<td>{{ task.aim_value }}</td>
|
<td>{{ task.aim_value }}</td>
|
||||||
{% load taskfilter %}
|
{% load taskfilter %}
|
||||||
<td style="background-color: #BFE7A8; padding: 0">
|
<td style="background-color: #BFE7A8; padding: 0">
|
||||||
<textarea class="text-none-border" style="background-color: #BFE7A8;">{% for todo in task.related_task.all %}{{ todo|quarter_cate:'1'|safe }}{% endfor %}</textarea>
|
<textarea class="text-none-border" style="background-color: #BFE7A8;">{% for todo in task.related_task.all %}{{ todo|quarter_cate:year_quarter.1|safe }}{% endfor %}</textarea>
|
||||||
</td>
|
</td>
|
||||||
<td style="background-color: #F5CCB0; padding: 0">
|
<td style="background-color: #F5CCB0; padding: 0">
|
||||||
<textarea class="text-none-border" style="background-color: #F5CCB0">{% for todo in task.related_task.all %}{{ todo|quarter_cate:'2'|safe }}{% endfor %}</textarea>
|
<textarea class="text-none-border" style="background-color: #F5CCB0">{% for todo in task.related_task.all %}{{ todo|quarter_cate:year_quarter.2|safe }}{% endfor %}</textarea>
|
||||||
</td>
|
</td>
|
||||||
<td style="background-color: #F7E4A8; padding: 0">
|
<td style="background-color: #F7E4A8; padding: 0">
|
||||||
<textarea class="text-none-border" style="background-color: #F7E4A8">{% for todo in task.related_task.all %}{{ todo|quarter_cate:'3'|safe }}{% endfor %}</textarea>
|
<textarea class="text-none-border" style="background-color: #F7E4A8">{% for todo in task.related_task.all %}{{ todo|quarter_cate:year_quarter.3|safe }}{% endfor %}</textarea>
|
||||||
</td>
|
</td>
|
||||||
<td style="background-color: #83E1E3; padding: 0">
|
<td style="background-color: #83E1E3; padding: 0">
|
||||||
<textarea class="text-none-border" style="background-color: #83E1E3">{% for todo in task.related_task.all %}{{ todo|quarter_cate:'4'|safe }}{% endfor %}</textarea>
|
<textarea class="text-none-border" style="background-color: #83E1E3">{% for todo in task.related_task.all %}{{ todo|quarter_cate:year_quarter.4|safe }}{% endfor %}</textarea>
|
||||||
</td>
|
</td>
|
||||||
<td style="text-align:center;">{{ task.deadline | date:"Y.m" }}</td>
|
<td style="text-align:center;">{{ task.deadline | date:"Y.m" }}</td>
|
||||||
<td style="text-align:center;">{{ task.duty_group }}</td>
|
<td style="text-align:center;">{{ task.duty_group }}</td>
|
||||||
|
|
Loading…
Reference in New Issue