From 0c7ab77728b868926e437d1f8314a824ca0b530b Mon Sep 17 00:00:00 2001
From: ValueOn AG
Date: Mon, 25 May 2026 15:49:50 +0200
Subject: [PATCH] fixed db poweron reference - not baseclass
---
modules/datamodels/datamodelAiAudit.py | 5 +++--
modules/datamodels/datamodelAudit.py | 3 ++-
modules/datamodels/datamodelBilling.py | 6 +++---
modules/datamodels/datamodelChat.py | 2 +-
modules/datamodels/datamodelMessaging.py | 4 ++--
modules/datamodels/datamodelSubscription.py | 2 +-
.../features/neutralization/datamodelFeatureNeutralizer.py | 4 ++--
modules/features/realEstate/datamodelFeatureRealEstate.py | 6 +++---
.../services/serviceSubscription/stripeBootstrap.py | 4 ++--
9 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/modules/datamodels/datamodelAiAudit.py b/modules/datamodels/datamodelAiAudit.py
index 833a175a..eabe0db6 100644
--- a/modules/datamodels/datamodelAiAudit.py
+++ b/modules/datamodels/datamodelAiAudit.py
@@ -9,14 +9,15 @@ for compliance, audit, and data-protection reporting.
import uuid
from typing import Optional
-from pydantic import BaseModel, Field
+from pydantic import Field
+from modules.datamodels.datamodelBase import PowerOnModel
from modules.shared.i18nRegistry import i18nModel
from modules.shared.timeUtils import getUtcTimestamp
@i18nModel("AI-Audit-Eintrag")
-class AiAuditLogEntry(BaseModel):
+class AiAuditLogEntry(PowerOnModel):
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
description="Primary key",
diff --git a/modules/datamodels/datamodelAudit.py b/modules/datamodels/datamodelAudit.py
index 4d030fd3..51e97dae 100644
--- a/modules/datamodels/datamodelAudit.py
+++ b/modules/datamodels/datamodelAudit.py
@@ -19,6 +19,7 @@ from pydantic import BaseModel, Field
from enum import Enum
import uuid
+from modules.datamodels.datamodelBase import PowerOnModel
from modules.shared.timeUtils import getUtcTimestamp
from modules.shared.i18nRegistry import i18nModel
@@ -83,7 +84,7 @@ class AuditAction(str, Enum):
@i18nModel("Audit-Log-Eintrag")
-class AuditLogEntry(BaseModel):
+class AuditLogEntry(PowerOnModel):
"""
Audit log entry for database storage.
diff --git a/modules/datamodels/datamodelBilling.py b/modules/datamodels/datamodelBilling.py
index d3967f12..78024ce1 100644
--- a/modules/datamodels/datamodelBilling.py
+++ b/modules/datamodels/datamodelBilling.py
@@ -123,7 +123,7 @@ class BillingTransaction(PowerOnModel):
@i18nModel("Abrechnungseinstellungen")
-class BillingSettings(BaseModel):
+class BillingSettings(PowerOnModel):
"""Billing settings per mandate. Only PREPAY_MANDATE model."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
@@ -186,7 +186,7 @@ class BillingSettings(BaseModel):
)
-class StripeWebhookEvent(BaseModel):
+class StripeWebhookEvent(PowerOnModel):
"""Stores processed Stripe webhook event IDs for idempotency."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
@@ -201,7 +201,7 @@ class StripeWebhookEvent(BaseModel):
@i18nModel("Nutzungsstatistik")
-class UsageStatistics(BaseModel):
+class UsageStatistics(PowerOnModel):
"""Aggregated usage statistics for quick retrieval."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
diff --git a/modules/datamodels/datamodelChat.py b/modules/datamodels/datamodelChat.py
index f846b52c..6546f6d9 100644
--- a/modules/datamodels/datamodelChat.py
+++ b/modules/datamodels/datamodelChat.py
@@ -319,7 +319,7 @@ class DocumentExchange(BaseModel):
documents: List[str] = Field(default_factory=list, description="List of document references", json_schema_extra={"label": "Dokumente"})
@i18nModel("Aufgaben-Aktion")
-class ActionItem(BaseModel):
+class ActionItem(PowerOnModel):
id: str = Field(..., description="Action ID", json_schema_extra={"label": "Aktions-ID"})
execMethod: str = Field(..., description="Method to execute", json_schema_extra={"label": "Methode"})
execAction: str = Field(..., description="Action to perform", json_schema_extra={"label": "Aktion"})
diff --git a/modules/datamodels/datamodelMessaging.py b/modules/datamodels/datamodelMessaging.py
index 9fcb9944..904ee526 100644
--- a/modules/datamodels/datamodelMessaging.py
+++ b/modules/datamodels/datamodelMessaging.py
@@ -112,7 +112,7 @@ class MessagingSubscription(PowerOnModel):
@i18nModel("Messaging-Registrierung")
-class MessagingSubscriptionRegistration(BaseModel):
+class MessagingSubscriptionRegistration(PowerOnModel):
"""Data model for user registrations to messaging subscriptions"""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
@@ -203,7 +203,7 @@ class MessagingSubscriptionRegistration(BaseModel):
@i18nModel("Messaging-Zustellung")
-class MessagingDelivery(BaseModel):
+class MessagingDelivery(PowerOnModel):
"""Data model for individual message deliveries"""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
diff --git a/modules/datamodels/datamodelSubscription.py b/modules/datamodels/datamodelSubscription.py
index 4196a959..c8263e37 100644
--- a/modules/datamodels/datamodelSubscription.py
+++ b/modules/datamodels/datamodelSubscription.py
@@ -153,7 +153,7 @@ class SubscriptionPlan(BaseModel):
# ============================================================================
@i18nModel("Stripe-Planpreise")
-class StripePlanPrice(BaseModel):
+class StripePlanPrice(PowerOnModel):
"""Persistierte Zuordnung planKey zu Stripe Product/Price IDs."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
diff --git a/modules/features/neutralization/datamodelFeatureNeutralizer.py b/modules/features/neutralization/datamodelFeatureNeutralizer.py
index d83820fa..9465667c 100644
--- a/modules/features/neutralization/datamodelFeatureNeutralizer.py
+++ b/modules/features/neutralization/datamodelFeatureNeutralizer.py
@@ -93,7 +93,7 @@ class DataNeutraliserConfig(PowerOnModel):
@i18nModel("Neutralisiertes Datenattribut")
-class DataNeutralizerAttributes(BaseModel):
+class DataNeutralizerAttributes(PowerOnModel):
"""Zuordnung Originaltext zu Platzhalter fuer neutralisierte Daten."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
@@ -152,7 +152,7 @@ class DataNeutralizerAttributes(BaseModel):
@i18nModel("Neutralisierungs-Snapshot")
-class DataNeutralizationSnapshot(BaseModel):
+class DataNeutralizationSnapshot(PowerOnModel):
"""Speichert den vollstaendigen neutralisierten Text (mit Platzhaltern) pro Quelle."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
diff --git a/modules/features/realEstate/datamodelFeatureRealEstate.py b/modules/features/realEstate/datamodelFeatureRealEstate.py
index 1cdc2388..8de665de 100644
--- a/modules/features/realEstate/datamodelFeatureRealEstate.py
+++ b/modules/features/realEstate/datamodelFeatureRealEstate.py
@@ -110,7 +110,7 @@ class GeoPolylinie(BaseModel):
@i18nModel("Dokument")
-class Dokument(BaseModel):
+class Dokument(PowerOnModel):
"""Supporting data object for file and URL management with versioning."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
@@ -204,7 +204,7 @@ class Kontext(PowerOnModel):
)
-class Land(BaseModel):
+class Land(PowerOnModel):
"""National level administrative entity."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
@@ -318,7 +318,7 @@ class Kanton(PowerOnModel):
)
-class Gemeinde(BaseModel):
+class Gemeinde(PowerOnModel):
"""Municipal level administrative entity."""
id: str = Field(
default_factory=lambda: str(uuid.uuid4()),
diff --git a/modules/serviceCenter/services/serviceSubscription/stripeBootstrap.py b/modules/serviceCenter/services/serviceSubscription/stripeBootstrap.py
index 9e99ba12..73fbfb02 100644
--- a/modules/serviceCenter/services/serviceSubscription/stripeBootstrap.py
+++ b/modules/serviceCenter/services/serviceSubscription/stripeBootstrap.py
@@ -216,9 +216,9 @@ def _archiveOtherRecurringPrices(
stripe.Price.modify(p.id, active=False)
logger.info("Archived stale Stripe Price %s on product %s", p.id, productId)
except Exception as ex:
- logger.warning("Could not archive price %s: %s", p.id, ex)
+ logger.debug("Could not archive price %s: %s", p.id, ex)
except Exception as e:
- logger.warning("Stale price archive pass failed for product %s: %s", productId, e)
+ logger.debug("Stale price archive pass skipped for product %s: %s", productId, e)
def _validateStripeIdsExist(stripe, mapping: StripePlanPrice) -> bool: