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 import Q
|
||||||
from django.db.models.fields.related_descriptors import ForwardManyToOneDescriptor, ManyToManyDescriptor
|
from django.db.models.fields.related_descriptors import ForwardManyToOneDescriptor, ManyToManyDescriptor
|
||||||
from django.urls import reverse
|
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 ugettext_lazy as _
|
||||||
from django.utils.translation import ungettext_lazy
|
from django.utils.translation import ungettext_lazy
|
||||||
|
|
||||||
from c3nav.editor.wrappers import ModelInstanceWrapper, ModelWrapper, is_created_pk
|
from c3nav.editor.wrappers import ModelInstanceWrapper, ModelWrapper, is_created_pk
|
||||||
|
from c3nav.mapdata.models.locations import LocationRedirect
|
||||||
|
|
||||||
|
|
||||||
class ChangeSet(models.Model):
|
class ChangeSet(models.Model):
|
||||||
|
@ -213,12 +213,27 @@ class ChangeSet(models.Model):
|
||||||
return ''
|
return ''
|
||||||
return reverse('editor.changesets.detail', kwargs={'pk': self.pk})
|
return reverse('editor.changesets.detail', kwargs={'pk': self.pk})
|
||||||
|
|
||||||
@cached_property
|
@property
|
||||||
def undeleted_changes_count(self):
|
def changes_count(self):
|
||||||
if self.pk is None:
|
result = 0
|
||||||
return 0
|
|
||||||
return len([True for change in self.changes.all() if ((change.model_name != 'LocationRedirect' or
|
for model, objects in self.created_objects.items():
|
||||||
change.action != 'update'))])
|
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
|
@property
|
||||||
def title(self):
|
def title(self):
|
||||||
|
@ -230,7 +245,7 @@ class ChangeSet(models.Model):
|
||||||
def count_display(self):
|
def count_display(self):
|
||||||
if self.pk is None:
|
if self.pk is None:
|
||||||
return _('No changes')
|
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):
|
def wrap(self, obj, author=None):
|
||||||
self.parse_changes()
|
self.parse_changes()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue