release: v2.8.4 fix order export safety config

This commit is contained in:
Christian 2026-09-11 15:45:46 +02:00
parent f251bfebc4
commit c23e2f6050
4 changed files with 60 additions and 3 deletions

View File

@ -0,0 +1,13 @@
# BMC Hub v2.8.4
## e-conomic ordreeksport
- Ordremodulet arver nu de globale `ECONOMIC_READ_ONLY` og `ECONOMIC_DRY_RUN`, når de valgfrie `ORDRE_ECONOMIC_*`-indstillinger ikke er defineret.
- Eksplicitte ordreindstillinger har fortsat førsteprioritet.
- Sikker standard bevares: uden eksplicit konfiguration er eksport stadig read-only/dry-run.
## Verifikation
- Regressionstest for både global fallback og eksplicit ordreoverride består.
- Relevante faktura- og internettests består.
- Python-syntaks og diff-kontrol består.

View File

@ -1 +1 @@
2.8.3 2.8.4

View File

@ -20,8 +20,17 @@ class OrdreEconomicExportService:
self.app_secret_token = settings.ECONOMIC_APP_SECRET_TOKEN self.app_secret_token = settings.ECONOMIC_APP_SECRET_TOKEN
self.agreement_grant_token = settings.ECONOMIC_AGREEMENT_GRANT_TOKEN self.agreement_grant_token = settings.ECONOMIC_AGREEMENT_GRANT_TOKEN
self.read_only = settings.ORDRE_ECONOMIC_READ_ONLY configured_fields = getattr(settings, "model_fields_set", set())
self.dry_run = settings.ORDRE_ECONOMIC_DRY_RUN self.read_only = (
settings.ORDRE_ECONOMIC_READ_ONLY
if "ORDRE_ECONOMIC_READ_ONLY" in configured_fields
else settings.ECONOMIC_READ_ONLY
)
self.dry_run = (
settings.ORDRE_ECONOMIC_DRY_RUN
if "ORDRE_ECONOMIC_DRY_RUN" in configured_fields
else settings.ECONOMIC_DRY_RUN
)
self.default_layout = settings.ORDRE_ECONOMIC_LAYOUT self.default_layout = settings.ORDRE_ECONOMIC_LAYOUT
self.default_product = settings.ORDRE_ECONOMIC_PRODUCT self.default_product = settings.ORDRE_ECONOMIC_PRODUCT

View File

@ -0,0 +1,35 @@
def test_order_export_inherits_global_safety_flags_when_order_flags_are_unset(monkeypatch):
from app.modules.orders.backend import economic_export
settings = economic_export.settings
monkeypatch.setattr(settings, "ECONOMIC_READ_ONLY", False)
monkeypatch.setattr(settings, "ECONOMIC_DRY_RUN", False)
monkeypatch.setattr(settings, "ORDRE_ECONOMIC_READ_ONLY", True)
monkeypatch.setattr(settings, "ORDRE_ECONOMIC_DRY_RUN", True)
fields_set = set(settings.model_fields_set)
fields_set.discard("ORDRE_ECONOMIC_READ_ONLY")
fields_set.discard("ORDRE_ECONOMIC_DRY_RUN")
monkeypatch.setattr(settings, "__pydantic_fields_set__", fields_set)
service = economic_export.OrdreEconomicExportService()
assert service.read_only is False
assert service.dry_run is False
def test_order_export_respects_explicit_order_safety_flags(monkeypatch):
from app.modules.orders.backend import economic_export
settings = economic_export.settings
monkeypatch.setattr(settings, "ECONOMIC_READ_ONLY", False)
monkeypatch.setattr(settings, "ECONOMIC_DRY_RUN", False)
monkeypatch.setattr(settings, "ORDRE_ECONOMIC_READ_ONLY", True)
monkeypatch.setattr(settings, "ORDRE_ECONOMIC_DRY_RUN", True)
fields_set = set(settings.model_fields_set)
fields_set.update({"ORDRE_ECONOMIC_READ_ONLY", "ORDRE_ECONOMIC_DRY_RUN"})
monkeypatch.setattr(settings, "__pydantic_fields_set__", fields_set)
service = economic_export.OrdreEconomicExportService()
assert service.read_only is True
assert service.dry_run is True