always include_deleted_created because the cache does the performance
This commit is contained in:
parent
369a1b558b
commit
45765ef135
3 changed files with 4 additions and 10 deletions
|
@ -183,5 +183,5 @@ class ChangeSetViewSet(ReadOnlyModelViewSet):
|
||||||
@detail_route(methods=['get'])
|
@detail_route(methods=['get'])
|
||||||
def changes(self, request, *args, **kwargs):
|
def changes(self, request, *args, **kwargs):
|
||||||
changeset = self.get_object()
|
changeset = self.get_object()
|
||||||
changeset.fill_changes_cache(include_deleted_created=True)
|
changeset.fill_changes_cache()
|
||||||
return Response([obj.serialize() for obj in changeset.iter_changed_objects()])
|
return Response([obj.serialize() for obj in changeset.iter_changed_objects()])
|
||||||
|
|
|
@ -133,7 +133,7 @@ class ChangeSet(models.Model):
|
||||||
def relevant_changed_objects(self):
|
def relevant_changed_objects(self):
|
||||||
return self.changed_objects_set.exclude(existing_object_pk__isnull=True, deleted=True)
|
return self.changed_objects_set.exclude(existing_object_pk__isnull=True, deleted=True)
|
||||||
|
|
||||||
def fill_changes_cache(self, include_deleted_created=False):
|
def fill_changes_cache(self):
|
||||||
"""
|
"""
|
||||||
Get all changed objects and fill this ChangeSet's changes cache.
|
Get all changed objects and fill this ChangeSet's changes cache.
|
||||||
Only executable once, if something is changed later the cache will be automatically updated.
|
Only executable once, if something is changed later the cache will be automatically updated.
|
||||||
|
@ -151,12 +151,6 @@ class ChangeSet(models.Model):
|
||||||
|
|
||||||
cache_key = self.cache_key_by_changes + ':cache'
|
cache_key = self.cache_key_by_changes + ':cache'
|
||||||
|
|
||||||
if include_deleted_created:
|
|
||||||
cache_key += '_with_deleted'
|
|
||||||
qs = self.changed_objects_set.all()
|
|
||||||
else:
|
|
||||||
qs = self.relevant_changed_objects()
|
|
||||||
|
|
||||||
cached_cache = cache.get(cache_key)
|
cached_cache = cache.get(cache_key)
|
||||||
if cached_cache is not None:
|
if cached_cache is not None:
|
||||||
(self.changed_objects, self.created_objects, self.updated_existing,
|
(self.changed_objects, self.created_objects, self.updated_existing,
|
||||||
|
@ -164,7 +158,7 @@ class ChangeSet(models.Model):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
self.changed_objects = {}
|
self.changed_objects = {}
|
||||||
for change in qs:
|
for change in self.changed_objects_set.all():
|
||||||
change.update_changeset_cache()
|
change.update_changeset_cache()
|
||||||
|
|
||||||
if self.state != 'applied':
|
if self.state != 'applied':
|
||||||
|
|
|
@ -160,7 +160,7 @@ def changeset_detail(request, pk):
|
||||||
'obj_title': changeset.title,
|
'obj_title': changeset.title,
|
||||||
})
|
})
|
||||||
|
|
||||||
changeset.fill_changes_cache(include_deleted_created=True)
|
changeset.fill_changes_cache()
|
||||||
|
|
||||||
ctx = {
|
ctx = {
|
||||||
'changeset': changeset,
|
'changeset': changeset,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue