Opened 13 years ago
Closed 13 years ago
#17895 closed Bug (fixed)
override_settings doesn't send the setting_changed signal when restoring the original value
Reported by: | Aymeric Augustin | Owned by: | nobody |
---|---|---|---|
Component: | Testing framework | Version: | dev |
Severity: | Release blocker | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Django 1.4 introduces the override_settings
context manager / decorator. When a setting is overridden, it fires the setting_changed
signal. This signal allows to clean up or reset state that depends on a given setting, when that setting is changed.
However, in the current implementation, the signal isn't fired when the original value of the setting is restored.
I think setting_changed
would be easier to use if it's fired whenever the value of a setting is "changed" in a broad sense, that is "overridden" or "reset".
While discussing this on IRC, it was suggested to add an extra argument, like state="pre" / "post"
, to distinguish between the two phases.
I'm marking this ticket as a release blocker because it would significantly change the behavior of setting_changed
; we must make a decision before 1.4.
It's also a prerequisite for 17882-second-take.patch
on #17882.
Patch w/ tests and docs attached.
Attachments (2)
Change History (4)
by , 13 years ago
Attachment: | 17895.diff added |
---|
comment:1 by , 13 years ago
Triage Stage: | Unreviewed → Accepted |
---|
by , 13 years ago
Attachment: | 17895-more-docs-improved-api.diff added |
---|
I'm not super-convinced of the state argument. Would be nice to have a use case for it, even hypothetical.