refactored a little bit
This commit is contained in:
parent
68b8aa427c
commit
5a6af6a2a7
|
|
@ -12,7 +12,7 @@ class Migration(migrations.Migration):
|
||||||
operations = [
|
operations = [
|
||||||
migrations.AddField(
|
migrations.AddField(
|
||||||
model_name='guide',
|
model_name='guide',
|
||||||
name='count_objects_during_init',
|
name='count_related_objects',
|
||||||
field=models.PositiveIntegerField(default=0, help_text='* after rebuild guide, refresh count of related guide elements', verbose_name='count of related guide elements during initialization'),
|
field=models.PositiveIntegerField(default=0, help_text='* after rebuild guide, refresh count of related guide elements', verbose_name='count of related guide elements during initialization'),
|
||||||
),
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@ class Guide(ProjectBaseMixin, CollectionNameMixin, CollectionDateMixin):
|
||||||
verbose_name=_('site settings'))
|
verbose_name=_('site settings'))
|
||||||
state = models.PositiveSmallIntegerField(default=WAITING, choices=STATE_CHOICES,
|
state = models.PositiveSmallIntegerField(default=WAITING, choices=STATE_CHOICES,
|
||||||
verbose_name=_('state'))
|
verbose_name=_('state'))
|
||||||
count_objects_during_init = models.PositiveIntegerField(
|
count_related_objects = models.PositiveIntegerField(
|
||||||
default=0,
|
default=0,
|
||||||
help_text=_('* after rebuild guide, refresh count of related guide elements'),
|
help_text=_('* after rebuild guide, refresh count of related guide elements'),
|
||||||
verbose_name=_('count of related guide elements during initialization'))
|
verbose_name=_('count of related guide elements during initialization'))
|
||||||
|
|
@ -328,6 +328,16 @@ class Guide(ProjectBaseMixin, CollectionNameMixin, CollectionDateMixin):
|
||||||
# parent_id__isnull=True).count()
|
# parent_id__isnull=True).count()
|
||||||
# return counter
|
# return counter
|
||||||
|
|
||||||
|
def update_count_related_objects(self, nodes: set = ('EstablishmentNode', 'WineNode')):
|
||||||
|
"""Update count of related guide element objects."""
|
||||||
|
descendants = GuideElement.objects.get_root_node(self) \
|
||||||
|
.get_descendants()
|
||||||
|
if descendants:
|
||||||
|
updated_count = descendants.filter(
|
||||||
|
guide_element_type__name__in=nodes).count()
|
||||||
|
self.count_related_objects = updated_count
|
||||||
|
self.save()
|
||||||
|
|
||||||
|
|
||||||
class AdvertorialQuerySet(models.QuerySet):
|
class AdvertorialQuerySet(models.QuerySet):
|
||||||
"""QuerySet for model Advertorial."""
|
"""QuerySet for model Advertorial."""
|
||||||
|
|
|
||||||
|
|
@ -254,12 +254,12 @@ def transfer_guide_elements_bulk():
|
||||||
|
|
||||||
for guide in tqdm(Guide.objects.all(),
|
for guide in tqdm(Guide.objects.all(),
|
||||||
desc='update count_of_initial_objects field values'):
|
desc='update count_of_initial_objects field values'):
|
||||||
count_of_initial_objects = GuideElement.objects.get_root_node(guide) \
|
descendants = GuideElement.objects.get_root_node(guide).get_descendants()
|
||||||
.get_descendants() \
|
if descendants:
|
||||||
.filter(guide_element_type__name__in=['EstablishmentNode', 'WineNode']) \
|
count_of_initial_objects = descendants.filter(
|
||||||
.count()
|
guide_element_type__name__in=['EstablishmentNode', 'WineNode']).count()
|
||||||
guide.count_objects_during_init = count_of_initial_objects
|
guide.count_related_objects = count_of_initial_objects
|
||||||
objects_to_update.append(guide)
|
objects_to_update.append(guide)
|
||||||
|
|
||||||
# update count_of_initial_objects field values
|
# update count_of_initial_objects field values
|
||||||
Guide.objects.bulk_update(objects_to_update, ['count_objects_during_init', ])
|
Guide.objects.bulk_update(objects_to_update, ['count_objects_during_init', ])
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user