6347 review changes

This commit is contained in:
Arthur 2023-07-17 13:55:50 +07:00
parent 453487c353
commit 1078b8f0cd
2 changed files with 7 additions and 12 deletions

View File

@ -7,7 +7,7 @@ from .mixins import TrackingModelMixin
counters = {} counters = {}
class Counter(object): class Counter:
""" """
Used with CounterCacheField to add signals to track related model counts. Used with CounterCacheField to add signals to track related model counts.
""" """

View File

@ -1,15 +1,13 @@
from django.db.models.query_utils import DeferredAttribute from django.db.models.query_utils import DeferredAttribute
class Tracker(object): class Tracker:
def __init__(self, instance): def __init__(self, instance):
self.instance = instance self.instance = instance
self.newly_created = False
self.changed = {} self.changed = {}
self.tracked_fields = self.instance.change_tracking_fields
class TrackingModelMixin(object): class TrackingModelMixin:
def __init__(self, *args, **kwargs): def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs) super().__init__(*args, **kwargs)
@ -18,17 +16,14 @@ class TrackingModelMixin(object):
@property @property
def tracker(self): def tracker(self):
if hasattr(self._state, "_tracker"): if not hasattr(self._state, "_tracker"):
tracker = self._state._tracker self._state._tracker = Tracker(self)
else: return self._state._tracker
tracker = self._state._tracker = Tracker(self)
return tracker
def save(self, *args, **kwargs): def save(self, *args, **kwargs):
if not self.change_tracking_fields: if not self.change_tracking_fields:
return super().save(*args, **kwargs) return super().save(*args, **kwargs)
self.tracker.newly_created = self._state.adding
super().save(*args, **kwargs) super().save(*args, **kwargs)
if self.tracker.changed: if self.tracker.changed:
if update_fields := kwargs.get('update_fields', None): if update_fields := kwargs.get('update_fields', None):
@ -39,7 +34,7 @@ class TrackingModelMixin(object):
def __setattr__(self, name, value): def __setattr__(self, name, value):
if hasattr(self, "_initialized") and self.change_tracking_fields: if hasattr(self, "_initialized") and self.change_tracking_fields:
if name in self.tracker.tracked_fields: if name in self.tracker.instance.change_tracking_fields:
if name not in self.tracker.changed: if name not in self.tracker.changed:
if name in self.__dict__: if name in self.__dict__:
old_value = getattr(self, name) old_value = getattr(self, name)