mirror of https://github.com/raiots/TasksManager
98 lines
3.2 KiB
Python
98 lines
3.2 KiB
Python
import re
|
|
|
|
from django.contrib import admin
|
|
from django.utils.html import format_html
|
|
|
|
from . import models
|
|
from apps.users.models import TaskProperty
|
|
|
|
|
|
class TaskAdmin(admin.ModelAdmin):
|
|
|
|
# def formfield_for_manytomany(self, db_field, request, **kwargs):
|
|
# if db_field.name == "related_task":
|
|
# ori_path = request.path
|
|
# f_id = re.sub("\D", "", ori_path)
|
|
# try:
|
|
# kwargs["queryset"] = models.Task.objects.get(id=f_id).related_task
|
|
# return super().formfield_for_manytomany(db_field, request, **kwargs)
|
|
# except:
|
|
# pass
|
|
# # kwargs["queryset"] = models.Task.objects.get(id=2).related_task
|
|
|
|
def get_changeform_initial_data(self, request):
|
|
return {'department': request.user.department}
|
|
|
|
def formfield_for_foreignkey(self, db_field, request, **kwargs):
|
|
if db_field.name == 'task_property':
|
|
kwargs["queryset"] = TaskProperty.objects.filter(own_department=request.user.department)
|
|
return super().formfield_for_foreignkey(db_field, request, **kwargs)
|
|
|
|
list_display = (
|
|
'task_property', 'task_id', 'task_topic', 'task_origin', 'aim_value', 'deadline', 'duty_group', 'principal',
|
|
'leader', 'task_note',
|
|
)
|
|
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': (
|
|
('task_property', 'task_id', 'task_topic', 'task_origin', 'aim_value', 'deadline', 'duty_group',
|
|
'principal', 'leader'),
|
|
'task_note', 'related_task', 'department'),
|
|
}),
|
|
)
|
|
raw_id_fields = ("principal", "leader",)
|
|
autocomplete_fields = ('related_task',)
|
|
search_fields = ('related_task',)
|
|
|
|
|
|
class TodoAdmin(admin.ModelAdmin):
|
|
def sub_executor(self, obj):
|
|
return ', '.join([a.real_name for a in obj.sub_executor.all()])
|
|
|
|
fieldsets = (
|
|
(None, {
|
|
'fields': (
|
|
'todo_topic', 'todo_note', 'deadline', 'duty_group', 'main_executor', 'sub_executor', 'predict_work',
|
|
'evaluate_factor',
|
|
)
|
|
}),
|
|
('完成情况', {
|
|
'fields': (
|
|
'real_work', 'complete_note', 'quality_mark', 'maturity'
|
|
)
|
|
})
|
|
)
|
|
list_display = (
|
|
'todo_topic',
|
|
'deadline',
|
|
'task_id',
|
|
'lined_task',
|
|
'task_origin',
|
|
'duty_department',
|
|
'duty_group',
|
|
'main_executor',
|
|
# 'sub_executor',
|
|
)
|
|
list_filter = ('deadline', )
|
|
list_display_links = ('todo_topic', 'deadline', )
|
|
date_hierarchy = 'deadline'
|
|
list_per_page = 20
|
|
raw_id_fields = ("main_executor", "sub_executor")
|
|
search_fields = ('todo_topic',)
|
|
# ordering = ('task_id',)
|
|
def approval_state(self, obj):
|
|
return format_html('<span style="color:{};">{}</span>', 'green', obj.approval)
|
|
def task_id(self, obj):
|
|
return obj.task_id
|
|
def lined_task(self, obj):
|
|
return obj.lined_task
|
|
task_id.admin_order_field = 'task__task_id'
|
|
task_id.short_description = '任务编号'
|
|
lined_task.admin_order_field = 'task__task_topic'
|
|
lined_task.short_description = '任务名称'
|
|
|
|
|
|
admin.site.register(models.Task, TaskAdmin)
|
|
admin.site.register(models.Todo, TodoAdmin)
|