Files
TimeTracker/app/models/__init__.py
Dries Peeters 3b564f83d7 feat: Remove license server and add multi-tenant SaaS infrastructure
BREAKING CHANGE: Removed legacy license server in favor of Stripe billing

Major changes:
- Remove license server system (563 lines removed from license_server.py)
- Add multi-tenant support with organizations and memberships
- Integrate Stripe billing and subscription management
- Enhance authentication with 2FA, password reset, and JWT tokens
- Add provisioning and onboarding flows for new customers
- Implement row-level security (RLS) for data isolation
- Add GDPR compliance features and data retention policies
- Enhance admin dashboard with billing reconciliation and customer management
- Add security scanning tools (Bandit, Gitleaks, GitHub Actions workflow)
- Implement rate limiting and enhanced password policies
- Update all routes to support organization context
- Enhance user model with billing and security fields
- Add promo code system for marketing campaigns
- Update Docker initialization for better database setup

Modified files:
- Core: app.py, app/__init__.py, app/config.py
- Models: Enhanced user model (+175 lines), updated all models for multi-tenancy
- Routes: Enhanced admin routes (+479 lines), updated all routes for org context
- Templates: Updated login, admin dashboard, and settings
- Docker: Enhanced database initialization scripts
- Dependencies: Added stripe, pyotp, pyjwt, and security packages

Deleted files:
- app/utils/license_server.py
- docs/LICENSE_SERVER_*.md (3 files)
- templates/admin/license_status.html
- test_license_server.py

New features:
- Organizations and membership management
- Stripe billing integration with webhook handling
- Enhanced authentication (2FA, password reset, refresh tokens)
- GDPR compliance and data export/deletion
- Onboarding checklist for new customers
- Promo code system
- Security enhancements (rate limiting, password policies)
- Admin tools for customer and billing management

Net change: 46 files changed, 1490 insertions(+), 1968 deletions(-)
2025-10-07 22:06:19 +02:00

34 lines
1.5 KiB
Python

from .user import User
from .organization import Organization
from .membership import Membership
from .project import Project
from .time_entry import TimeEntry
from .task import Task
from .settings import Settings
from .invoice import Invoice, InvoiceItem
from .invoice_template import InvoiceTemplate
from .currency import Currency, ExchangeRate
from .tax_rule import TaxRule
from .payments import Payment, CreditNote, InvoiceReminderSchedule
from .reporting import SavedReportView, ReportEmailSchedule
from .client import Client
from .task_activity import TaskActivity
from .comment import Comment
from .focus_session import FocusSession
from .recurring_block import RecurringBlock
from .rate_override import RateOverride
from .saved_filter import SavedFilter
from .password_reset import PasswordResetToken, EmailVerificationToken
from .refresh_token import RefreshToken
from .subscription_event import SubscriptionEvent
from .onboarding_checklist import OnboardingChecklist
from .promo_code import PromoCode, PromoCodeRedemption
__all__ = [
'User', 'Organization', 'Membership', 'Project', 'TimeEntry', 'Task', 'Settings', 'Invoice', 'InvoiceItem',
'Client', 'TaskActivity', 'Comment', 'FocusSession', 'RecurringBlock', 'RateOverride', 'SavedFilter',
'InvoiceTemplate', 'Currency', 'ExchangeRate', 'TaxRule', 'Payment', 'CreditNote', 'InvoiceReminderSchedule',
'SavedReportView', 'ReportEmailSchedule', 'PasswordResetToken', 'EmailVerificationToken', 'RefreshToken',
'SubscriptionEvent', 'OnboardingChecklist', 'PromoCode', 'PromoCodeRedemption'
]