Files
TimeTracker/app/models/__init__.py
T
Dries Peeters 91127bf188 feat: smart in-app notifications, value dashboard stats, and search scope helpers
Smart notifications (opt-in under user settings): NotificationService builds candidates from the user's local day and active timers; GET /api/notifications and POST /api/notifications/dismiss; migration 150 adds user columns and user_smart_notification_dismissals. /api/summary/today uses the same local-day totals. Client polls from smart-notifications.js; toastManager.show gains onDismiss for server dismiss sync. Config and env.example document SMART_NOTIFY_* variables.

Value dashboard: StatsService with Redis-backed caching, GET /api/stats/value-dashboard, dashboard template and dashboard-enhancements polling alongside existing widgets.

API v1 token search now uses apply_project_scope and apply_client_scope on queries; scope_filter adds apply_project_scope; tests extended for the new helper.
2026-04-15 12:15:23 +02:00

230 lines
7.2 KiB
Python

from .activity import Activity
from .api_idempotency_key import ApiIdempotencyKey
from .api_token import ApiToken
from .audit_log import AuditLog
from .budget_alert import BudgetAlert
from .calendar_event import CalendarEvent
from .calendar_integration import CalendarIntegration, CalendarSyncEvent
from .client import Client
from .client_attachment import ClientAttachment
from .client_note import ClientNote
from .client_notification import ClientNotification, ClientNotificationPreferences, NotificationType
from .client_portal_customization import ClientPortalCustomization
from .client_portal_dashboard_preference import (
ClientPortalDashboardPreference,
DEFAULT_WIDGET_ORDER,
VALID_WIDGET_IDS,
)
from .client_prepaid_consumption import ClientPrepaidConsumption
from .client_time_approval import ClientApprovalPolicy, ClientApprovalStatus, ClientTimeApproval
from .comment import Comment
from .comment_attachment import CommentAttachment
from .contact import Contact
from .contact_communication import ContactCommunication
from .currency import Currency, ExchangeRate
from .custom_field_definition import CustomFieldDefinition
from .custom_report import CustomReportConfig
from .deal import Deal
from .deal_activity import DealActivity
from .donation_interaction import DonationInteraction
from .expense import Expense
from .expense_category import ExpenseCategory
from .expense_gps import MileageTrack
from .extra_good import ExtraGood
from .focus_session import FocusSession
from .gamification import Badge, Leaderboard, LeaderboardEntry, UserBadge
from .import_export import DataExport, DataImport
from .integration import Integration, IntegrationCredential, IntegrationEvent
from .integration_external_event_link import IntegrationExternalEventLink
from .invoice import Invoice, InvoiceItem
from .invoice_approval import InvoiceApproval
from .invoice_email import InvoiceEmail
from .invoice_image import InvoiceImage
from .invoice_pdf_template import InvoicePDFTemplate
from .invoice_peppol import InvoicePeppolTransmission
from .invoice_template import InvoiceTemplate
from .issue import Issue
from .kanban_column import KanbanColumn
from .lead import Lead
from .lead_activity import LeadActivity
from .link_template import LinkTemplate
from .mileage import Mileage
from .payment_gateway import PaymentGateway, PaymentTransaction
from .payments import CreditNote, InvoiceReminderSchedule, Payment
from .per_diem import PerDiem, PerDiemRate
from .permission import Permission, Role
from .project import Project
from .project_attachment import ProjectAttachment
from .project_cost import ProjectCost
from .project_stock_allocation import ProjectStockAllocation
from .project_template import ProjectTemplate
from .purchase_order import PurchaseOrder, PurchaseOrderItem
from .push_subscription import PushSubscription
from .quote import Quote, QuoteItem, QuotePDFTemplate
from .quote_attachment import QuoteAttachment
from .quote_image import QuoteImage
from .quote_template import QuoteTemplate
from .quote_version import QuoteVersion
from .rate_override import RateOverride
from .recurring_block import RecurringBlock
from .recurring_invoice import RecurringInvoice
from .recurring_task import RecurringTask
from .reporting import ReportEmailSchedule, SavedReportView
from .salesman_email_mapping import SalesmanEmailMapping
from .saved_filter import SavedFilter
from .settings import Settings
from .stock_item import StockItem
from .stock_lot import StockLot, StockLotAllocation
from .stock_movement import StockMovement
from .stock_reservation import StockReservation
from .supplier import Supplier
from .supplier_stock_item import SupplierStockItem
from .task import Task
from .task_activity import TaskActivity
from .tax_rule import TaxRule
from .team_chat import ChatChannel, ChatChannelMember, ChatMessage, ChatReadReceipt
from .time_entry import TimeEntry
from .time_entry_approval import ApprovalPolicy, ApprovalStatus, TimeEntryApproval
from .time_entry_template import TimeEntryTemplate
from .time_off import CompanyHoliday, LeaveType, TimeOffRequest, TimeOffRequestStatus
from .timesheet_period import TimesheetPeriod, TimesheetPeriodStatus
from .timesheet_policy import TimesheetPolicy
from .user import User
from .user_smart_notification_dismissal import UserSmartNotificationDismissal
from .user_client import UserClient
from .user_favorite_project import UserFavoriteProject
from .warehouse import Warehouse
from .warehouse_stock import WarehouseStock
from .webhook import Webhook, WebhookDelivery
from .weekly_time_goal import WeeklyTimeGoal
from .workflow import WorkflowExecution, WorkflowRule
__all__ = [
"User",
"UserSmartNotificationDismissal",
"Project",
"TimeEntry",
"Task",
"Settings",
"Invoice",
"InvoiceItem",
"Client",
"TaskActivity",
"Comment",
"FocusSession",
"RecurringBlock",
"RateOverride",
"SavedFilter",
"ProjectCost",
"InvoiceTemplate",
"Currency",
"ExchangeRate",
"TaxRule",
"Payment",
"CreditNote",
"InvoiceReminderSchedule",
"SavedReportView",
"ReportEmailSchedule",
"KanbanColumn",
"TimeEntryTemplate",
"Activity",
"UserFavoriteProject",
"UserClient",
"ClientNote",
"WeeklyTimeGoal",
"Expense",
"Permission",
"Role",
"ApiIdempotencyKey",
"ApiToken",
"CalendarEvent",
"BudgetAlert",
"DataImport",
"DataExport",
"InvoicePDFTemplate",
"ClientPrepaidConsumption",
"AuditLog",
"RecurringInvoice",
"InvoiceEmail",
"InvoicePeppolTransmission",
"Webhook",
"WebhookDelivery",
"Quote",
"QuoteItem",
"QuotePDFTemplate",
"QuoteAttachment",
"ProjectAttachment",
"ClientAttachment",
"CommentAttachment",
"InvoiceImage",
"QuoteImage",
"QuoteTemplate",
"QuoteVersion",
"Warehouse",
"StockItem",
"WarehouseStock",
"StockMovement",
"StockReservation",
"StockLot",
"StockLotAllocation",
"ProjectStockAllocation",
"Supplier",
"SupplierStockItem",
"PurchaseOrder",
"PurchaseOrderItem",
"Contact",
"ContactCommunication",
"Deal",
"DealActivity",
"Lead",
"LeadActivity",
"ProjectTemplate",
"InvoiceApproval",
"PaymentGateway",
"PaymentTransaction",
"CalendarIntegration",
"CalendarSyncEvent",
"Integration",
"IntegrationCredential",
"IntegrationEvent",
"IntegrationExternalEventLink",
"WorkflowRule",
"WorkflowExecution",
"TimeEntryApproval",
"ApprovalPolicy",
"ApprovalStatus",
"TimesheetPeriod",
"TimesheetPeriodStatus",
"TimesheetPolicy",
"LeaveType",
"TimeOffRequest",
"TimeOffRequestStatus",
"CompanyHoliday",
"RecurringTask",
"ClientPortalCustomization",
"ClientPortalDashboardPreference",
"DEFAULT_WIDGET_ORDER",
"VALID_WIDGET_IDS",
"ChatChannel",
"ChatMessage",
"ChatChannelMember",
"ChatReadReceipt",
"ClientTimeApproval",
"ClientApprovalPolicy",
"ClientApprovalStatus",
"CustomReportConfig",
"Badge",
"UserBadge",
"Leaderboard",
"LeaderboardEntry",
"MileageTrack",
"LinkTemplate",
"CustomFieldDefinition",
"SalesmanEmailMapping",
"Issue",
"DonationInteraction",
"ClientNotification",
"ClientNotificationPreferences",
"NotificationType",
]