From b30187dc162aac25e076212347a78ba4a47bc979 Mon Sep 17 00:00:00 2001 From: Klaus-Uwe Mitterer Date: Wed, 6 Jan 2021 18:39:23 +0100 Subject: [PATCH] Bump version to 0.2 Allow protecting fields --- filtersignals/__init__.py | 10 ++++++++-- setup.cfg | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/filtersignals/__init__.py b/filtersignals/__init__.py index 81ea358..5e008f6 100644 --- a/filtersignals/__init__.py +++ b/filtersignals/__init__.py @@ -133,6 +133,8 @@ class FilterSignal(Signal): if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS: return named + named["_protected"] = named["_protected"] if "_protected" in named.keys() else [] + responses = named receivers = self._live_receivers(sender) @@ -141,7 +143,8 @@ class FilterSignal(Signal): for receiver, _ in receivers: response = receiver(signal=self, sender=sender, **responses) for key, value in response.items(): - responses[key] = value + if not key in responses["_protected"]: + responses[key] = value return responses @@ -172,6 +175,8 @@ class FilterSignal(Signal): if not self.receivers or self.sender_receivers_cache.get(sender) is NO_RECEIVERS: return [] + named["_protected"] = named["_protected"] if "_protected" in named.keys() else [] + # Call each receiver with whatever arguments it can accept. # Return the updated dict responses = named @@ -184,7 +189,8 @@ class FilterSignal(Signal): try: response = receiver(signal=self, sender=sender, **responses) for key, value in response.items(): - responses[key] = value + if not key in responses["_protected"]: + responses[key] = value except Exception as err: responses["_errors"].append((receiver, err)) diff --git a/setup.cfg b/setup.cfg index ed56149..92950e9 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = django-filtersignals -version = 0.1.1 +version = 0.2 description = Prioritized signals for Django projects long_description = file: README.md url = https://kumig.it/kumisystems/django-filtersignals