hackathon_manager 0.6.5 → 0.6.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/helpers/hackathon_manager_helper.rb +4 -0
- data/app/models/message.rb +6 -0
- data/app/models/message_recipient_query.rb +5 -0
- data/app/models/questionnaire.rb +24 -0
- data/app/views/questionnaires/_form.html.haml +2 -2
- data/app/workers/bulk_message_worker.rb +5 -0
- data/lib/hackathon_manager/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a1312a0a0c5155bb9132a067c2623c6676895220
|
4
|
+
data.tar.gz: f7f4e0060ed5bba8aafd8aa791da7ebdcc2c077c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86e4b003525db2df0e8a8856223b93981ce18e1436b57818e15b4c28626d6550dba5591b88b1aefbfd5bad412c9cd0f88e7bb3db69a8249ea9c32d75835806ea
|
7
|
+
data.tar.gz: dc52ba638ec4902a8cf658571be4857c6d026a4a11e0544eed07ecffb85977502867b719e5a033631286ef32dbed065f245018a754bab0615889066f030c28a1
|
data/app/models/message.rb
CHANGED
@@ -101,11 +101,17 @@ class Message < ApplicationRecord
|
|
101
101
|
end
|
102
102
|
# No flatten needed here since each map returns a single option
|
103
103
|
|
104
|
+
blazer_recipients = Blazer::Query.select(:id, :name).map do |query|
|
105
|
+
option.call("blazer::#{query.id}", query)
|
106
|
+
end
|
107
|
+
# No flatten needed here since each map returns a single option
|
108
|
+
|
104
109
|
# Combine all recipients. push(*recipients) is the most efficient,
|
105
110
|
# as it doesn't create a new array each time (concat() does)
|
106
111
|
recipients = POSSIBLE_SIMPLE_RECIPIENTS.invert.to_a
|
107
112
|
recipients.push(*bus_list_recipients)
|
108
113
|
recipients.push(*school_recipients)
|
114
|
+
recipients.push(*blazer_recipients)
|
109
115
|
|
110
116
|
# Add current recipients if not included
|
111
117
|
self.recipients.each do |recipient|
|
@@ -31,6 +31,9 @@ class MessageRecipientQuery
|
|
31
31
|
when "school"
|
32
32
|
model ||= School.find_by_id(id)
|
33
33
|
model_name = "School"
|
34
|
+
when "blazer"
|
35
|
+
model ||= Blazer::Query.find_by_id(id)
|
36
|
+
model_name = "Blazer Query"
|
34
37
|
else
|
35
38
|
raise "Unknown recipient query type: #{type.inspect} (in message recipient query: #{query.inspect}"
|
36
39
|
end
|
@@ -61,6 +64,8 @@ class MessageRecipientQuery
|
|
61
64
|
"Bus List: #{model.name} (applied/not accepted)"
|
62
65
|
when "school"
|
63
66
|
"Confirmed or Accepted: #{model.name}"
|
67
|
+
when "blazer"
|
68
|
+
"Blazer Query: #{model.name}"
|
64
69
|
else
|
65
70
|
raise "Unknown recipient query type: #{recipient_query.type.inspect} (in message recipient query: #{r.inspect}"
|
66
71
|
end
|
data/app/models/questionnaire.rb
CHANGED
@@ -67,6 +67,30 @@ class Questionnaire < ApplicationRecord
|
|
67
67
|
"rsvp_denied" => "RSVP Denied"
|
68
68
|
}.freeze
|
69
69
|
|
70
|
+
# From My MLH's dropdown list.
|
71
|
+
# Should *not* validate against this list in case My MLH changes their options,
|
72
|
+
# as this would cause errors until a manual gem update
|
73
|
+
POSSIBLE_GENDERS = [
|
74
|
+
"Female",
|
75
|
+
"Male",
|
76
|
+
"Non-Binary",
|
77
|
+
"I prefer not to say",
|
78
|
+
"Other"
|
79
|
+
].freeze
|
80
|
+
|
81
|
+
# From My MLH's dropdown list.
|
82
|
+
# Should *not* validate against this list in case My MLH changes their options,
|
83
|
+
# as this would cause errors until a manual gem update
|
84
|
+
POSSIBLE_LEVELS_OF_STUDY = [
|
85
|
+
"Elementary / Middle School / Primary School",
|
86
|
+
"High School / Secondary School",
|
87
|
+
"University (Undergraduate)",
|
88
|
+
"University (Master's / Doctoral)",
|
89
|
+
"Vocational / Code School",
|
90
|
+
"Not Currently a Student",
|
91
|
+
"Other"
|
92
|
+
].freeze
|
93
|
+
|
70
94
|
validates_inclusion_of :experience, in: POSSIBLE_EXPERIENCES
|
71
95
|
validates_inclusion_of :interest, in: POSSIBLE_INTERESTS
|
72
96
|
# validates_inclusion_of :school_id, :in => School.select(:id)
|
@@ -16,9 +16,9 @@
|
|
16
16
|
= f.input :date_of_birth, start_year: Date.today.year - 5, end_year: Date.today.year - 90, order: [:month, :day, :year], input_html: { "data-validate" => "presence" }
|
17
17
|
|
18
18
|
= f.input :school_id, as: :school_selection, input_html: { "data-validate" => "presence" }
|
19
|
-
= f.input :level_of_study, input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
19
|
+
= f.input :level_of_study, collection: collection_or_text(@questionnaire.level_of_study, Questionnaire::POSSIBLE_LEVELS_OF_STUDY), include_blank: "(select one...)", input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
20
20
|
= f.input :major, input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
21
|
-
= f.input :gender, input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
21
|
+
= f.input :gender, collection: collection_or_text(@questionnaire.gender, Questionnaire::POSSIBLE_GENDERS), include_blank: "(select one...)", input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
22
22
|
= f.input :shirt_size, as: :select, collection: Questionnaire::POSSIBLE_SHIRT_SIZES, include_blank: "(select one...)", input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
23
23
|
= f.input :dietary_restrictions, as: :text, placeholder: "Allergies, medical assistance, etc.", label: "Health restrictions", wrapper_html: { class: 'input--half' }
|
24
24
|
= f.input :special_needs, as: :text, placeholder: "Any special needs or requests", label: "Special needs", wrapper_html: { class: 'input--half' }
|
@@ -74,6 +74,11 @@ class BulkMessageWorker
|
|
74
74
|
Questionnaire.joins(:school).where("schools.bus_list_id = ? AND (acc_status != 'accepted' AND acc_status != 'rsvp_confirmed' AND acc_status != 'rsvp_denied')", model.id).pluck(:user_id)
|
75
75
|
when "school"
|
76
76
|
Questionnaire.where("school_id = ? AND (acc_status = 'rsvp_confirmed' OR acc_status = 'accepted')", model.id).pluck(:user_id)
|
77
|
+
when "blazer"
|
78
|
+
result = Blazer::RunStatement.new.perform(Blazer.data_sources[model.data_source], model.statement)
|
79
|
+
user_id_column = result.columns.index("user_id")
|
80
|
+
raise "Blazer query is missing required \"user_id\" column" unless user_id_column.present?
|
81
|
+
result.rows.map { |row| row[user_id_column] }
|
77
82
|
else
|
78
83
|
raise "Unknown recipient query type: #{recipient_query.type.inspect} (in message recipient query: #{type.inspect}"
|
79
84
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hackathon_manager
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Olivera
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-02-
|
11
|
+
date: 2018-02-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|