mirror of
https://github.com/DRYTRIX/TimeTracker.git
synced 2026-01-06 19:51:25 -06:00
Implement per-project Kanban column workflows, allowing different projects to have their own custom kanban board columns and task states. Changes: - Add project_id field to KanbanColumn model (nullable, NULL = global columns) - Create Alembic migration 043 to add project_id column with foreign key - Update unique constraint from (key) to (key, project_id) to allow same keys across different projects - Update all KanbanColumn model methods to filter by project_id: - get_active_columns(project_id=None) - get_all_columns(project_id=None) - get_column_by_key(key, project_id=None) - get_valid_status_keys(project_id=None) - initialize_default_columns(project_id=None) - reorder_columns(column_ids, project_id=None) - Update kanban routes to support project filtering: - /kanban/columns accepts project_id query parameter - /kanban/columns/create supports project selection - All CRUD operations redirect to project-filtered view when applicable - API endpoints support project_id parameter - Update project view route to use project-specific columns - Update task routes to validate status against project-specific columns - Add fallback logic: projects without custom columns use global columns - Update UI templates: - Add project filter dropdown in column management page - Add project selection in create column form - Show project info in edit column page - Update reorder API calls to include project_id Database Migration: - Migration 043 adds project_id column (nullable) - Existing columns remain global (project_id = NULL) - New unique constraint on (key, project_id) - Foreign key constraint with CASCADE delete Backward Compatibility: - Existing global columns continue to work - Projects without custom columns fall back to global columns - Task status validation uses project-specific columns when available Impact: High - Enables multi-project teams to have different workflows per project while maintaining backward compatibility with existing global column setup.
20 lines
468 B
Python
20 lines
468 B
Python
"""
|
|
Setup configuration for TimeTracker application.
|
|
This allows the app to be installed as a package for testing.
|
|
"""
|
|
|
|
from setuptools import setup, find_packages
|
|
|
|
setup(
|
|
name='timetracker',
|
|
version='3.9.0',
|
|
packages=find_packages(),
|
|
include_package_data=True,
|
|
install_requires=[
|
|
# Core requirements are in requirements.txt
|
|
# This file is mainly for making the app importable during testing
|
|
],
|
|
python_requires='>=3.11',
|
|
)
|
|
|