From 8b4d29a71de3785adc3a64757f1713a58ddeef0d Mon Sep 17 00:00:00 2001 From: raiots Date: Fri, 26 Mar 2021 09:25:40 +0800 Subject: [PATCH] =?UTF-8?q?add:=20=E6=89=BF=E5=8A=9E=E4=BA=BA=E4=B8=8E?= =?UTF-8?q?=E5=8D=8F=E5=8A=9E=E4=BA=BA=E5=8F=AA=E6=98=BE=E7=A4=BA=E6=9C=AC?= =?UTF-8?q?=E9=83=A8=E9=97=A8=E4=BA=BA=E5=91=98=EF=BC=8CIndex=E4=B8=AD?= =?UTF-8?q?=E4=BB=85=E6=98=BE=E7=A4=BA=E6=9C=AC=E9=83=A8=E9=97=A8=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=EF=BC=8C=E9=83=A8=E9=97=A8=E4=BB=BB=E5=8A=A1=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E6=8C=89=E7=BC=96=E5=8F=B7+=E5=AE=8C=E6=88=90?= =?UTF-8?q?=E6=97=B6=E9=97=B4=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/tasks/admin.py | 33 ++++++++++++++++++++++------- apps/tasks/forms.py | 4 ++++ apps/tasks/views.py | 7 +++--- templates/tasks/group_todolist.html | 8 +++++-- templates/tasks/index.html | 2 +- 5 files changed, 40 insertions(+), 14 deletions(-) diff --git a/apps/tasks/admin.py b/apps/tasks/admin.py index 7ac0556..3144ef6 100644 --- a/apps/tasks/admin.py +++ b/apps/tasks/admin.py @@ -4,10 +4,23 @@ from django.contrib import admin from django.utils.html import format_html from . import models -from apps.users.models import TaskProperty +from apps.users.models import TaskProperty, User class TodoInline(admin.StackedInline): + + # 在Inline中同样筛选仅本部门的承办人、协办人 + def formfield_for_foreignkey(self, db_field, request, **kwargs): + if db_field.name == 'related_task': + kwargs["queryset"] = models.Task.objects.filter(department=request.user.department) + elif db_field.name == 'main_executor': + kwargs["queryset"] = User.objects.filter(department=request.user.department) + return super().formfield_for_foreignkey(db_field, request, **kwargs) + + def formfield_for_manytomany(self, db_field, request, **kwargs): + if db_field.name == 'sub_executor': + kwargs["queryset"] = User.objects.filter(department=request.user.department) + return super().formfield_for_manytomany(db_field, request, **kwargs) model = models.Todo extra = 0 # classes = ['collapse'] @@ -57,18 +70,26 @@ class TaskAdmin(admin.ModelAdmin): class TodoAdmin(admin.ModelAdmin): - # 工作包页面仅显示所属本部门的年度任务 + # 工作包页面仅显示所属本部门的年度任务、承办人、协办人 def formfield_for_foreignkey(self, db_field, request, **kwargs): if db_field.name == 'related_task': kwargs["queryset"] = models.Task.objects.filter(department=request.user.department) + elif db_field.name == 'main_executor': + kwargs["queryset"] = User.objects.filter(department=request.user.department) return super().formfield_for_foreignkey(db_field, request, **kwargs) + def formfield_for_manytomany(self, db_field, request, **kwargs): + if db_field.name == 'sub_executor': + kwargs["queryset"] = User.objects.filter(department=request.user.department) + return super().formfield_for_manytomany(db_field, request, **kwargs) + fieldsets = [ (None, { 'fields': [ 'related_task', 'todo_topic', 'todo_note', 'deadline', 'duty_group', 'main_executor', 'sub_executor', 'predict_work', 'evaluate_factor', - ] + ], + 'description': [] }), (None, { @@ -96,7 +117,7 @@ class TodoAdmin(admin.ModelAdmin): list_display_links = ('todo_topic', 'deadline', ) date_hierarchy = 'deadline' list_per_page = 70 # 目的是取消自动分页,好像有bug - raw_id_fields = ("main_executor", "sub_executor") + # raw_id_fields = ("sub_executor",) search_fields = ('todo_topic',) ordering = ('related_task', ) @@ -120,11 +141,7 @@ class TodoAdmin(admin.ModelAdmin): return obj.related_task lined_task.short_description = '任务名称' -# TODO 增加承办人与协办人只显示本部门人员 # TODO 任务编辑界面按部门显示 -# TODO 修复工作事项显示不下自动分页,取消自动分页 - - admin.site.register(models.Task, TaskAdmin) diff --git a/apps/tasks/forms.py b/apps/tasks/forms.py index 8bc0116..260b031 100644 --- a/apps/tasks/forms.py +++ b/apps/tasks/forms.py @@ -6,11 +6,15 @@ class LoginForm(forms.Form): password = forms.CharField() remember = forms.BooleanField(required=False) + class TodoForm(forms.ModelForm): + required_css_class = 'required' + class Meta: model = Todo fields = ['maturity', 'real_work', 'complete_note'] labels ={'text': ''} widgets = {'rows': '3'} + # TODO 数据不可为空 \ No newline at end of file diff --git a/apps/tasks/views.py b/apps/tasks/views.py index 404738d..34ab1f4 100644 --- a/apps/tasks/views.py +++ b/apps/tasks/views.py @@ -15,7 +15,7 @@ from apps.users.models import User class IndexView(View): @method_decorator(login_required) def get(self, request): - users = User.objects.all() + users = User.objects.filter(department=request.user.department) # points = [] # point = User.objects.all() # for i in point: @@ -39,7 +39,8 @@ class TodoListView(View): class GroupTodoList(View): @method_decorator(login_required) def get(self, request, year=timezone.now().year, month=timezone.now().month): - group_todo = Todo.objects.filter(main_executor__department=request.user.department, deadline__year=year, deadline__month=month) + group_todo = Todo.objects.filter(main_executor__department=request.user.department, deadline__year=year, + deadline__month=month).order_by('related_task_id', 'deadline') date = str(year) + '年' + str(month) + '月' context = {'group_todo': group_todo, 'date': date} return render(request, 'tasks/group_todolist.html', context) @@ -85,7 +86,7 @@ class TodoEntryView(View): form = TodoForm(instance=todo_detail, data=request.POST) if form.is_valid(): form.save() - return redirect('tasks:index') + return redirect('tasks:todolist') # return redirect('tasks:todo_detail', pk=pk) diff --git a/templates/tasks/group_todolist.html b/templates/tasks/group_todolist.html index 43b44c3..0deb800 100644 --- a/templates/tasks/group_todolist.html +++ b/templates/tasks/group_todolist.html @@ -58,10 +58,12 @@ - + + + @@ -81,8 +83,10 @@ + + - + diff --git a/templates/tasks/index.html b/templates/tasks/index.html index 217eb1f..8a8eb5d 100644 --- a/templates/tasks/index.html +++ b/templates/tasks/index.html @@ -90,7 +90,7 @@
-

部门工作统计表

+

本部门工作统计表

## 工作事项 完成时间 工作要求及交付物任务编号任务来源 承办单位 承/督办人 协办人{{ todo.todo_topic }} {{ todo.deadline | date:"m月d日" }} {{ todo.task_id }}{{ todo.task_origin }} {{ todo.duty_group }}{{ todo.main_executor }}{{ todo.main_executor}} {{ todo.sub_executor.all|join:", " }} {{ todo.predict_work }} {{ todo.evaluate_factor }}