[docs]classCommand(BaseCommand):help="Generate 8th Period Blocks using existing activities"defadd_arguments(self,parser):# Positional argumentsparser.add_argument("end_date")defhandle(self,*args,**kwargs):try:unaware_day=datetime.datetime.strptime(kwargs["end_date"],"%m/%d/%Y")exceptValueErrorasex:raiseCommandError(str(ex))fromexaware_day=make_aware(unaware_day)# Using these fields in EighthActivity, find the correct activities for each blockwed_a_activities=EighthActivity.objects.filter(wed_a=True)wed_b_activities=EighthActivity.objects.filter(wed_b=True)fri_a_activities=EighthActivity.objects.filter(fri_a=True)fri_b_activities=EighthActivity.objects.filter(fri_b=True)curr_date=localdate(now())end_date=localdate(aware_day)delta=datetime.timedelta(days=1)whilecurr_date<=end_date:# datetime uses Monday as the zero-indexifcurr_date.weekday()==2:wed_ablock=EighthBlock.objects.get_or_create(date=curr_date,block_letter="A")[0]wed_bblock=EighthBlock.objects.get_or_create(date=curr_date,block_letter="B")[0]foractivityinwed_a_activities:EighthScheduledActivity.objects.get_or_create(block=wed_ablock,activity=activity)foractivityinwed_b_activities:EighthScheduledActivity.objects.get_or_create(block=wed_bblock,activity=activity)elifcurr_date.weekday()==4:fri_ablock=EighthBlock.objects.get_or_create(date=curr_date,block_letter="A")[0]fri_bblock=EighthBlock.objects.get_or_create(date=curr_date,block_letter="B")[0]foractivityinfri_a_activities:EighthScheduledActivity.objects.get_or_create(block=fri_ablock,activity=activity)foractivityinfri_b_activities:EighthScheduledActivity.objects.get_or_create(block=fri_bblock,activity=activity)curr_date+=delta