Add per-project Department management
Departments are now a customizable per-project list (standard + custom), matching the existing custom task type/status pattern, instead of a fixed 7-value enum. They're usable directly on tasks (new field, independent of assignee) and continue to drive team member department roles.
This commit is contained in:
@@ -9,7 +9,7 @@ from datetime import datetime
|
||||
|
||||
from database import get_db
|
||||
from models.task import Task, ProductionNote, TaskAttachment, Submission, Review, NoteType
|
||||
from models.user import User, UserRole, DepartmentRole
|
||||
from models.user import User, UserRole
|
||||
from models.project import Project, ProjectMember
|
||||
from models.asset import Asset
|
||||
from models.shot import Shot
|
||||
@@ -248,6 +248,7 @@ async def get_tasks(
|
||||
"name": task.name,
|
||||
"task_type": task.task_type,
|
||||
"status": task.status,
|
||||
"department": task.department,
|
||||
"start_date": task.start_date,
|
||||
"deadline": task.deadline,
|
||||
"project_id": task.project_id,
|
||||
@@ -330,6 +331,7 @@ async def get_my_tasks(
|
||||
name=task.name,
|
||||
task_type=task.task_type,
|
||||
status=task.status,
|
||||
department=task.department,
|
||||
start_date=task.start_date,
|
||||
deadline=task.deadline,
|
||||
project_id=task.project_id,
|
||||
@@ -740,6 +742,7 @@ async def get_task(
|
||||
"description": task.description,
|
||||
"task_type": task.task_type,
|
||||
"status": task.status,
|
||||
"department": task.department,
|
||||
"start_date": task.start_date,
|
||||
"deadline": task.deadline,
|
||||
"project_id": task.project_id,
|
||||
@@ -866,6 +869,7 @@ async def update_task(
|
||||
"description": task.description,
|
||||
"task_type": task.task_type,
|
||||
"status": task.status,
|
||||
"department": task.department,
|
||||
"start_date": task.start_date,
|
||||
"deadline": task.deadline,
|
||||
"project_id": task.project_id,
|
||||
@@ -958,6 +962,7 @@ async def update_task_status(
|
||||
"description": task.description,
|
||||
"task_type": task.task_type,
|
||||
"status": task.status,
|
||||
"department": task.department,
|
||||
"start_date": task.start_date,
|
||||
"deadline": task.deadline,
|
||||
"project_id": task.project_id,
|
||||
@@ -1024,13 +1029,13 @@ async def assign_task(
|
||||
|
||||
# Check if user's department role matches task type (optional validation)
|
||||
task_to_department_mapping = {
|
||||
"layout": DepartmentRole.LAYOUT,
|
||||
"animation": DepartmentRole.ANIMATION,
|
||||
"lighting": DepartmentRole.LIGHTING,
|
||||
"compositing": DepartmentRole.COMPOSITE,
|
||||
"modeling": DepartmentRole.MODELING,
|
||||
"rigging": DepartmentRole.RIGGING,
|
||||
"surfacing": DepartmentRole.SURFACING,
|
||||
"layout": "layout",
|
||||
"animation": "animation",
|
||||
"lighting": "lighting",
|
||||
"compositing": "composite",
|
||||
"modeling": "modeling",
|
||||
"rigging": "rigging",
|
||||
"surfacing": "surfacing",
|
||||
"simulation": None # Simulation can be handled by multiple departments
|
||||
}
|
||||
|
||||
@@ -1064,6 +1069,7 @@ async def assign_task(
|
||||
"description": task.description,
|
||||
"task_type": task.task_type,
|
||||
"status": task.status,
|
||||
"department": task.department,
|
||||
"start_date": task.start_date,
|
||||
"deadline": task.deadline,
|
||||
"project_id": task.project_id,
|
||||
|
||||
Reference in New Issue
Block a user