You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

37 lines
1.5 KiB

# -*- coding: utf-8 -*-
from django.core.management.base import NoArgsCommand
from conference.models import Conference
from exposition.models import Exposition
from functions.form_check import translit_with_separator
class Command(NoArgsCommand):
objects_per_cycle = 1000
def handle_noargs(self, **options):
for model in [Conference, Exposition]:
print('checking {name}'.format(name=model.__name__))
self.run_objects(model)
print('Done.')
def run_objects(self, model):
object_ids = []
qs = model.objects.language('ru').all().order_by('created')
objects_max = qs.count()
print('Total objects {total}'.format(total=objects_max))
slice_offset = 0
while slice_offset <= objects_max:
print('runnig for {start}:{end}'.format(start=slice_offset, end=slice_offset + self.objects_per_cycle))
for event in qs[slice_offset:slice_offset + self.objects_per_cycle]:
name = event.name.strip().lower()
if (name and event.url != translit_with_separator(name)) or not name:
object_ids.append(event.pk)
elif name and event.bad_url:
event.bad_url = False
event.save()
slice_offset = slice_offset + self.objects_per_cycle
print('objects found {count}'.format(count=len(object_ids)))
if object_ids:
model.objects.filter(pk__in=object_ids).update(bad_url=True)