def setUpTestData(cls): user_1 = UserFactory() user_2 = UserFactory() cls.end_period = get_utc_now() cls.end_period_date_string = cls.end_period.date().strftime( yyyy_mm_dd_format_1) cls.start_period = get_time_relative_units_ago(cls.end_period, days=7) cls.start_period_date_string = cls.start_period.date().strftime( yyyy_mm_dd_format_1) supplements = SupplementFactory.create_batch(10, user=user_1) for index in range(100): # simulate some missing data if index % 5 == 0 and index != 0: continue date_to_use = cls.end_period - relativedelta.relativedelta( days=index) SleepLogFactory(end_time=date_to_use, user=user_1) for supplement in supplements: SupplementLogFactory.create_batch(2, user=user_1, supplement=supplement, time=date_to_use) cls.user_1_id = user_1.id cls.user_2_id = user_2.id for index in range(100): # simulate some missing data if index % 5 == 0 and index != 0: continue date_to_use = cls.end_period - relativedelta.relativedelta( days=index) DailyProductivityLogFactory(user=user_1, date=date_to_use) # add some random data to user_2 also to make sure no leaking DailyProductivityLogFactory(user=user_2, date=date_to_use)
def setUpTestData(cls): user_1 = UserFactory() user_2 = UserFactory() # do 2 days ago, that way you can create data faster when self-testing start_period = datetime.datetime(2020, 9, 22, tzinfo=user_1.timezone) supplements = SupplementFactory.create_batch(2, user=user_1) for index in range(3): date_to_use = start_period - relativedelta.relativedelta( days=index) SleepLogFactory(end_time=date_to_use, user=user_1) for supplement in supplements: SupplementLogFactory.create_batch(2, user=user_1, supplement=supplement, time=date_to_use) cls.user_1_id = user_1.id cls.user_2_id = user_2.id
def create_demo_fixtures_for_user(user): username = user.username if "demo" not in username: raise ValueError( f"Cannot Run Demo Fixtures for Username without DEMO {username}") # wipe out all the previous models and start from scratch models_to_clean = [ Activity, ActivityLog, DailyProductivityLog, Ingredient, IngredientComposition, SleepLog, Supplement, SupplementLog, SupplementStack, SupplementStackComposition, WellBeingLog, FoodLog, Food, ] for model in models_to_clean: model.objects.filter(user=user).delete() # easier to see any row updates daily_logs_to_create = 30 nested_models_logs_to_create = 10 supplements_to_create = 15 supplement_logs_to_create_daily = 2 sleep_logs_to_create = 90 activities_to_create = 40 activities = ActivityFactory.create_batch(activities_to_create, user=user) for activity in activities: ActivityLogFactory.create_batch(nested_models_logs_to_create, activity=activity, user=user) productivity_logs_to_create = 90 # do a week ahead of time, that way you don't really have to deal with constantly rerunning # this script for now on deployments utc_now = get_utc_now() # relative_end_date_of_fixtures_creation = get_time_relative_units_forward( # utc_now, days=7 # ) # don't create dates in the advance now that we run this celery script every 30 minutes relative_end_date_of_fixtures_creation = utc_now dates_to_create = [] for index in range(productivity_logs_to_create): relative_date = (relative_end_date_of_fixtures_creation - relativedelta.relativedelta(days=index)) dates_to_create.append(relative_date) supplements = SupplementFactory.create_batch(supplements_to_create, user=user) for date in dates_to_create: DailyProductivityLogFactory(date=date, user=user) start_dt = date.replace(hour=0) end_dt = date.replace(hour=23) for supplement in supplements: result = FuzzyDateTime(start_dt=start_dt, end_dt=end_dt).fuzz() # nothing more than right now, that's just noisy if result > utc_now: continue SupplementLogFactory.create_batch( supplement_logs_to_create_daily, user=user, supplement=supplement, time=result, ) # ingredients = IngredientFactory.create_batch(fixtures_to_create, user=user) # # for ingredient in ingredients: # ingredient_composition = IngredientCompositionFactory( # ingredient=ingredient, user=user # ) # supplement = SupplementFactory.create( # user=user, # name=ingredient.name, # ingredient_compositions=[ingredient_composition], # ) # SupplementLogFactory.create_batch( # nested_models_logs_to_create, user=user, supplement=supplement # ) WellBeingLogFactory.create_batch(daily_logs_to_create, user=user) sleep_dates = [] for index in range(sleep_logs_to_create): sleep_date = (relative_end_date_of_fixtures_creation - relativedelta.relativedelta(days=index)) sleep_dates.append(sleep_date) for sleep_date in sleep_dates: SleepLogFactory(end_time=sleep_date, user=user) foods = FoodFactory.create_batch(daily_logs_to_create, user=user) for food in foods: FoodLogFactory.create_batch(nested_models_logs_to_create, food=food, user=user) logger.info(f"Successfully Created Demo Fixtures for {user.username}")
def create_demo_fixtures_for_user(user): username = user.username if "demo" not in username: raise ValueError( f"Cannot Run Demo Fixtures for Username without DEMO {username}") # wipe out all the previous models and start from scratch models_to_clean = [ Activity, ActivityLog, DailyProductivityLog, Ingredient, IngredientComposition, SleepLog, Supplement, SupplementLog, SupplementStack, SupplementStackComposition, WellBeingLog, FoodLog, Food, ] for model in models_to_clean: model.objects.filter(user=user).delete() # easier to see any row updates daily_logs_to_create = 30 nested_models_logs_to_create = 10 supplements_to_create = 15 sleep_logs_to_create = 90 activities_to_create = 40 activities = ActivityFactory.create_batch(activities_to_create, user=user) for activity in activities: ActivityLogFactory.create_batch(nested_models_logs_to_create, activity=activity, user=user) productivity_logs_to_create = 90 DailyProductivityLogFactory.create_batch(productivity_logs_to_create, user=user) supplements = SupplementFactory.create_batch(supplements_to_create, user=user) for supplement in supplements: SupplementLogFactory.create_batch(nested_models_logs_to_create, user=user, supplement=supplement) # ingredients = IngredientFactory.create_batch(fixtures_to_create, user=user) # # for ingredient in ingredients: # ingredient_composition = IngredientCompositionFactory( # ingredient=ingredient, user=user # ) # supplement = SupplementFactory.create( # user=user, # name=ingredient.name, # ingredient_compositions=[ingredient_composition], # ) # SupplementLogFactory.create_batch( # nested_models_logs_to_create, user=user, supplement=supplement # ) WellBeingLogFactory.create_batch(daily_logs_to_create, user=user) utc_now = get_utc_now() # do 2 days ago, that way you can create data faster when self-testing start_period = get_time_relative_units_ago(utc_now, days=2) sleep_dates = [] for index in range(sleep_logs_to_create): sleep_date = start_period - relativedelta.relativedelta(days=index) sleep_dates.append(sleep_date) for sleep_date in sleep_dates: SleepLogFactory(end_time=sleep_date, user=user) foods = FoodFactory.create_batch(daily_logs_to_create, user=user) for food in foods: FoodLogFactory.create_batch(nested_models_logs_to_create, food=food, user=user) logger.info(f"Successfully Created Demo Fixtures for {user.username}")