Skip to content

Commit

Permalink
Merge pull request #39120 from code-dot-org/csf-gsheet
Browse files Browse the repository at this point in the history
CSF workshop attendance export to gdrive
  • Loading branch information
clareconstantine committed Feb 22, 2021
2 parents 0ed2217 + 4cae8b4 commit c51c445
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 0 deletions.
67 changes: 67 additions & 0 deletions bin/cron/csf_workshop_attendance_to_gdrive
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
#!/usr/bin/env ruby
require_relative 'only_one'
abort 'Script already running' unless only_one_running?(__FILE__)

require_relative '../../dashboard/config/environment'
require 'cdo/google/sheet'

#
# Uses a Google Cloud service account to write enrollment data for CSF workshops into
# a spreadsheet in Google Drive (with permissions locked down to our organization).
#

EARLIEST_WORKSHOP_END_DATE = Date.new(2020, 6, 1)
LATEST_WORKSHOP_START_DATE = Date.today

def get_rows
# Seed results array with a header row
results = [
[
"Organizer Name",
"Organizer Email",
"Regional Partner Name",
"Workshop Dates",
"Funded",
"Attendance Url",
"Num Facilitators",
"Course",
"Subject",
"Is this a Virtual Workshop?",
"Total Hours",
"Num Registered",
"Number Scholarship Teachers Attending All Sessions",
"Attendance Day 1+"
]
]

Pd::Workshop.
where(subject: Pd::SharedWorkshopConstants::SUBJECT_CSF_101).
scheduled_end_on_or_after(EARLIEST_WORKSHOP_END_DATE).
scheduled_start_on_or_before(LATEST_WORKSHOP_START_DATE).find_each do |workshop|
results << [
workshop.organizer&.name,
workshop.organizer&.email,
workshop.regional_partner&.name,
workshop.sessions.map(&:formatted_date_with_start_and_end_times).join("\n"),
workshop.funded ? "Yes" : "No",
"https://studio.code.org/pd/workshop_dashboard/workshops/#{workshop.id}",
workshop.facilitators.count,
workshop.course,
workshop.subject,
workshop.virtual? ? "Yes" : "No",
workshop.effective_num_hours,
workshop.enrollments.count,
workshop.teachers_attending_all_sessions(true).count,
workshop.teachers_attending_all_sessions.count
]
end

results
end

def main
sheet = Google::Sheet.new CDO.csf_workshop_attendance_gsheet_key
sheet.export(tab_name: 'CSF workshops', rows: get_rows)
end

main
2 changes: 2 additions & 0 deletions cookbooks/cdo-apps/templates/default/crontab.erb
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@
cronjob at:'* * * * *', do:deploy_dir('bin', 'cron', 'confirm_usage')
cronjob at:'0 */2 * * *', do:deploy_dir('bin', 'cron', 'teacher_applications_to_gdrive')
cronjob at:'30 */2 * * *', do:deploy_dir('bin', 'cron', 'summer_workshops_to_gdrive')
# [Clare] Disabled so that we can do the first run manually on production-daemon, to update credentials.
# cronjob at:'0 12 * * *', do:deploy_dir('bin', 'cron', 'csf_workshop_attendance_to_gdrive')
cronjob at:'0 7 * * *', do:deploy_dir('bin', 'cron', 'stop_inactive_adhoc_instances')
cronjob at:'0 10 * * *', do:deploy_dir('bin', 'cron', 'redshift_rollups')
cronjob at:'1 7 * * 6', do:deploy_dir('bin', 'cron', 'cleanup_workshop_attendance_codes')
Expand Down

0 comments on commit c51c445

Please sign in to comment.