def handle_job(self): utc = datetime.utcnow() for tz, offset in _tz_offsets.items(): time = datetime(utc.year, utc.month, utc.day, utc.hour) + timedelta(hours=offset) logging.info("Checking for sweep at: " + str(time) + " with tz: " + tz) sweeps = AutoSweep.query(AutoSweep.time == time, AutoSweep.tz == tz) for sweep in sweeps: logging.info(sweep) leader_email = sweep.key.parent().string_id() team_leader = RoseboticsStudent.get_by_id(leader_email) try: export_student_name = len( str(sweep.options.get("student_name", ""))) > 0 export_rose_username = len( str(sweep.options.get("rose_username", ""))) > 0 team_urlsafe = sweep.team_key.urlsafe() timezone = sweep.options.get("timezone") or sweep.tz course_progress = len( str(sweep.options.get("course_progress", ""))) > 0 track_progress = len( str(sweep.options.get("track_progress", ""))) > 0 unit_points = len(str(sweep.options.get("ppu", ""))) > 0 ppu = float(sweep.options.get("ppu", "1")) ppt = float(sweep.options.get("ppt", "1")) csv_data = get_csv_export_lists(team_leader, team_urlsafe, export_student_name, export_rose_username, unit_points, ppu, ppt, course_progress, track_progress, timezone) self.response.headers['Content-Type'] = 'application/csv' mem_stream = StringIO.StringIO() writer = csv.writer(mem_stream) for csv_row in csv_data: writer.writerow(csv_row) self.send_email_with_attachment( leader_email, "You've received an AutoSweep!", mem_stream.getvalue()) mem_stream.close() except Exception, e: import traceback traceback.print_exc() logging.error(e) self.send_email( leader_email, "ERROR: Sorry there was an error generating your AutoSweep" )
def handle_post(self, rosebotics_student): export_student_name = len(self.request.get("student_name")) > 0 export_rose_username = len(self.request.get("rose_username")) > 0 team_urlsafe = self.request.get("team_urlsafe") timezone = self.request.get("timezone") course_progress = len(self.request.get("course_progress")) > 0 track_progress = len(self.request.get("track_progress")) > 0 unit_points = len(self.request.get("ppu")) > 0 ppu = float(self.request.get("ppu", "1")) ppt = float(self.request.get("ppt", "1")) csv_data = get_csv_export_lists(rosebotics_student, team_urlsafe, export_student_name, export_rose_username, unit_points, ppu, ppt, course_progress, track_progress, timezone) self.response.headers['Content-Type'] = 'application/csv' writer = csv.writer(self.response.out) for csv_row in csv_data: writer.writerow(csv_row)