From 69af43c01c7ca5f18619e4080b15182dea45f70e Mon Sep 17 00:00:00 2001 From: raiots Date: Tue, 4 Jan 2022 17:15:16 +0800 Subject: [PATCH] fix: the unfiltered by year in tasklist view --- apps/tasks/templatetags/taskfilter.py | 25 +++++++++++++++++-------- apps/tasks/urls.py | 1 + apps/tasks/views.py | 8 ++++++-- 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/apps/tasks/templatetags/taskfilter.py b/apps/tasks/templatetags/taskfilter.py index c005d05..7a68ff3 100644 --- a/apps/tasks/templatetags/taskfilter.py +++ b/apps/tasks/templatetags/taskfilter.py @@ -8,22 +8,31 @@ register = template.Library() @register.filter(name='quarter_cate') def quarter_cate(value, quarter): + year_now = datetime.now().strftime('%Y') month = value.deadline.strftime('%m') + year = value.deadline.strftime('%Y') month = int(month) + # year = int(year) + # year_now = int(year) 不知道为什么,如果转整数会把2021和2022认为相同 quarter = int(quarter) + # 可能造成性能损失,每次数据库会调出符合“当年”的任务或工作包的全部任务下工作包,并逐个判断 - if quarter == 1 and 1 <= month <= 3: - return str(value) + ' ' + if year == year_now: + print("jakfjklajfklsdjf") + if quarter == 1 and 1 <= month <= 3: + return str(value) + ' ' - elif quarter == 2 and 4 <= month <= 6: - return str(value) + ' ' + elif quarter == 2 and 4 <= month <= 6: + return str(value) + ' ' - elif quarter == 3 and 7 <= month <= 9: - return str(value) + ' ' + elif quarter == 3 and 7 <= month <= 9: + return str(value) + ' ' - elif quarter == 4 and 10 <= month <= 12: - return str(value) + ' ' + elif quarter == 4 and 10 <= month <= 12: + return str(value) + ' ' + else: + return '' else: return '' diff --git a/apps/tasks/urls.py b/apps/tasks/urls.py index b51cbf7..cbbb2b5 100644 --- a/apps/tasks/urls.py +++ b/apps/tasks/urls.py @@ -16,6 +16,7 @@ urlpatterns = [ path('group_todolist///', views.GroupTodoList.as_view(), name='group_todolist_month'), path('todo//', views.TodoEntryView.as_view(), name='todo_detail'), path('tasklist/', views.TaskListView.as_view(), name='tasklist'), + path('tasklist//', views.TaskListView.as_view(), name='tasklist_year'), path('about/', views.AboutView.as_view(), name='about'), ] # diff --git a/apps/tasks/views.py b/apps/tasks/views.py index 5f659d9..35b02b9 100644 --- a/apps/tasks/views.py +++ b/apps/tasks/views.py @@ -28,6 +28,7 @@ class IndexView(View): # TODO 解决系统时间变化,日期不刷新的问题 # https://stackoverflow.com/questions/63072235/django-localdate-doesnt-return-correct-date # https://stackoverflow.com/questions/13225890/django-default-timezone-now-saves-records-using-old-time + # https://stackoverflow.com/questions/38237777/django-timezone-now-vs-timezone-now @method_decorator(login_required) def get(self, request, year=timezone.now().year, month=timezone.now().month): @@ -377,8 +378,11 @@ class GroupTodoList(View): class TaskListView(View): @method_decorator(login_required) - def get(self, request): - tasks = Task.objects.filter(department=request.user.department).order_by('task_id') + 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') \ + | Task.objects.filter(department=request.user.department, related_task__deadline__year=year).order_by('task_id') + # 使用‘或’,找出工作包/年度任务的截止日期在今年的年度任务。后面还要做一个筛选,以达到只显示本年度的工作包 + context = {'tasks': tasks} return render(request, 'tasks/tasklist.html', context)