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.
 
 
 
 
 
 

32 lines
1.3 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]:
if event.url != translit_with_separator(event.url):
object_ids.append(event.pk)
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)