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.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
|
||||||
|
|
||||||
|
|||||||
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