From 02a6e2190fe36d1fd12d678d239f8764a3d0c78a Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Tue, 7 Jul 2020 17:09:41 -0400 Subject: [PATCH] Monkey-patch cacheops' _pre_save() receiver to tweak sender's QuerySet --- netbox/netbox/__init__.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/netbox/netbox/__init__.py b/netbox/netbox/__init__.py index e69de29bb..034c9c80e 100644 --- a/netbox/netbox/__init__.py +++ b/netbox/netbox/__init__.py @@ -0,0 +1,17 @@ +from cacheops.query import ManagerMixin, no_invalidation, _old_objs + + +# Monkey-patch cacheops' _pre_save() signal receiver. This is needed to mark the sending model's QuerySet as +# unrestricted. +def _pre_save(self, sender, instance, using, **kwargs): + if not (instance.pk is None or instance._state.adding or no_invalidation.active): + try: + qs = sender.objects.using(using) + if hasattr(qs, 'restrict'): + qs = qs.unrestricted() + _old_objs.__dict__[sender, instance.pk] = qs.get(pk=instance.pk) + except sender.DoesNotExist: + pass + + +ManagerMixin._pre_save = _pre_save