from datetime import datetime, timedelta import numpy as np from django.core.exceptions import ValidationError from django.core.management import BaseCommand from web.models import Activity, ActivityLog, User class Command(BaseCommand): def handle(self, *args, **options): User.objects.all().delete() Activity.objects.all().delete() ActivityLog.objects.all().delete() activity_sleeping = Activity(type='Сон') activity_sleeping.save() activity_eating = Activity(type='Еда') activity_eating.save() activity_studying = Activity(type='Учёба') activity_studying.save() activity_working = Activity(type='Работа') activity_working.save() activity_logistics = Activity(type='Транспорт') activity_logistics.save() activity_pastime = Activity(type='Досуг') activity_pastime.save() user1 = User(name='Вася', email='vasya@abra.me') user1.save() user2 = User(name='Петя', email='petya@abra.me') user2.save() start_date = datetime(2018, 12, 1, 0, 0, 0) days = (datetime.utcnow() - start_date) // timedelta(days=1) - 1 for i in range(days): day_start = start_date + timedelta(days=1) * i def add_activity(user, activity, start_offset, end_offset, variance): activity_log = ActivityLog( user=user, activity=activity, start_time=day_start + start_offset + variance * abs(np.random.normal()), end_time=day_start + end_offset - variance * abs(np.random.normal()), ) try: activity_log.clean() except ValidationError as e: print(e.message) return activity_log.save() print(activity_log) add_activity(user1, activity_sleeping, timedelta(hours=-24 + 22), timedelta(hours=8), timedelta(hours=2)) add_activity(user1, activity_eating, timedelta(hours=8), timedelta(hours=8.5), timedelta(minutes=5)) add_activity(user1, activity_logistics, timedelta(hours=8.5), timedelta(hours=9.5), timedelta(minutes=10)) add_activity(user1, activity_working, timedelta(hours=9.5), timedelta(hours=14), timedelta(minutes=30)) add_activity(user1, activity_eating, timedelta(hours=14), timedelta(hours=14.5), timedelta(minutes=5)) add_activity(user1, activity_working, timedelta(hours=14.5), timedelta(hours=18), timedelta(minutes=30)) add_activity(user1, activity_logistics, timedelta(hours=18), timedelta(hours=19), timedelta(minutes=10)) add_activity(user1, activity_eating, timedelta(hours=20), timedelta(hours=20.5), timedelta(minutes=5)) add_activity(user1, activity_pastime, timedelta(hours=20.5), timedelta(hours=22), timedelta(minutes=10)) add_activity(user2, activity_sleeping, timedelta(hours=0), timedelta(hours=6), timedelta(hours=1)) add_activity(user2, activity_pastime, timedelta(hours=6), timedelta(hours=7), timedelta(minutes=10)) add_activity(user2, activity_logistics, timedelta(hours=7), timedelta(hours=8), timedelta(minutes=10)) add_activity(user2, activity_studying, timedelta(hours=8), timedelta(hours=18), timedelta(minutes=30)) add_activity(user2, activity_logistics, timedelta(hours=18), timedelta(hours=19), timedelta(minutes=10)) add_activity(user2, activity_eating, timedelta(hours=19), timedelta(hours=20), timedelta(minutes=10)) add_activity(user2, activity_pastime, timedelta(hours=20), timedelta(hours=24), timedelta(minutes=10))