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.
87 lines
3.5 KiB
87 lines
3.5 KiB
# -*- coding: utf-8 -*-
|
|
from datetime import timedelta
|
|
from optparse import make_option
|
|
from random import randint
|
|
|
|
from city.models import City
|
|
from conference.models import Conference
|
|
from country.models import Country
|
|
from django.contrib.contenttypes.models import ContentType
|
|
from django.core.cache import cache
|
|
from django.core.management.base import BaseCommand
|
|
from django.db.models.fields import related
|
|
from django.utils import timezone
|
|
from exposition.models import Exposition
|
|
from stats_collector.models import ObjectStats, SectionStats
|
|
from stats_collector.utils import unique_items_iterator
|
|
from theme.models import Tag, Theme
|
|
|
|
today = timezone.now().date()
|
|
|
|
|
|
class Command(BaseCommand):
|
|
def handle(self, *args, **options):
|
|
self.create_section_test_data()
|
|
self.create_objects_test_data()
|
|
|
|
def create_section_test_data(self):
|
|
total_objects = [Conference.objects.all()[:30], Exposition.objects.all()[:30]]
|
|
|
|
bulk_objects = []
|
|
for day in xrange(92):
|
|
date = today - timedelta(days=day)
|
|
for model, field in [(City, 'city'), (Country, 'country'), (Theme, 'theme'), (Tag, 'tag')]:
|
|
for _objects in total_objects:
|
|
obj = _objects[randint(0, 29)]
|
|
field_value = getattr(obj, field)
|
|
if isinstance(obj._meta.get_field_by_name(field)[0], related.ManyToManyField):
|
|
_field_value = field_value.all()
|
|
if len(_field_value) == 0:
|
|
continue
|
|
field_value = _field_value[randint(0, len(_field_value) - 1)]
|
|
bulk_objects.append(
|
|
SectionStats(
|
|
section=obj.__class__.__name__.lower()[:4],
|
|
kind=field,
|
|
content_object=field_value,
|
|
created_at=date,
|
|
value=randint(11, 898),
|
|
)
|
|
)
|
|
bulk_objects.append(
|
|
SectionStats(
|
|
section=obj.__class__.__name__.lower()[:4],
|
|
kind=field,
|
|
created_at=date,
|
|
value=randint(11, 898),
|
|
)
|
|
)
|
|
bulk_objects.append(
|
|
SectionStats(
|
|
section=obj.__class__.__name__.lower()[:4],
|
|
created_at=date,
|
|
value=randint(11, 898),
|
|
)
|
|
)
|
|
SectionStats.objects.bulk_create(bulk_objects)
|
|
|
|
def create_objects_test_data(self):
|
|
total_objects = {
|
|
'conference': Conference.objects.all()[:30],
|
|
'exposition': Exposition.objects.all()[:30]
|
|
}
|
|
|
|
bulk_objects = []
|
|
for day in xrange(92):
|
|
date = today - timedelta(days=day)
|
|
# for model, field in [(City, 'city'), (Country, 'country'), (Theme, 'theme'), (Tag, 'tag')]:
|
|
for attr, _objects in total_objects.items():
|
|
for obj in _objects:
|
|
bulk_objects.append(
|
|
ObjectStats(
|
|
created_at=date,
|
|
value=randint(11, 898),
|
|
**{attr: obj}
|
|
)
|
|
)
|
|
ObjectStats.objects.bulk_create(bulk_objects)
|
|
|