Module: CanvasSync::ReportsMap
- Defined in:
- lib/canvas_sync/reports_map.rb
Constant Summary collapse
- REPORTS =
{ "proservices_provisioning_csv" => { human_name: "Proserv Provisioning Report", module_name: "CustomReports::Proservices::Provisioning", }, "proserv_assignment_group_export_csv" => { human_name: "Assignment Group Export", module_name: "CustomReports::Proserv", }, "proserv_assignment_overrides_csv" => { human_name: "Assignment Overrides Export", module_name: "CustomReports::Proservices::AssignmentOverrides", }, "proserv_content_migrations_csv" => { human_name: "Professional Services Content Migrations Report", module_name: "CustomReports::Proservices::ContentMigrations", }, "proserv_context_module_items_csv" => { human_name: "Professional Services Context Module Items Report", module_name: "CustomReports::Proservices::ContextModuleItems", }, "proserv_context_modules_csv" => { human_name: "Professional Services Context Modules Report", module_name: "CustomReports::Proservices::ContextModules", }, "proserv_course_completion_csv" => { human_name: "Student Course Completion Dates", module_name: "CustomReports::Proserv", }, "rubrics_csv" => { human_name: "CustomReports::Rubrics::Rubrics", module_name: "Rubrics Export Report", }, "rubric_associations_csv" => { human_name: "Rubrics Associations Export Report", module_name: "CustomReports::Rubrics::RubricAssociations", }, "rubric_assessments_csv" => { human_name: "Rubrics Assessments Export Report", module_name: "CustomReports::Rubrics::RubricAssessments", }, "proserv_scores_data_csv" => { human_name: "Professional Services Scores Data Report", module_name: "CustomReports::Proservices::ScoresData", }, "proserv_student_submissions_csv" => { human_name: "Student Submissions", module_name: "CustomReports::Proserv", }, }
- EXPLICIT_REQUIRED_REPORTS =
Set.new
Class Method Summary collapse
- .define_report(name, human_name: nil, module_name: nil) ⇒ Object
- .model_reports ⇒ Object
- .pretty_print_required_reports(client = nil) ⇒ Object
- .require_report!(key, **kwargs) ⇒ Object
- .required_reports ⇒ Object
Class Method Details
.define_report(name, human_name: nil, module_name: nil) ⇒ Object
56 57 58 59 60 |
# File 'lib/canvas_sync/reports_map.rb', line 56 def self.define_report(name, human_name: nil, module_name: nil) REPORTS[name] ||= {} REPORTS[name][:human_name] = human_name if human_name REPORTS[name][:module_name] = module_name if module_name end |
.model_reports ⇒ Object
69 70 71 72 73 74 75 76 77 78 79 80 81 |
# File 'lib/canvas_sync/reports_map.rb', line 69 def self.model_reports mapping = {} Jobs::ReportSyncTask.subclasses.each do |cls| model = cls.model.to_s report = cls.report_name next unless model.present? mapping[model] ||= [] mapping[model] << report end mapping end |
.pretty_print_required_reports(client = nil) ⇒ Object
108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
# File 'lib/canvas_sync/reports_map.rb', line 108 def self.pretty_print_required_reports(client = nil) client ||= canvas_sync_client rescue nil req_reports = required_reports return "[CanvasSync] No reports required... supposedly" if req_reports.empty? enabled_reports = client.report_list('self').map{|r| r["report"] }.to_set rescue nil puts "[CanvasSync] Required Custom Reports:" req_reports.each do |report| color = enabled_reports.nil? ? :cyan : (enabled_reports.include?(report) ? :green : :red) puts "- #{ansi(report, color)}" if ( = REPORTS[report]) && ([:human_name] || [:module_name]) puts " #{[:human_name]} (#{[:module_name]})" end end puts "- #{ansi("NB: Double check if you know this app requires non-CanvasSync provided models.", :italic)}" puts " #{ansi("Non-standard reports must be registered with `CanvasSync.require_report!` from an initializer to be included in this list.", :italic)}" puts "" bits = req_reports.map do |report| "settings[#{report}]=checked" end base_url = client.config[:prefix] rescue "<CANVAS URL>/" plugins_url = "#{base_url}/plugins/account_reports".gsub(/\/+/, "/") plugins_url += "?#{bits.join("&")}" if bits.any? puts "Pre-filled link: " + ansi(plugins_url, :cyan) end |
.require_report!(key, **kwargs) ⇒ Object
64 65 66 67 |
# File 'lib/canvas_sync/reports_map.rb', line 64 def self.require_report!(key, **kwargs) define_report(key, **kwargs) EXPLICIT_REQUIRED_REPORTS << key end |
.required_reports ⇒ Object
83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/canvas_sync/reports_map.rb', line 83 def self.required_reports req = Set.new req << "proservices_provisioning_csv" req.merge(EXPLICIT_REQUIRED_REPORTS) model_reports.each do |model, reports| model_class = model.safe_constantize next unless model_class.present? req.merge(reports) end req end |