Files
TimeTracker/BUGFIX_DB_IMPORT.md
Dries Peeters b1973ca49a feat: Add Quick Wins feature set - activity tracking, templates, and user preferences
This commit introduces several high-impact features to improve user experience
and productivity:

New Features:
- Activity Logging: Comprehensive audit trail tracking user actions across the
  system with Activity model, including IP address and user agent tracking
- Time Entry Templates: Reusable templates for frequently logged activities with
  usage tracking and quick-start functionality
- Saved Filters: Save and reuse common search/filter combinations across
  different views (projects, tasks, reports)
- User Preferences: Enhanced user settings including email notifications,
  timezone, date/time formats, week start day, and theme preferences
- Excel Export: Generate formatted Excel exports for time entries and reports
  with styling and proper formatting
- Email Notifications: Complete email system for task assignments, overdue
  invoices, comments, and weekly summaries with HTML templates
- Scheduled Tasks: Background task scheduler for periodic operations

Models Added:
- Activity: Tracks all user actions with detailed context and metadata
- TimeEntryTemplate: Stores reusable time entry configurations
- SavedFilter: Manages user-saved filter configurations

Routes Added:
- user.py: User profile and settings management
- saved_filters.py: CRUD operations for saved filters
- time_entry_templates.py: Template management endpoints

UI Enhancements:
- Bulk actions widget component
- Keyboard shortcuts help modal with advanced shortcuts
- Save filter widget component
- Email notification templates
- User profile and settings pages
- Saved filters management interface
- Time entry templates interface

Database Changes:
- Migration 022: Creates activities and time_entry_templates tables
- Adds user preference columns (notifications, timezone, date/time formats)
- Proper indexes for query optimization

Backend Updates:
- Enhanced keyboard shortcuts system (commands.js, keyboard-shortcuts-advanced.js)
- Updated projects, reports, and tasks routes with activity logging
- Safe database commit utilities integration
- Event tracking for analytics

Dependencies:
- Added openpyxl for Excel generation
- Added Flask-Mail dependencies
- Updated requirements.txt

All new features include proper error handling, activity logging integration,
and maintain existing functionality while adding new capabilities.
2025-10-23 09:05:07 +02:00

2.7 KiB

🐛 Bug Fix: Import Errors in Route Files

Issues

Issue 1: Import Error for 'db'

Error:

ImportError: cannot import name 'db' from 'app.models'

Cause: Two route files were trying to import db from app.models, but db is defined in app/__init__.py, not in the models module.

Issue 2: Missing Module 'db_helpers'

Error:

ModuleNotFoundError: No module named 'app.utils.db_helpers'

Cause: Two route files were trying to import from app.utils.db_helpers, but the module is actually named app.utils.db.


🔧 Fixes Applied

Changed Files (2)

1. app/routes/time_entry_templates.py

Fix 1 - Wrong db import source:

# Before (WRONG)
from app.models import TimeEntryTemplate, Project, Task, db

# After (CORRECT)
from app import db
from app.models import TimeEntryTemplate, Project, Task

Fix 2 - Wrong module name for safe_commit:

# Before (WRONG)
from app.utils.db_helpers import safe_commit

# After (CORRECT)
from app.utils.db import safe_commit

2. app/routes/saved_filters.py

Fix 1 - Wrong db import source:

# Before (WRONG)
from app.models import SavedFilter, db

# After (CORRECT)
from app import db
from app.models import SavedFilter

Fix 2 - Wrong module name for safe_commit:

# Before (WRONG)
from app.utils.db_helpers import safe_commit

# After (CORRECT)
from app.utils.db import safe_commit

Verification

python -m py_compile app/routes/time_entry_templates.py
python -m py_compile app/routes/saved_filters.py

✅ Both files compile successfully

📝 Notes

Correct Import Patterns

Pattern 1: Database Instance (db)

In Flask-SQLAlchemy applications, the db object should always be imported from the main app module:

# ✅ CORRECT
from app import db
from app.models import SomeModel

# ❌ WRONG
from app.models import SomeModel, db

This is because:

  1. db is created in app/__init__.py
  2. Models import db from app to define themselves
  3. Trying to import db from app.models creates a circular dependency issue

Pattern 2: Utility Functions

Always verify the actual module name before importing utilities:

# ✅ CORRECT - Check what exists in app/utils/
from app.utils.db import safe_commit

# ❌ WRONG - Assuming a module name
from app.utils.db_helpers import safe_commit

🚀 Ready to Deploy

The application should now start successfully. Run:

docker-compose restart app

Date: 2025-10-23
Type: Bug Fix
Severity: Critical (prevented startup)
Resolution Time: < 5 minutes
Bugs Fixed: 2 (import errors)
Files Modified: 2 route files