hackathon_manager 0.13.11 → 0.13.12
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/README.md +1 -0
- data/app/controllers/manage/questionnaires_controller.rb +10 -1
- data/app/views/manage/questionnaires/_form.html.haml +80 -71
- data/app/views/manage/questionnaires/_overview.html.haml +1 -1
- data/app/views/manage/schools/show.html.haml +1 -2
- data/lib/hackathon_manager/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1d52647ef1474db0321f4387324553a0010786f68ef9fbf91ba5e44ddc59613f
|
4
|
+
data.tar.gz: ece7b76b4af25ec10ce1b0242090193b37e9b6a47674cc15cbff5ac8353ff196
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6dc569d4444ad9a63d9f7bba5902258c834dce2972dd8fb978fa9402ed917750554b236e3d22303cf142dd0e26c6b140c589a8cd92dac766958bf210c842b11
|
7
|
+
data.tar.gz: d9ab52a36ef5e46a6e50a46f57c660a4a8f234fe8d49452c0793351af3a74ad5f5d127fc5fc8f02cc16d28613eed2d32b709a9db93b22dfe55ac2e8047c5b8c6
|
data/README.md
CHANGED
@@ -25,6 +25,7 @@ HackathonManager uses a variety of third-party services & Ruby gems:
|
|
25
25
|
* [Sparkpost](https://www.sparkpost.com/) (email)
|
26
26
|
* [Paperclip](https://github.com/thoughtbot/paperclip) + [Amazon S3](https://aws.amazon.com/s3/) (resume storage)
|
27
27
|
* [Chartkick](http://chartkick.com/) (management charts)
|
28
|
+
* [Blazer](https://github.com/ankane/blazer) (custom SQL queries & analytics)
|
28
29
|
|
29
30
|
Steps to get the basic flow working:
|
30
31
|
|
@@ -29,6 +29,7 @@ class Manage::QuestionnairesController < Manage::ApplicationController
|
|
29
29
|
create_params = questionnaire_params
|
30
30
|
email = create_params.delete(:email)
|
31
31
|
create_params = convert_school_name_to_id(create_params)
|
32
|
+
create_params = convert_boarded_bus_param(create_params)
|
32
33
|
@questionnaire = ::Questionnaire.new(create_params)
|
33
34
|
if @questionnaire.valid?
|
34
35
|
users = User.where(email: email)
|
@@ -52,6 +53,7 @@ class Manage::QuestionnairesController < Manage::ApplicationController
|
|
52
53
|
email = update_params.delete(:email)
|
53
54
|
@questionnaire.user.update_attributes(email: email) if email.present?
|
54
55
|
update_params = convert_school_name_to_id(update_params)
|
56
|
+
update_params = convert_boarded_bus_param(update_params, @questionnaire)
|
55
57
|
@questionnaire.update_attributes(update_params)
|
56
58
|
respond_with(:manage, @questionnaire)
|
57
59
|
end
|
@@ -153,10 +155,17 @@ class Manage::QuestionnairesController < Manage::ApplicationController
|
|
153
155
|
:phone, :can_share_info, :code_of_conduct_accepted,
|
154
156
|
:travel_not_from_school, :travel_location, :data_sharing_accepted,
|
155
157
|
:graduation_year, :race_ethnicity, :resume, :delete_resume, :why_attend,
|
156
|
-
:bus_list_id, :is_bus_captain
|
158
|
+
:bus_list_id, :is_bus_captain, :boarded_bus
|
157
159
|
)
|
158
160
|
end
|
159
161
|
|
162
|
+
def convert_boarded_bus_param(values, questionnaire = nil)
|
163
|
+
boarded_bus = values.delete(:boarded_bus)
|
164
|
+
current_value = questionnaire&.boarded_bus_at
|
165
|
+
values[:boarded_bus_at] = boarded_bus == '1' ? (current_value || Time.now) : nil
|
166
|
+
values
|
167
|
+
end
|
168
|
+
|
160
169
|
def set_questionnaire
|
161
170
|
@questionnaire = ::Questionnaire.find(params[:id])
|
162
171
|
end
|
@@ -4,75 +4,84 @@
|
|
4
4
|
- if f.error_notification.present?
|
5
5
|
= f.error_notification
|
6
6
|
|
7
|
-
|
8
|
-
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
7
|
+
.row
|
8
|
+
.col-xl-6
|
9
|
+
.card.mb-4
|
10
|
+
.card-header Personal information
|
11
|
+
.card-body
|
12
|
+
- if @questionnaire&.user&.provider == 'mlh'
|
13
|
+
%h6.card-subtitle.mb-2
|
14
|
+
%span.badge.badge-info Provided by My MLH
|
15
|
+
= f.input :first_name, input_html: { "data-validate" => "presence" }, label: "First Name", autofocus: true
|
16
|
+
= f.input :last_name, input_html: { "data-validate" => "presence" }, label: "Last Name"
|
17
|
+
= f.input :email, input_html: { "data-validate" => "presence email", value: @questionnaire.user.try(:email) }, required: true, hint: 'Can be an existing user (without a questionnaire) or a new user. If this is a new user, they will receive a randomly-generated password that they must request a password reset for.'
|
18
|
+
= f.input :phone, input_html: { "data-validate" => "presence" }
|
19
|
+
= f.input :date_of_birth, start_year: Date.today.year - 18, end_year: Date.today.year - 90, order: [:month, :day, :year], input_html: { "data-validate" => "presence" }
|
20
|
+
|
21
|
+
= f.input :school_id, as: :school_selection, input_html: { "data-validate" => "presence" }
|
22
|
+
= f.input :level_of_study, input_html: { "data-validate" => "presence" }
|
23
|
+
= f.input :major, input_html: { "data-validate" => "presence" }
|
24
|
+
= f.input :shirt_size, as: :select, collection: Questionnaire::POSSIBLE_SHIRT_SIZES, include_blank: "(select one...)", input_html: { "data-validate" => "presence" }
|
25
|
+
= f.input :gender, input_html: { "data-validate" => "presence" }
|
26
|
+
= f.input :dietary_restrictions, label: "Health Restrictions"
|
27
|
+
= f.input :special_needs, label: "Special needs"
|
28
|
+
|
29
|
+
.col-xl-6
|
30
|
+
.card.mb-4
|
31
|
+
.card-header Resume
|
32
|
+
.card-body
|
33
|
+
- if HackathonManager.field_enabled?(:why_attend)
|
34
|
+
= f.input :why_attend, label: "Why #{Rails.configuration.hackathon['name']}?", placeholder: "In a sentence or two, why would you like to attend #{Rails.configuration.hackathon['name']}?", input_html: { rows: 3, maxlength: 280 }
|
35
|
+
|
36
|
+
= f.input :experience, as: :select, collection: Questionnaire::POSSIBLE_EXPERIENCES.invert, include_blank: "(select one...)", label: "Experience", input_html: { "data-validate" => "presence" }
|
37
|
+
= f.input :interest, as: :select, collection: Questionnaire::POSSIBLE_INTERESTS.invert, include_blank: "(select one...)", label: "Interest", input_html: { "data-validate" => "presence" }
|
38
|
+
|
39
|
+
= f.input :graduation_year, as: :select, collection: Questionnaire::POSSIBLE_GRAD_YEARS, include_blank: "(select one...)", label: "Graduation year", input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
40
|
+
= f.input :race_ethnicity, as: :select, collection: Questionnaire::POSSIBLE_RACE_ETHNICITIES, include_blank: "(select one...)", label: "Race/Ethnicity", input_html: { "data-validate" => "presence" }, wrapper_html: { class: 'input--half' }
|
41
|
+
|
42
|
+
= f.input :resume, as: :deletable_attachment, hint: "Must be under 2MB", input_html: { "data-validate" => "file-max-size file-content-type", "data-validate-file-max-size" => "2097152", "data-validate-file-content-type" => "application/pdf" }, label: "Resume (PDF)"
|
43
|
+
|
44
|
+
= f.input :portfolio_url, label: "Portfolio Link"
|
45
|
+
= f.input :vcs_url, label: "GitHub/BitBucket"
|
46
|
+
|
47
|
+
= f.input :can_share_info, label: "Share resume with employers?"
|
48
|
+
|
49
|
+
.col-xl-6
|
50
|
+
.card.mb-4
|
51
|
+
.card-header Travel information
|
52
|
+
.card-body
|
53
|
+
- travel_state = !@questionnaire.new_record? && @questionnaire.travel_not_from_school
|
54
|
+
= f.input :travel_not_from_school, label: "I will not be traveling from my school"
|
55
|
+
= f.input :travel_location, input_html: { "data-validate" => "presence", disabled: !travel_state }, wrapper_html: { style: travel_state ? "" : "display: none" }, label: "Travel Location"
|
56
|
+
|
57
|
+
= f.association :bus_list, label: "Bus list", include_blank: 'Not travelling on a sponsored bus'
|
58
|
+
= f.input :boarded_bus, as: :boolean, label: "Boarded bus", input_html: { checked: @questionnaire.boarded_bus_at.present? }
|
59
|
+
= f.input :is_bus_captain, label: "Is Bus Captain"
|
60
|
+
|
61
|
+
.col-xl-6
|
62
|
+
.card.mb-4
|
63
|
+
.card-header Agreements
|
64
|
+
.card-body
|
65
|
+
.supporting-text
|
66
|
+
Please read the
|
67
|
+
= link_to asset_url(Rails.configuration.hackathon['agreement_pdf_asset']), target: '_blank' do
|
68
|
+
#{Rails.configuration.hackathon['name']} Agreement
|
69
|
+
%span.fa.fa-external-link.icon-space-l-half
|
70
|
+
= f.input :agreement_accepted, label: "I accept the #{Rails.configuration.hackathon['name']} agreement.", input_html: { "data-validate" => "presence" }
|
71
|
+
|
72
|
+
.supporting-text
|
73
|
+
Please read the
|
74
|
+
%a{ href:"http://static.mlh.io/docs/mlh-code-of-conduct.pdf", target: "_blank" }
|
75
|
+
MLH Code of Conduct
|
76
|
+
%span.fa.fa-external-link.icon-space-l-half
|
77
|
+
= f.input :code_of_conduct_accepted, label: "I accept the MLH Code of Conduct.", input_html: { "data-validate" => "presence" }
|
78
|
+
|
79
|
+
.supporting-text
|
80
|
+
I agree to the terms of both the
|
81
|
+
<a href="https://github.com/MLH/mlh-policies/tree/master/prize-terms-and-conditions" target="_blank">MLH Contest Terms</a> and Conditions and the
|
82
|
+
<a href="https://mlh.io/privacy" target="_blank">MLH Privacy Policy</a>. Please note that you may receive pre and post-event informational e-mails and occasional messages about hackathons from MLH as per the MLH Privacy Policy.
|
83
|
+
= f.input :data_sharing_accepted, label: "I accept the MLH policies.", input_html: { "data-validate" => "presence" }
|
84
|
+
|
85
|
+
.center.mb-4
|
78
86
|
= f.button :submit, value: ( @questionnaire.new_record? ? 'Create' : 'Save' ), class: 'btn-primary'
|
87
|
+
%hr
|
@@ -79,9 +79,8 @@
|
|
79
79
|
.col
|
80
80
|
%h4.pb-0
|
81
81
|
Questionnaires
|
82
|
-
%small.text-muted (#{@school.questionnaires.count} total)
|
82
|
+
%small.text-muted (#{@school.questionnaires.count} total, #{@school.questionnaires.count { |q| q.checked_in? }} checked in)
|
83
83
|
%table.table
|
84
|
-
%caption #{@school.questionnaires.count} total
|
85
84
|
%thead
|
86
85
|
%tr
|
87
86
|
%th
|
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.13.
|
4
|
+
version: 0.13.12
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Olivera
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-03-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|