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
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)
|
|
|