Use ObjectTypeRegistry for log entry model registry

pull/8067/head
Matt Westcott 2022-02-18 14:52:18 +00:00 zatwierdzone przez Matt Westcott
rodzic 37fe7ae035
commit bd8d48be96
1 zmienionych plików z 4 dodań i 7 usunięć

Wyświetl plik

@ -4,6 +4,7 @@ from asgiref.local import Local
from django.utils.functional import LazyObject
from wagtail.core import hooks
from wagtail.utils.registry import ObjectTypeRegistry
class LogFormatter:
@ -86,7 +87,7 @@ class LogActionRegistry:
self.choices = []
# Tracks which LogEntry model should be used for a given object class
self.log_entry_models_by_type = {}
self.log_entry_models_by_type = ObjectTypeRegistry()
# All distinct log entry models registered with register_model
self.log_entry_models = set()
@ -99,7 +100,7 @@ class LogActionRegistry:
self.has_scanned_for_actions = True
def register_model(self, cls, log_entry_model):
self.log_entry_models_by_type[cls] = log_entry_model
self.log_entry_models_by_type.register(cls, value=log_entry_model)
self.log_entry_models.add(log_entry_model)
def register_action(self, action, *args):
@ -142,11 +143,7 @@ class LogActionRegistry:
def get_log_model_for_model(self, model):
self.scan_for_actions()
for cls in model.__mro__:
log_entry_model = self.log_entry_models_by_type.get(cls)
if log_entry_model:
return log_entry_model
return self.log_entry_models_by_type.get_by_type(model)
def get_log_model_for_instance(self, instance):
if isinstance(instance, LazyObject):