count final changes, not entire change history
This commit is contained in:
parent
d0c3ba47d6
commit
53d0d1d44d
1 changed files with 23 additions and 8 deletions
|
@ -8,11 +8,11 @@ from django.db import models, transaction
|
|||
from django.db.models import Q
|
||||
from django.db.models.fields.related_descriptors import ForwardManyToOneDescriptor, ManyToManyDescriptor
|
||||
from django.urls import reverse
|
||||
from django.utils.functional import cached_property
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
from django.utils.translation import ungettext_lazy
|
||||
|
||||
from c3nav.editor.wrappers import ModelInstanceWrapper, ModelWrapper, is_created_pk
|
||||
from c3nav.mapdata.models.locations import LocationRedirect
|
||||
|
||||
|
||||
class ChangeSet(models.Model):
|
||||
|
@ -213,12 +213,27 @@ class ChangeSet(models.Model):
|
|||
return ''
|
||||
return reverse('editor.changesets.detail', kwargs={'pk': self.pk})
|
||||
|
||||
@cached_property
|
||||
def undeleted_changes_count(self):
|
||||
if self.pk is None:
|
||||
return 0
|
||||
return len([True for change in self.changes.all() if ((change.model_name != 'LocationRedirect' or
|
||||
change.action != 'update'))])
|
||||
@property
|
||||
def changes_count(self):
|
||||
result = 0
|
||||
|
||||
for model, objects in self.created_objects.items():
|
||||
result += len(objects)
|
||||
if model == LocationRedirect:
|
||||
continue
|
||||
result += sum(len(values) for values in objects.values())
|
||||
|
||||
for objects in self.updated_existing.values():
|
||||
result += sum(len(values) for values in objects.values())
|
||||
|
||||
result += sum(len(objs) for objs in self.deleted_existing.values())
|
||||
|
||||
for m2m in self.m2m_added, self.m2m_removed:
|
||||
for objects in m2m.values():
|
||||
for obj in objects.values():
|
||||
result += sum(len(values) for values in obj.values())
|
||||
|
||||
return result
|
||||
|
||||
@property
|
||||
def title(self):
|
||||
|
@ -230,7 +245,7 @@ class ChangeSet(models.Model):
|
|||
def count_display(self):
|
||||
if self.pk is None:
|
||||
return _('No changes')
|
||||
return ungettext_lazy('%(num)d change', '%(num)d changes', 'num') % {'num': self.undeleted_changes_count}
|
||||
return ungettext_lazy('%(num)d change', '%(num)d changes', 'num') % {'num': self.changes_count}
|
||||
|
||||
def wrap(self, obj, author=None):
|
||||
self.parse_changes()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue