release: v2.8.4 fix order export safety config
This commit is contained in:
parent
f251bfebc4
commit
c23e2f6050
13
MDfile/RELEASE_NOTES_v2.8.4.md
Normal file
13
MDfile/RELEASE_NOTES_v2.8.4.md
Normal 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.
|
||||
@ -20,8 +20,17 @@ class OrdreEconomicExportService:
|
||||
self.app_secret_token = settings.ECONOMIC_APP_SECRET_TOKEN
|
||||
self.agreement_grant_token = settings.ECONOMIC_AGREEMENT_GRANT_TOKEN
|
||||
|
||||
self.read_only = settings.ORDRE_ECONOMIC_READ_ONLY
|
||||
self.dry_run = settings.ORDRE_ECONOMIC_DRY_RUN
|
||||
configured_fields = getattr(settings, "model_fields_set", set())
|
||||
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_product = settings.ORDRE_ECONOMIC_PRODUCT
|
||||
|
||||
|
||||
35
tests/test_order_economic_safety_config.py
Normal file
35
tests/test_order_economic_safety_config.py
Normal 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
|
||||
Loading…
Reference in New Issue
Block a user