parent
7e1e9d5f8c
commit
8995a8fc98
2 changed files with 62 additions and 85 deletions
@ -1,84 +0,0 @@ |
|||||||
from django.core.management.base import BaseCommand, CommandError |
|
||||||
from django.contrib.auth.models import User |
|
||||||
from django.db.models import Max, F, Count, Q, Sum |
|
||||||
from django.utils.timezone import now |
|
||||||
from django.core.cache import cache |
|
||||||
from django.db import transaction |
|
||||||
from datetime import datetime, timedelta |
|
||||||
import math |
|
||||||
|
|
||||||
from apiserver import secrets, settings |
|
||||||
from apiserver.api import models, utils, utils_email |
|
||||||
|
|
||||||
import time |
|
||||||
|
|
||||||
class Command(BaseCommand): |
|
||||||
help = 'Send email reminders to instructors that they are teaching a class' |
|
||||||
|
|
||||||
def send_class_reminders(self): |
|
||||||
count = 0 |
|
||||||
|
|
||||||
now = utils.now_alberta_tz() |
|
||||||
current_hour_start = now.replace(minute=0, second=0, microsecond=0) |
|
||||||
|
|
||||||
in_six_hours = current_hour_start + timedelta(hours=6) |
|
||||||
in_seven_hours = current_hour_start + timedelta(hours=7) |
|
||||||
|
|
||||||
sessions = models.Session.objects.all() |
|
||||||
reminder_sessions = sessions.filter( |
|
||||||
datetime__gte=in_six_hours, |
|
||||||
datetime__lt=in_seven_hours, |
|
||||||
) |
|
||||||
|
|
||||||
if reminder_sessions.count() == 0: |
|
||||||
self.stdout.write('No classes found within timeframe, returning') |
|
||||||
return 0 |
|
||||||
|
|
||||||
self.stdout.write('Found {} reminder sessions between {} and {} mountain time.'.format( |
|
||||||
reminder_sessions.count(), |
|
||||||
str(in_six_hours), |
|
||||||
str(in_seven_hours), |
|
||||||
)) |
|
||||||
|
|
||||||
for session in reminder_sessions: |
|
||||||
self.stdout.write('Session {} instructor {}:'.format( |
|
||||||
str(session), |
|
||||||
session.instructor.username, |
|
||||||
)) |
|
||||||
|
|
||||||
if session.is_cancelled: |
|
||||||
self.stdout.write(' Is cancelled, skipping.') |
|
||||||
continue |
|
||||||
|
|
||||||
if session.course.id in [317, 273, 413]: |
|
||||||
self.stdout.write(' Is members meeting or cleanup, skipping.') |
|
||||||
continue |
|
||||||
|
|
||||||
if session.course.tags in ['Event', 'Outing']: |
|
||||||
self.stdout.write(' Is only outing or event, skipping.') |
|
||||||
continue |
|
||||||
|
|
||||||
self.stdout.write(' Emailing {} {}:'.format(session.instructor.username, session.instructor.email)) |
|
||||||
|
|
||||||
utils.alert_tanner('Class reminder {} for {} {}'.format( |
|
||||||
str(session), |
|
||||||
session.instructor.username, |
|
||||||
session.instructor.email, |
|
||||||
)) |
|
||||||
|
|
||||||
self.stdout.write(' Sent class reminder email.') |
|
||||||
|
|
||||||
count += 1 |
|
||||||
|
|
||||||
return count |
|
||||||
|
|
||||||
def handle(self, *args, **options): |
|
||||||
self.stdout.write('{} - Class reminder emails'.format(str(now()))) |
|
||||||
start = time.time() |
|
||||||
|
|
||||||
count = self.send_class_reminders() |
|
||||||
self.stdout.write('Sent {} reminders'.format(count)) |
|
||||||
|
|
||||||
self.stdout.write('Completed reminders in {} s'.format( |
|
||||||
str(time.time() - start)[:4] |
|
||||||
)) |
|
Loading…
Reference in new issue