[docs]defsignup_status_email(user,next_blocks,use_celery=True):emails=[user.notification_email]blocks=[]issues=0forblkinnext_blocks:cancelled=Falsetry:signup=EighthSignup.objects.get(user=user,scheduled_activity__block=blk)exceptEighthSignup.DoesNotExist:signup=Noneissues+=1else:ifsignup.scheduled_activity.cancelled:issues+=1cancelled=Trueblocks.append({"block":blk,"signup":signup,"cancelled":cancelled})block_date=next_blocks[0].dateblock_signup_time=next_blocks[0].signup_timeifblock_signup_time:block_signup_time=f"{block_signup_time.hour}:{block_signup_time.minute}"date_str=block_date.strftime("%A, %B %-d")# We can't build an absolute URI because this isn't being executed# in the context of a Django requestbase_url="https://ion.tjhsst.edu"# request.build_absolute_uri(reverse('index'))data={"user":user,"blocks":blocks,"block_date":block_date,"date_str":date_str,"block_signup_time":block_signup_time,"base_url":base_url,"issues":issues,"info_link":base_url+reverse("eighth_signup"),}args=("eighth/emails/signup_status.txt","eighth/emails/signup_status.html",data,f"Signup Status for {date_str}",emails)ifuse_celery:email_send_task.delay(*args)returnNoneelse:returnemail_send(*args)
[docs]defactivity_cancelled_email(sched_act:EighthScheduledActivity):"""Notifies all the users signed up for the given EighthScheduledActivity that it has been cancelled. Args: sched_act: The activity that has been cancelled. """date_str=sched_act.block.date.strftime("%A, %B %-d")emails=list({signup.user.notification_emailforsignupinsched_act.eighthsignup_set.filter(user__receive_eighth_emails=True)})base_url="https://ion.tjhsst.edu"data={"sched_act":sched_act,"date_str":date_str,"base_url":base_url}logger.debug("Scheduled activity %d was cancelled; emailing %d of %d signed up users",sched_act.id,len(emails),sched_act.eighthsignup_set.count())email_send_task.delay("eighth/emails/activity_cancelled.txt","eighth/emails/activity_cancelled.html",data,f"Activity Cancelled on {date_str}",emails,bcc=True,)
[docs]defabsence_email(signup,use_celery=True):user=signup.useremails=[user.notification_email]# We can't build an absolute URI because this isn't being executed# in the context of a Django requestbase_url="https://ion.tjhsst.edu"# request.build_absolute_uri(reverse('index'))data={"user":user,"signup":signup,"num_absences":user.absence_count(),"base_url":base_url,"info_link":base_url+reverse("eighth_absences"),}args=("eighth/emails/absence.txt","eighth/emails/absence.html",data,"Eighth Period Absence Information",emails)ifuse_celery:email_send_task.delay(*args)returnNoneelse:returnemail_send(*args)