├── log └── .keep ├── tmp └── .keep ├── lib ├── assets │ └── .keep └── tasks │ ├── .keep │ ├── sample_hardware_data.csv │ ├── sample_events_data.csv │ ├── template_email.rake │ ├── csv.rake │ ├── db_clean.rake │ ├── reminder.rake │ ├── autocomplete.rake │ ├── load_hardware.rake │ ├── load_events.rake │ └── admissions.rake ├── public ├── favicon.ico ├── apple-touch-icon.png ├── apple-touch-icon-precomposed.png ├── judging │ └── judging.pdf ├── robots.txt ├── 422.html.erb ├── 500.html.erb └── 404.html.erb ├── resume_urls.csv ├── test ├── helpers │ └── .keep ├── mailers │ ├── .keep │ ├── user_mailer_test.rb │ └── previews │ │ └── user_mailer_preview.rb ├── models │ ├── .keep │ ├── email_test.rb │ ├── event_test.rb │ ├── major_test.rb │ ├── prize_test.rb │ ├── user_test.rb │ ├── custom_rsvp_test.rb │ ├── judgement_test.rb │ ├── university_test.rb │ ├── hardware_item_test.rb │ ├── event_attendance_test.rb │ ├── event_application_test.rb │ ├── hardware_checkout_test.rb │ ├── judging_assignment_test.rb │ ├── mentorship_request_test.rb │ ├── hardware_checkout_log_test.rb │ └── mentorship_notification_test.rb ├── controllers │ ├── .keep │ ├── custom_rsvp_controller_test.rb │ ├── paper_judging_controller_test.rb │ ├── event_attendance_controller_test.rb │ ├── slackintegration_controller_test.rb │ ├── navigation_controller_test.rb │ ├── judging_controller_test.rb │ ├── prizes_controller_test.rb │ ├── emails_controller_test.rb │ ├── events_controller_test.rb │ ├── hardware_items_controller_test.rb │ ├── mentorship_requests_controller_test.rb │ ├── mentorship_notifications_controller_test.rb │ ├── hardware_checkouts_controller_test.rb │ └── event_applications_controller_test.rb ├── fixtures │ ├── .keep │ ├── files │ │ └── .keep │ ├── majors.yml │ ├── universities.yml │ ├── judging_assignments.yml │ ├── custom_rsvps.yml │ ├── mentorship_notifications.yml │ ├── hardware_checkout_logs.yml │ ├── mentorship_requests.yml │ ├── hardware_checkouts.yml │ ├── event_applications.yml │ ├── prizes.yml │ ├── hardware_items.yml │ ├── emails.yml │ ├── users.yml │ ├── judgements.yml │ ├── event_attendances.yml │ └── events.yml ├── integration │ └── .keep ├── test_helper.rb └── system │ ├── prizes_test.rb │ └── mentorship_notifications_test.rb ├── app ├── assets │ ├── images │ │ ├── .keep │ │ ├── favicon.png │ │ ├── rubric.png │ │ └── dashboard-logo.png │ ├── javascripts │ │ ├── channels │ │ │ └── .keep │ │ ├── custom_rsvp.coffee │ │ ├── paper_judging.coffee │ │ ├── event_attendance.coffee │ │ ├── slackintegration.coffee │ │ ├── mentorship_notifications.coffee │ │ ├── cable.js │ │ ├── init.js │ │ ├── application.js │ │ └── project.js │ ├── config │ │ └── manifest.js │ ├── attachments │ │ └── HUMVLiabilityWaivers.pdf │ └── stylesheets │ │ ├── devise.scss │ │ ├── custom_rsvp.scss │ │ ├── paper_judging.scss │ │ ├── event_attendance.scss │ │ ├── slackintegration.scss │ │ ├── mentorship_notifications.scss │ │ ├── scaffolds.scss │ │ └── judging.scss ├── models │ ├── concerns │ │ └── .keep │ ├── major.rb │ ├── university.rb │ ├── feature_flag.rb │ ├── application_record.rb │ ├── mentorship_notification.rb │ ├── event_attendance.rb │ ├── prize.rb │ ├── hardware_checkout_log.rb │ ├── email.rb │ ├── hardware_checkout.rb │ ├── judging_assignment.rb │ ├── event.rb │ ├── mentorship_request.rb │ ├── hardware_item.rb │ └── custom_rsvp.rb ├── controllers │ ├── concerns │ │ └── .keep │ ├── event_attendance_controller.rb │ ├── users_controller.rb │ ├── api │ │ └── api_controller.rb │ └── registrations_controller.rb ├── views │ ├── layouts │ │ ├── mailer.text.erb │ │ ├── mailer.html.erb │ │ └── application.html.erb │ ├── judging │ │ ├── edit.html.erb │ │ ├── show.html.erb │ │ ├── _score.html.erb │ │ ├── tag_assign.html.erb │ │ ├── _assigned_projects.html.erb │ │ └── _judged_projects.html.erb │ ├── events │ │ ├── index.json.jbuilder │ │ ├── _event.json.jbuilder │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ └── index.html.erb │ ├── user_mailer │ │ ├── reminder_email.text.erb │ │ ├── denied_email.text.erb │ │ ├── submit_email.text.erb │ │ ├── accepted_email.text.erb │ │ ├── template_email.txt.erb │ │ ├── welcome_email.text.erb │ │ └── waitlisted_email.text.erb │ ├── shared │ │ ├── _users.html.erb │ │ ├── home_pages │ │ │ ├── _denied_view.html.erb │ │ │ ├── _undecided_view.html.erb │ │ │ ├── _waitlisted_view.html.erb │ │ │ └── _new_user_view.html.erb │ │ └── _footer.html.erb │ ├── hardware_items │ │ ├── index.json.jbuilder │ │ ├── _hardware_item.json.jbuilder │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ ├── _barcode.html.erb │ │ ├── _checkout_log.html.erb │ │ ├── _checkout.html.erb │ │ └── _checked_out_items.html.erb │ ├── projects │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── project_submit_info.html.erb │ │ ├── _public_navigation.html.erb │ │ └── team.html.erb │ ├── mentorship_notifications │ │ ├── show.json.jbuilder │ │ ├── index.json.jbuilder │ │ ├── _mentorship_notification.json.jbuilder │ │ ├── new.html.erb │ │ ├── edit.html.erb │ │ ├── show.html.erb │ │ ├── index.html.erb │ │ └── _form.html.erb │ ├── emails │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ ├── index.html.erb │ │ └── _form.html.erb │ ├── mentorship_requests │ │ ├── index.html.erb │ │ ├── new.html.erb │ │ └── edit.html.erb │ ├── prizes │ │ ├── edit.html.erb │ │ ├── new.html.erb │ │ ├── show.html.erb │ │ ├── index.html.erb │ │ └── assign.html.erb │ ├── partial │ │ ├── _hackathonlogo.html.erb │ │ └── _hackathonfooter.html.erb │ ├── pages │ │ ├── permissions.html.erb │ │ ├── redeem_code.html.erb │ │ ├── join_slack.html.erb │ │ ├── index.html.erb │ │ └── check_in.html.erb │ ├── devise │ │ ├── unlocks │ │ │ └── new.html.erb │ │ ├── confirmations │ │ │ └── new.html.erb │ │ ├── shared │ │ │ └── _links.html.erb │ │ ├── passwords │ │ │ ├── new.html.erb │ │ │ └── edit.html.erb │ │ └── sessions │ │ │ └── new.html.erb │ ├── paper_judging │ │ └── index.html.erb │ ├── custom_rsvp │ │ └── show.html.erb │ ├── feature_flags │ │ └── _feature_flag.erb │ ├── slackintegration │ │ └── admin.html.erb │ └── event_applications │ │ ├── edit.html.erb │ │ └── new.html.erb ├── helpers │ ├── judging_helper.rb │ ├── custom_rsvp_helper.rb │ ├── paper_judging_helper.rb │ ├── event_attendance_helper.rb │ ├── slackintegration_helper.rb │ ├── mentorship_notifications_helper.rb │ ├── application_helper.rb │ ├── devise_helper.rb │ └── event_applications_helper.rb ├── jobs │ └── application_job.rb ├── channels │ └── application_cable │ │ ├── channel.rb │ │ └── connection.rb └── mailers │ ├── application_mailer.rb │ └── user_mailer.rb ├── vendor └── assets │ ├── javascripts │ └── .keep │ └── stylesheets │ └── .keep ├── .rubocop.yml ├── output.csv ├── docker ├── docker_run.sh ├── docker_set_up.sh └── Dockerfile ├── db ├── application_autocomplete │ └── .~lock.colleges.csv# └── migrate │ ├── 20191003200336_add_slack_to_user.rb │ ├── 20170823144753_remove_thumbnail.rb │ ├── 20221102014907_change_upc_to_uid.rb │ ├── 20191003045056_add_rsvpable_to_event.rb │ ├── 20190908192614_add_project_id_to_users.rb │ ├── 20191003045039_add_max_seats_to_event.rb │ ├── 20200112194527_add_score_to_judgement.rb │ ├── 20180905015844_add_user_to_project.rb │ ├── 20181005154209_add_prize_field_to_projects.rb │ ├── 20200112203807_add_user_id_to_judgements.rb │ ├── 20200112210254_set_default_score.rb │ ├── 20170425211535_add_type_to_user.rb │ ├── 20200126193225_add_tag_to_judgements.rb │ ├── 20190909193614_remove_user_id_from_projects.rb │ ├── 20191004004936_delete_slack_username_from_user.rb │ ├── 20191013175841_add_youtube_link_to_projects.rb │ ├── 20200112204046_add_project_id_to_judgements.rb │ ├── 20191013190410_add_tech_to_projects.rb │ ├── 20191013200730_add_prizes_won_to_projects.rb │ ├── 20200109051747_add_location_to_hardware_items.rb │ ├── 20200126000717_add_custom_scores_to_judgements.rb │ ├── 20170701032201_remove_programmer_type.rb │ ├── 20170903192617_change_events_time.rb │ ├── 20190721160412_add_description_to_feature_flags.rb │ ├── 20191003051120_add_user_id_to_event_attendance.rb │ ├── 20200112194204_create_judgements.rb │ ├── 20190721155954_add_display_name_to_feature_flags.rb │ ├── 20190818212123_add_pronoun_to_event_applications.rb │ ├── 20190818212159_remove_sex_from_event_applications.rb │ ├── 20190909193239_remove_team_members_from_projects.rb │ ├── 20191003051058_add_event_id_to_event_attendance.rb │ ├── 20170531224502_add_urgency_to_mentorship_requests.rb │ ├── 20170719225344_hardware_skills.rb │ ├── 20180804185413_drop_active_storage.rb │ ├── 20191010222403_add_checked_in_to_event_attendance.rb │ ├── 20200126192626_add_tag_to_judging_assignments.rb │ ├── 20221109013144_change_uid_to_string_in_hardware_items.rb │ ├── 20170722060404_add_flag_to_event_applications.rb │ ├── 20171014030325_add_rsvp_to_event_applications.rb │ ├── 20190818212050_add_gender_pronoun_to_event_applications.rb │ ├── 20191014005345_add_message_to_hardware_checkout_logs.rb │ ├── 20170714015601_create_majors.rb │ ├── 20190818213423_add_custom_fields_to_event_applications.rb │ ├── 20191003044524_create_event_attendances.rb │ ├── 20191013201513_add_project_selectable_to_prizes.rb │ ├── 20191013204218_update_prizes_array_in_projects.rb │ ├── 20171029034814_add_check_in_to_event_applications.rb │ ├── 20190726233422_add_mlh_agreement_to_event_applications.rb │ ├── 20191013192723_update_tech_in_projects.rb │ ├── 20231002032542_rename_prize_model_fields.rb │ ├── 20180711001332_add_resume_file_size_to_event_applications.rb │ ├── 20180818171735_add_user_graduation_year_to_event_application.rb │ ├── 20181011233048_add_power_tableid_to_projects.rb │ ├── 20200121200442_update_judge_assignment_primary_key.rb │ ├── 20231008213425_add_consent_to_marketing_emails_to_users.rb │ ├── 20170714015410_create_universities.rb │ ├── 20221013150340_add_mlh_communications_to_event_applications.rb │ ├── 20181011053411_edit_project_fields.rb │ ├── 20191013203003_update_prizes_in_projects.rb │ ├── 20170522053550_add_other_text_field_option_to_event_applications.rb │ ├── 20170525164515_add_type_to_mentorship_requests.rb │ ├── 20200117234839_create_judging_assignments.rb │ ├── 20180909180945_add_rsv_pand_check_in_to_user.rb │ ├── 20191013193206_update_tech_default_in_projects.rb │ ├── 20180928153649_change_events_fields.rb │ ├── 20190915231752_create_custom_rsvp.rb │ ├── 20180807223040_create_feature_flags.rb │ ├── 20191013204303_update_prizes_won_array_in_projects.rb │ ├── 20231008224238_rename_email_marketing_consent_to_match_naming_convention.rb │ ├── 20200128031347_update_custom_scores_to_judgements.rb │ ├── 20191003222330_remove_slack_from_user.rb │ ├── 20231009025205_rename_email_marketing_consent_to_non_transactional_email_consent.rb │ ├── 20190818222059_update_custom_fields_for_event_applications.rb │ ├── 20170701032834_remove_default_value_in_boolean_value.rb │ ├── 20180808024842_create_projects.rb │ ├── 20200126201720_update_assignment_index.rb │ ├── 20170512164743_remove_item_upc_from_hardware_checkouts.rb │ ├── 20190819205021_modify_default_value_for_custom_fields_in_event_applications.rb │ ├── 20171030002802_create_emails.rb │ ├── 20180909190233_create_prizes.rb │ ├── 20170614024614_numbers.rb │ ├── 20180929224811_add_tech_to_mentorship_requests.rb │ ├── 20170709180501_create_events.rb │ ├── 20191014004914_create_hardware_checkout_logs.rb │ ├── 20191018035814_create_mentorship_notifications.rb │ ├── 20170524233707_create_mentorship_requests.rb │ ├── 20180930015740_add_attachment_screenshot_to_mentorship_requests.rb │ ├── 20200206212235_devise_token_auth_edit_users.rb │ ├── 20170424014343_create_hardware_items.rb │ ├── 20170427165952_create_hardware_checkouts.rb │ ├── 20180909211902_add_paperclip_to_projects.rb │ ├── 20170512171123_add_references_to_hardware_checkouts.rb │ ├── 20170416004110_create_event_applications.rb │ ├── 20191017194803_fix_defaults.rb │ ├── 20200618042555_add_confirmable_to_devise.rb │ ├── 20181004212657_add_new_fields_to_projects.rb │ ├── 20170614025022_number2.rb │ ├── 20190820044737_delete_unneeded_fields_in_event_applications.rb │ ├── 20180729035032_remove_old_variables_from_event_application.rb │ ├── 20180728205939_create_active_storage_tables.active_storage.rb │ ├── 20180804035430_clean_up_event_application_table.rb │ ├── 20180811040748_update_event_application_table.rb │ ├── 20170609212338_renaming_reordering_removing_event_application_variables.rb │ └── 20170415164547_devise_create_users.rb ├── .gitmodules ├── bin ├── bundle ├── rake ├── rails ├── spring ├── update └── setup ├── config ├── spring.rb ├── boot.rb ├── cable.yml ├── initializers │ ├── session_store.rb │ ├── filter_parameter_logging.rb │ ├── ransack.rb │ ├── cookies_serializer.rb │ ├── formats_filter.rb │ ├── recaptcha.rb │ ├── wrap_parameters.rb │ ├── arel.rb │ ├── new_framework_defaults.rb │ └── assets.rb ├── environment.rb ├── database.yml ├── secrets.yml ├── locales │ └── en.yml └── environments │ └── test.rb ├── config.ru ├── Rakefile ├── .dockerignore ├── docker_shell.sh ├── docker-compose.yml └── .gitignore /log/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /tmp/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/assets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /lib/tasks/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /resume_urls.csv: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/helpers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/mailers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/models/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/assets/images/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/controllers/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/integration/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/models/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /test/fixtures/files/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/controllers/concerns/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/javascripts/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /vendor/assets/stylesheets/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /app/assets/javascripts/channels/.keep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /public/apple-touch-icon-precomposed.png: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.rubocop.yml: -------------------------------------------------------------------------------- 1 | Metrics/LineLength: 2 | Max: 100 -------------------------------------------------------------------------------- /output.csv: -------------------------------------------------------------------------------- 1 | name, resume_file_name, education_lvl -------------------------------------------------------------------------------- /app/views/layouts/mailer.text.erb: -------------------------------------------------------------------------------- 1 | <%= yield %> 2 | -------------------------------------------------------------------------------- /app/helpers/judging_helper.rb: -------------------------------------------------------------------------------- 1 | module JudgingHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/models/major.rb: -------------------------------------------------------------------------------- 1 | class Major < ApplicationRecord 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/custom_rsvp_helper.rb: -------------------------------------------------------------------------------- 1 | module CustomRsvpHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/paper_judging_helper.rb: -------------------------------------------------------------------------------- 1 | module PaperJudgingHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/models/university.rb: -------------------------------------------------------------------------------- 1 | class University < ApplicationRecord 2 | end 3 | -------------------------------------------------------------------------------- /app/jobs/application_job.rb: -------------------------------------------------------------------------------- 1 | class ApplicationJob < ActiveJob::Base 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/event_attendance_helper.rb: -------------------------------------------------------------------------------- 1 | module EventAttendanceHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/helpers/slackintegration_helper.rb: -------------------------------------------------------------------------------- 1 | module SlackintegrationHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/views/judging/edit.html.erb: -------------------------------------------------------------------------------- 1 | <%= render :file => "judging/new.html.erb" %> 2 | -------------------------------------------------------------------------------- /app/helpers/mentorship_notifications_helper.rb: -------------------------------------------------------------------------------- 1 | module MentorshipNotificationsHelper 2 | end 3 | -------------------------------------------------------------------------------- /app/views/events/index.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.array! @all_events, partial: 'events/event', as: :event 2 | -------------------------------------------------------------------------------- /docker/docker_run.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | docker-compose run -v `pwd`:/usr/src/app -p 3000:3000 rails "$@" -------------------------------------------------------------------------------- /app/views/user_mailer/reminder_email.text.erb: -------------------------------------------------------------------------------- 1 | Hi <%= @user.first_name %>, 2 | 3 | <%= @message %> 4 | 5 | -------------------------------------------------------------------------------- /public/judging/judging.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuseumass/dashboard/HEAD/public/judging/judging.pdf -------------------------------------------------------------------------------- /app/assets/images/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuseumass/dashboard/HEAD/app/assets/images/favicon.png -------------------------------------------------------------------------------- /app/assets/images/rubric.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuseumass/dashboard/HEAD/app/assets/images/rubric.png -------------------------------------------------------------------------------- /app/models/feature_flag.rb: -------------------------------------------------------------------------------- 1 | class FeatureFlag < ApplicationRecord 2 | validates_uniqueness_of :name 3 | end 4 | -------------------------------------------------------------------------------- /app/views/shared/_users.html.erb: -------------------------------------------------------------------------------- 1 | <% @all_users.each do |user| %> 2 |

<%= user.full_name %>

3 | <% end %> -------------------------------------------------------------------------------- /app/models/application_record.rb: -------------------------------------------------------------------------------- 1 | class ApplicationRecord < ActiveRecord::Base 2 | self.abstract_class = true 3 | end 4 | -------------------------------------------------------------------------------- /app/models/mentorship_notification.rb: -------------------------------------------------------------------------------- 1 | class MentorshipNotification < ApplicationRecord 2 | belongs_to :user 3 | end 4 | -------------------------------------------------------------------------------- /app/assets/images/dashboard-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuseumass/dashboard/HEAD/app/assets/images/dashboard-logo.png -------------------------------------------------------------------------------- /db/application_autocomplete/.~lock.colleges.csv#: -------------------------------------------------------------------------------- 1 | ,grob,grob-Inspiron-7559,13.07.2017 23:51,file:///home/grob/.config/libreoffice/4; -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "hackathon-config"] 2 | path = hackathon-config 3 | url = https://github.com/ammuiyer/HackUMass-XI-Config 4 | -------------------------------------------------------------------------------- /app/channels/application_cable/channel.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Channel < ActionCable::Channel::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/models/event_attendance.rb: -------------------------------------------------------------------------------- 1 | class EventAttendance < ApplicationRecord 2 | belongs_to :user 3 | belongs_to :event 4 | end 5 | -------------------------------------------------------------------------------- /app/assets/config/manifest.js: -------------------------------------------------------------------------------- 1 | //= link_tree ../images 2 | //= link_directory ../javascripts .js 3 | //= link_directory ../stylesheets .css 4 | -------------------------------------------------------------------------------- /app/models/prize.rb: -------------------------------------------------------------------------------- 1 | class Prize < ApplicationRecord 2 | validates_presence_of :award, :description, :title, :sponsor, :priority 3 | end 4 | -------------------------------------------------------------------------------- /app/views/hardware_items/index.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.array! @all_hardware_items, partial: 'hardware_items/hardware_item', as: :hardware_item 2 | -------------------------------------------------------------------------------- /app/views/user_mailer/denied_email.text.erb: -------------------------------------------------------------------------------- 1 | <%= render file: HackumassWeb::Application::copy_for('user_mailer/denied_email_body.text.erb') %> -------------------------------------------------------------------------------- /app/views/user_mailer/submit_email.text.erb: -------------------------------------------------------------------------------- 1 | <%= render file: HackumassWeb::Application::copy_for('user_mailer/submit_email_body.text.erb') %> -------------------------------------------------------------------------------- /app/channels/application_cable/connection.rb: -------------------------------------------------------------------------------- 1 | module ApplicationCable 2 | class Connection < ActionCable::Connection::Base 3 | end 4 | end 5 | -------------------------------------------------------------------------------- /app/models/hardware_checkout_log.rb: -------------------------------------------------------------------------------- 1 | class HardwareCheckoutLog < ApplicationRecord 2 | belongs_to :user 3 | belongs_to :hardware_item 4 | end 5 | -------------------------------------------------------------------------------- /app/views/user_mailer/accepted_email.text.erb: -------------------------------------------------------------------------------- 1 | <%= render file: HackumassWeb::Application::copy_for('user_mailer/accepted_email_body.text.erb') %> -------------------------------------------------------------------------------- /app/views/user_mailer/template_email.txt.erb: -------------------------------------------------------------------------------- 1 | <%= render file: HackumassWeb::Application::copy_for('user_mailer/template_email_body.text.erb') %> -------------------------------------------------------------------------------- /app/views/user_mailer/welcome_email.text.erb: -------------------------------------------------------------------------------- 1 | <%= render file: HackumassWeb::Application::copy_for('user_mailer/welcome_email_body.text.erb') %> -------------------------------------------------------------------------------- /app/assets/attachments/HUMVLiabilityWaivers.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/fuseumass/dashboard/HEAD/app/assets/attachments/HUMVLiabilityWaivers.pdf -------------------------------------------------------------------------------- /app/models/email.rb: -------------------------------------------------------------------------------- 1 | class Email < ApplicationRecord 2 | # TODO: Add Validations for emails i.e. message is present, title is present etc. 3 | end 4 | -------------------------------------------------------------------------------- /app/views/user_mailer/waitlisted_email.text.erb: -------------------------------------------------------------------------------- 1 | <%= render file: HackumassWeb::Application::copy_for('user_mailer/waitlisted_email_body.text.erb') %> -------------------------------------------------------------------------------- /bin/bundle: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__) 3 | load Gem.bin_path('bundler', 'bundle') 4 | -------------------------------------------------------------------------------- /config/spring.rb: -------------------------------------------------------------------------------- 1 | %w( 2 | .ruby-version 3 | .rbenv-vars 4 | tmp/restart.txt 5 | tmp/caching-dev.txt 6 | ).each { |path| Spring.watch(path) } 7 | -------------------------------------------------------------------------------- /config/boot.rb: -------------------------------------------------------------------------------- 1 | ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__) 2 | 3 | require 'bundler/setup' # Set up gems listed in the Gemfile. 4 | -------------------------------------------------------------------------------- /config.ru: -------------------------------------------------------------------------------- 1 | # This file is used by Rack-based servers to start the application. 2 | 3 | require_relative 'config/environment' 4 | 5 | run Rails.application 6 | -------------------------------------------------------------------------------- /app/assets/stylesheets/devise.scss: -------------------------------------------------------------------------------- 1 | .devise-error-card-margin-top { 2 | margin-top: 20px; 3 | } 4 | 5 | .devise-error-card-padding { 6 | padding: 20px 0px; 7 | } -------------------------------------------------------------------------------- /app/views/projects/new.html.erb: -------------------------------------------------------------------------------- 1 | 4 | <%= render 'form', project: @project %> 5 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/show.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.partial! "mentorship_notifications/mentorship_notification", mentorship_notification: @mentorship_notification 2 | -------------------------------------------------------------------------------- /test/models/email_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EmailTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/event_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EventTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/major_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MajorTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/prize_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PrizeTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/user_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class UserTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/mailers/application_mailer.rb: -------------------------------------------------------------------------------- 1 | class ApplicationMailer < ActionMailer::Base 2 | default from: "#{HackumassWeb::Application::CONTACT_EMAIL}" 3 | layout 'mailer' 4 | end 5 | -------------------------------------------------------------------------------- /config/cable.yml: -------------------------------------------------------------------------------- 1 | development: 2 | adapter: async 3 | 4 | test: 5 | adapter: async 6 | 7 | production: 8 | adapter: redis 9 | url: redis://localhost:6379/1 10 | -------------------------------------------------------------------------------- /lib/tasks/sample_hardware_data.csv: -------------------------------------------------------------------------------- 1 | uid,name,count,category,location 2 | 895632742,Arduino Uno,15,Microcontrollers,Bin 12 3 | 397464010,Intel Edison,3,Microcontrollers,Bin 11 4 | -------------------------------------------------------------------------------- /app/controllers/event_attendance_controller.rb: -------------------------------------------------------------------------------- 1 | class EventAttendanceController < ApplicationController 2 | def create 3 | EventAttendance.new() 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/emails/edit.html.erb: -------------------------------------------------------------------------------- 1 |

Editing Email

2 | 3 | <%= render 'form', email: @email %> 4 | 5 | <%= link_to 'Show', @email %> | 6 | <%= link_to 'Back', emails_path %> 7 | -------------------------------------------------------------------------------- /app/views/mentorship_requests/index.html.erb: -------------------------------------------------------------------------------- 1 | <% if @current_user.is_attendee? %> 2 | <%= render 'attendee_view'%> 3 | <% else %> 4 | <%= render 'mentor_view'%> 5 | <% end %> 6 | -------------------------------------------------------------------------------- /app/views/prizes/edit.html.erb: -------------------------------------------------------------------------------- 1 |

Editing Prize

2 | 3 | <%= render 'form', prize: @prize %> 4 | 5 | <%= link_to 'Show', @prize %> | 6 | <%= link_to 'Back', prizes_path %> 7 | -------------------------------------------------------------------------------- /db/migrate/20191003200336_add_slack_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddSlackToUser < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :slack, :boolean 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/mailers/user_mailer_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class UserMailerTest < ActionMailer::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/custom_rsvp_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CustomRsvpTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/judgement_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class JudgementTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/university_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class UniversityTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/index.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.array! @mentorship_notifications, partial: 'mentorship_notifications/mentorship_notification', as: :mentorship_notification 2 | -------------------------------------------------------------------------------- /db/migrate/20170823144753_remove_thumbnail.rb: -------------------------------------------------------------------------------- 1 | class RemoveThumbnail < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :events, :thumbnail, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20221102014907_change_upc_to_uid.rb: -------------------------------------------------------------------------------- 1 | class ChangeUpcToUid < ActiveRecord::Migration[5.2] 2 | def change 3 | rename_column :hardware_items, :upc, :uid 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/majors.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | name: MyString 5 | 6 | two: 7 | name: MyString 8 | -------------------------------------------------------------------------------- /test/models/hardware_item_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HardwareItemTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /config/initializers/session_store.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | Rails.application.config.session_store :cookie_store, key: '_hackumass-web_session' 4 | -------------------------------------------------------------------------------- /db/migrate/20191003045056_add_rsvpable_to_event.rb: -------------------------------------------------------------------------------- 1 | class AddRsvpableToEvent < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :events, :rsvpable, :boolean 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/universities.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | name: MyString 5 | 6 | two: 7 | name: MyString 8 | -------------------------------------------------------------------------------- /test/models/event_attendance_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EventAttendanceTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/views/mentorship_requests/new.html.erb: -------------------------------------------------------------------------------- 1 |

2 |

<%= current_user.first_name %>'s Mentorship Request

3 | 4 | <%= render 'form', mentorship_request: @mentorship_request %> 5 | -------------------------------------------------------------------------------- /app/views/projects/edit.html.erb: -------------------------------------------------------------------------------- 1 |

Editing Project

2 | 3 | <%= render 'form', project: @project %> 4 | 5 | <%= link_to 'Show', @project %> | 6 | <%= link_to 'Back', projects_path %> 7 | -------------------------------------------------------------------------------- /db/migrate/20190908192614_add_project_id_to_users.rb: -------------------------------------------------------------------------------- 1 | class AddProjectIdToUsers < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :project_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191003045039_add_max_seats_to_event.rb: -------------------------------------------------------------------------------- 1 | class AddMaxSeatsToEvent < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :events, :max_seats, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200112194527_add_score_to_judgement.rb: -------------------------------------------------------------------------------- 1 | class AddScoreToJudgement < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :judgements, :score, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/models/event_application_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EventApplicationTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/hardware_checkout_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HardwareCheckoutTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/judging_assignment_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class JudgingAssignmentTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /test/models/mentorship_request_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MentorshipRequestTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20180905015844_add_user_to_project.rb: -------------------------------------------------------------------------------- 1 | class AddUserToProject < ActiveRecord::Migration[5.2] 2 | def change 3 | add_reference :projects, :user, foreign_key: true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20181005154209_add_prize_field_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddPrizeFieldToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :prize, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200112203807_add_user_id_to_judgements.rb: -------------------------------------------------------------------------------- 1 | class AddUserIdToJudgements < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :judgements, :user_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200112210254_set_default_score.rb: -------------------------------------------------------------------------------- 1 | class SetDefaultScore < ActiveRecord::Migration[5.2] 2 | def change 3 | change_column :judgements, :score, :integer, default: -1 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/judging_assignments.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | judgement: one 5 | 6 | two: 7 | judgement: two 8 | -------------------------------------------------------------------------------- /test/models/hardware_checkout_log_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HardwareCheckoutLogTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20170425211535_add_type_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddTypeToUser < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :users, :user_type, :string, :default => 'attendee' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200126193225_add_tag_to_judgements.rb: -------------------------------------------------------------------------------- 1 | class AddTagToJudgements < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :judgements, :tag, :string, :null => true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/models/mentorship_notification_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MentorshipNotificationTest < ActiveSupport::TestCase 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20190909193614_remove_user_id_from_projects.rb: -------------------------------------------------------------------------------- 1 | class RemoveUserIdFromProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :user_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191004004936_delete_slack_username_from_user.rb: -------------------------------------------------------------------------------- 1 | class DeleteSlackUsernameFromUser < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :users, :slack_username 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191013175841_add_youtube_link_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddYoutubeLinkToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :youtube_link, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200112204046_add_project_id_to_judgements.rb: -------------------------------------------------------------------------------- 1 | class AddProjectIdToJudgements < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :judgements, :project_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/events/_event.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.extract! event, :id, :title, :description, :location, :start_time, :end_time, :host, :created_by, :created_at, :updated_at 2 | json.url event_url(event, format: :json) 3 | -------------------------------------------------------------------------------- /db/migrate/20191013190410_add_tech_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddTechToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :tech, :string, array:true, default: '{}' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191013200730_add_prizes_won_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddPrizesWonToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :prizes_won, :json, default: [] 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200109051747_add_location_to_hardware_items.rb: -------------------------------------------------------------------------------- 1 | class AddLocationToHardwareItems < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :hardware_items, :location, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200126000717_add_custom_scores_to_judgements.rb: -------------------------------------------------------------------------------- 1 | class AddCustomScoresToJudgements < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :judgements, :custom_scores, :json 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/controllers/custom_rsvp_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class CustomRsvpControllerTest < ActionDispatch::IntegrationTest 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/views/mentorship_requests/edit.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | <%= render 'form', mentorship_request: @mentorship_request %> 6 | -------------------------------------------------------------------------------- /db/migrate/20170701032201_remove_programmer_type.rb: -------------------------------------------------------------------------------- 1 | class RemoveProgrammerType < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :event_applications, :programmer_type_list, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20170903192617_change_events_time.rb: -------------------------------------------------------------------------------- 1 | class ChangeEventsTime < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :events, :time 4 | add_column :events, :time, :datetime 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20190721160412_add_description_to_feature_flags.rb: -------------------------------------------------------------------------------- 1 | class AddDescriptionToFeatureFlags < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :feature_flags, :description, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191003051120_add_user_id_to_event_attendance.rb: -------------------------------------------------------------------------------- 1 | class AddUserIdToEventAttendance < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_attendances, :user_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200112194204_create_judgements.rb: -------------------------------------------------------------------------------- 1 | class CreateJudgements < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :judgements do |t| 4 | 5 | t.timestamps 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /lib/tasks/sample_events_data.csv: -------------------------------------------------------------------------------- 1 | title ,description,location ,host,start_time,end_time,RSVP?,max_seats 2 | Mentoring,Mentoring people,ILC,RedPandaHacks,"Wed, 22 Jan 2020 19:21:30","Wed, 22 Jan 2020 19:22:30",TRUE,10 3 | -------------------------------------------------------------------------------- /test/controllers/paper_judging_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PaperJudgingControllerTest < ActionDispatch::IntegrationTest 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/models/hardware_checkout.rb: -------------------------------------------------------------------------------- 1 | class HardwareCheckout < ApplicationRecord 2 | 3 | validates_presence_of :user 4 | validates_presence_of :hardware_item 5 | 6 | belongs_to :user 7 | belongs_to :hardware_item 8 | end 9 | -------------------------------------------------------------------------------- /app/models/judging_assignment.rb: -------------------------------------------------------------------------------- 1 | class JudgingAssignment < ApplicationRecord 2 | belongs_to :project 3 | belongs_to :user 4 | 5 | validates :user_id, presence: true 6 | validates :project_id, presence: true 7 | end 8 | -------------------------------------------------------------------------------- /app/views/hardware_items/_hardware_item.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.extract! hardware_item, :id, :name, :count, :link, :category, :available, :uid, :created_at, :updated_at 2 | json.url hardware_item_url(hardware_item, format: :json) 3 | -------------------------------------------------------------------------------- /db/migrate/20190721155954_add_display_name_to_feature_flags.rb: -------------------------------------------------------------------------------- 1 | class AddDisplayNameToFeatureFlags < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :feature_flags, :display_name, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20190818212123_add_pronoun_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddPronounToEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_applications, :pronoun, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20190818212159_remove_sex_from_event_applications.rb: -------------------------------------------------------------------------------- 1 | class RemoveSexFromEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :event_applications, :sex, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20190909193239_remove_team_members_from_projects.rb: -------------------------------------------------------------------------------- 1 | class RemoveTeamMembersFromProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :team_members, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191003051058_add_event_id_to_event_attendance.rb: -------------------------------------------------------------------------------- 1 | class AddEventIdToEventAttendance < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_attendances, :event_id, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/controllers/event_attendance_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EventAttendanceControllerTest < ActionDispatch::IntegrationTest 4 | # test "the truth" do 5 | # assert true 6 | # end 7 | end 8 | -------------------------------------------------------------------------------- /app/assets/stylesheets/custom_rsvp.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the CustomRSVP controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /app/views/hardware_items/edit.html.erb: -------------------------------------------------------------------------------- 1 |

Editing Hardware Item

2 | 3 | <%= render 'form', hardware_item: @hardware_item %> 4 | 5 | <%= link_to 'Show', @hardware_item %> | 6 | <%= link_to 'Back', hardware_items_path %> 7 | -------------------------------------------------------------------------------- /db/migrate/20170531224502_add_urgency_to_mentorship_requests.rb: -------------------------------------------------------------------------------- 1 | class AddUrgencyToMentorshipRequests < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :mentorship_requests, :urgency, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20170719225344_hardware_skills.rb: -------------------------------------------------------------------------------- 1 | class HardwareSkills < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :event_applications, :hardware_skills_list, :string, array:true, default: '{}' 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20180804185413_drop_active_storage.rb: -------------------------------------------------------------------------------- 1 | class DropActiveStorage < ActiveRecord::Migration[5.2] 2 | def change 3 | drop_table :active_storage_attachments 4 | drop_table :active_storage_blobs 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20191010222403_add_checked_in_to_event_attendance.rb: -------------------------------------------------------------------------------- 1 | class AddCheckedInToEventAttendance < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_attendances, :checked_in, :boolean 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20200126192626_add_tag_to_judging_assignments.rb: -------------------------------------------------------------------------------- 1 | class AddTagToJudgingAssignments < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :judging_assignments, :tag, :string, :null => true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20221109013144_change_uid_to_string_in_hardware_items.rb: -------------------------------------------------------------------------------- 1 | class ChangeUidToStringInHardwareItems < ActiveRecord::Migration[5.2] 2 | def change 3 | change_column :hardware_items, :uid, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | # See http://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file 2 | # 3 | # To ban all spiders from the entire site uncomment the next two lines: 4 | User-agent: * 5 | Allow: / 6 | -------------------------------------------------------------------------------- /app/assets/stylesheets/paper_judging.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the PaperJudging controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /db/migrate/20170722060404_add_flag_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddFlagToEventApplications < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :event_applications, :flag, :boolean, :default => false 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20171014030325_add_rsvp_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddRsvpToEventApplications < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :event_applications, :rsvp, :boolean, :default => false 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20190818212050_add_gender_pronoun_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddGenderPronounToEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_applications, :gender, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191014005345_add_message_to_hardware_checkout_logs.rb: -------------------------------------------------------------------------------- 1 | class AddMessageToHardwareCheckoutLogs < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :hardware_checkout_logs, :message, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/assets/stylesheets/event_attendance.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the EventAttendance controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /app/assets/stylesheets/slackintegration.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the slackintegration controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /app/views/partial/_hackathonlogo.html.erb: -------------------------------------------------------------------------------- 1 |
2 | <%= image_tag(HackumassWeb::Application::LOGO_PATH, height: local_assigns[:height], width: local_assigns[:width])%> 3 |
-------------------------------------------------------------------------------- /db/migrate/20170714015601_create_majors.rb: -------------------------------------------------------------------------------- 1 | class CreateMajors < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :majors do |t| 4 | t.string :name 5 | 6 | t.timestamps 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20190818213423_add_custom_fields_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddCustomFieldsToEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_applications, :custom_fields, :json 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191003044524_create_event_attendances.rb: -------------------------------------------------------------------------------- 1 | class CreateEventAttendances < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :event_attendances do |t| 4 | 5 | t.timestamps 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20191013201513_add_project_selectable_to_prizes.rb: -------------------------------------------------------------------------------- 1 | class AddProjectSelectableToPrizes < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :prizes, :project_selectable, :boolean, default: true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191013204218_update_prizes_array_in_projects.rb: -------------------------------------------------------------------------------- 1 | class UpdatePrizesArrayInProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | #change_column :projects, :prizes, :json, array: true, default: [] 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /test/fixtures/custom_rsvps.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | user: one 5 | answers: MyString 6 | 7 | two: 8 | user: two 9 | answers: MyString 10 | -------------------------------------------------------------------------------- /db/migrate/20171029034814_add_check_in_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddCheckInToEventApplications < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :event_applications, :check_in, :boolean, default: false 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20190726233422_add_mlh_agreement_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddMlhAgreementToEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_applications, :mlh_agreement, :boolean 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20191013192723_update_tech_in_projects.rb: -------------------------------------------------------------------------------- 1 | class UpdateTechInProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :tech 4 | add_column :projects, :tech, :json, default: '{}' 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20231002032542_rename_prize_model_fields.rb: -------------------------------------------------------------------------------- 1 | class RenamePrizeModelFields < ActiveRecord::Migration[5.2] 2 | def change 3 | rename_column :prizes, :name, :award 4 | rename_column :prizes, :criteria, :title 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/_mentorship_notification.json.jbuilder: -------------------------------------------------------------------------------- 1 | json.extract! mentorship_notification, :id, :user_id, :tech, :all, :created_at, :updated_at 2 | json.url mentorship_notification_url(mentorship_notification, format: :json) 3 | -------------------------------------------------------------------------------- /app/assets/stylesheets/mentorship_notifications.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the MentorshipNotifications controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | -------------------------------------------------------------------------------- /config/initializers/filter_parameter_logging.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Configure sensitive parameters which will be filtered from the log file. 4 | Rails.application.config.filter_parameters += [:password] 5 | -------------------------------------------------------------------------------- /db/migrate/20180711001332_add_resume_file_size_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddResumeFileSizeToEventApplications < ActiveRecord::Migration[5.1] 2 | def change 3 | add_column :event_applications, :resume_file_size, :integer 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20180818171735_add_user_graduation_year_to_event_application.rb: -------------------------------------------------------------------------------- 1 | class AddUserGraduationYearToEventApplication < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_applications, :education_lvl, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20181011233048_add_power_tableid_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddPowerTableidToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :power, :boolean 4 | add_column :projects, :table_id, :integer 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20200121200442_update_judge_assignment_primary_key.rb: -------------------------------------------------------------------------------- 1 | class UpdateJudgeAssignmentPrimaryKey < ActiveRecord::Migration[5.2] 2 | def change 3 | add_index :judging_assignments, ["user_id", "project_id"], :unique => true 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20231008213425_add_consent_to_marketing_emails_to_users.rb: -------------------------------------------------------------------------------- 1 | class AddConsentToMarketingEmailsToUsers < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :emailMarketingConsent, :boolean, default: false 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | # Add your own tasks in files placed in lib/tasks ending in .rake, 2 | # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake. 3 | 4 | require_relative 'config/application' 5 | 6 | Rails.application.load_tasks 7 | -------------------------------------------------------------------------------- /db/migrate/20170714015410_create_universities.rb: -------------------------------------------------------------------------------- 1 | class CreateUniversities < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :universities do |t| 4 | t.string :name 5 | 6 | t.timestamps 7 | end 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20221013150340_add_mlh_communications_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddMlhCommunicationsToEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :event_applications, :mlh_communications, :boolean 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/assets/javascripts/custom_rsvp.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /app/assets/javascripts/paper_judging.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /app/views/events/new.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | <%= render 'form', event: @event %> 7 |
8 | 9 | 10 | <%= link_to 'Back', events_path %> 11 | -------------------------------------------------------------------------------- /bin/rake: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError => e 5 | raise unless e.message.include?('spring') 6 | end 7 | require_relative '../config/boot' 8 | require 'rake' 9 | Rake.application.run 10 | -------------------------------------------------------------------------------- /db/migrate/20181011053411_edit_project_fields.rb: -------------------------------------------------------------------------------- 1 | class EditProjectFields < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :prize, :string 4 | add_column :projects, :prizes, :string, array:true, default: '{}' 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20191013203003_update_prizes_in_projects.rb: -------------------------------------------------------------------------------- 1 | class UpdatePrizesInProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :prizes 4 | add_column :projects, :prizes, :json, array: true, default: [] 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /test/fixtures/mentorship_notifications.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | user: one 5 | tech: 6 | all: false 7 | 8 | two: 9 | user: two 10 | tech: 11 | all: false 12 | -------------------------------------------------------------------------------- /app/assets/javascripts/event_attendance.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /app/assets/javascripts/slackintegration.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /app/assets/javascripts/mentorship_notifications.coffee: -------------------------------------------------------------------------------- 1 | # Place all the behaviors and hooks related to the matching controller here. 2 | # All this logic will automatically be available in application.js. 3 | # You can use CoffeeScript in this file: http://coffeescript.org/ 4 | -------------------------------------------------------------------------------- /db/migrate/20170522053550_add_other_text_field_option_to_event_applications.rb: -------------------------------------------------------------------------------- 1 | class AddOtherTextFieldOptionToEventApplications < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :event_applications, :programming_skills_other_field, :string 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /db/migrate/20170525164515_add_type_to_mentorship_requests.rb: -------------------------------------------------------------------------------- 1 | class AddTypeToMentorshipRequests < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :mentorship_requests, :help_type, :string 4 | remove_column :mentorship_requests, :type 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20200117234839_create_judging_assignments.rb: -------------------------------------------------------------------------------- 1 | class CreateJudgingAssignments < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :judging_assignments do |t| 4 | t.integer :user_id 5 | t.integer :project_id 6 | end 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /db/migrate/20180909180945_add_rsv_pand_check_in_to_user.rb: -------------------------------------------------------------------------------- 1 | class AddRsvPandCheckInToUser < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :rsvp, :boolean, default: false 4 | add_column :users, :check_in, :boolean, default: false 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20191013193206_update_tech_default_in_projects.rb: -------------------------------------------------------------------------------- 1 | class UpdateTechDefaultInProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | change_column_default( 4 | :projects, 5 | :tech, 6 | from: "{}", 7 | to: []) 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20180928153649_change_events_fields.rb: -------------------------------------------------------------------------------- 1 | class ChangeEventsFields < ActiveRecord::Migration[5.2] 2 | def change 3 | rename_column :events, :time, :start_time 4 | add_column :events, :end_time, :datetime 5 | add_column :events, :host, :string 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20190915231752_create_custom_rsvp.rb: -------------------------------------------------------------------------------- 1 | class CreateCustomRsvp < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :custom_rsvps do |t| 4 | t.json :answers 5 | end 6 | add_reference :custom_rsvps, :user, foreign_key: true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /app/views/events/edit.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | <%= render 'form', event: @event %> 7 |
8 | 9 | <%= link_to 'Show', @event %> | 10 | <%= link_to 'Back', events_path %> 11 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/new.html.erb: -------------------------------------------------------------------------------- 1 | 4 | <%= render 'form', mentorship_notification: @mentorship_notification %> 5 | <%= link_to 'Back', mentorship_notifications_path, class: 'btn btn-danger'%> 6 | -------------------------------------------------------------------------------- /db/migrate/20180807223040_create_feature_flags.rb: -------------------------------------------------------------------------------- 1 | class CreateFeatureFlags < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :feature_flags do |t| 4 | t.string :name 5 | t.boolean :value 6 | 7 | t.timestamps 8 | end 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /db/migrate/20191013204303_update_prizes_won_array_in_projects.rb: -------------------------------------------------------------------------------- 1 | class UpdatePrizesWonArrayInProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :prizes_won 4 | add_column :projects, :prizes_won, :json, array: true, default: [] 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20231008224238_rename_email_marketing_consent_to_match_naming_convention.rb: -------------------------------------------------------------------------------- 1 | class RenameEmailMarketingConsentToMatchNamingConvention < ActiveRecord::Migration[5.2] 2 | def change 3 | rename_column :users, :emailMarketingConsent, :email_marketing_consent 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /app/views/hardware_items/new.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | <%= render 'form', hardware_item: @hardware_item %> 6 | 7 | <%= link_to 'Back', hardware_items_path, class: 'btn btn-default', style: 'color: #2196F3' %> 8 | -------------------------------------------------------------------------------- /app/views/pages/permissions.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | <%= render 'shared/permissions' %> 7 |
8 | 9 | <%= link_to 'Return to Admin Page', admin_path, class: 'btn btn-secondary'%> -------------------------------------------------------------------------------- /config/initializers/ransack.rb: -------------------------------------------------------------------------------- 1 | # app/config/initializers/ransack.rb 2 | 3 | Ransack.configure do |config| 4 | config.add_predicate 'contains', 5 | arel_predicate: 'contains', 6 | formatter: proc { |v| "{#{v}}" }, 7 | validator: proc { |v| v.present? }, 8 | type: :string 9 | end -------------------------------------------------------------------------------- /test/controllers/slackintegration_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class SlackintegrationControllerTest < ActionDispatch::IntegrationTest 4 | test "should get index" do 5 | get slackintegration_index_url 6 | assert_response :success 7 | end 8 | 9 | end 10 | -------------------------------------------------------------------------------- /app/views/prizes/new.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | <%= render 'form', prize: @prize %> 7 |
8 | 9 |
10 |
11 | <%= link_to 'Back', prizes_path, class: 'btn btn-secondary'%> 12 | -------------------------------------------------------------------------------- /db/migrate/20200128031347_update_custom_scores_to_judgements.rb: -------------------------------------------------------------------------------- 1 | class UpdateCustomScoresToJudgements < ActiveRecord::Migration[5.2] 2 | def change 3 | change_column_default( 4 | :judgements, 5 | :custom_scores, 6 | from: nil, 7 | to: "{}") 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/fixtures/hardware_checkout_logs.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | user: one 5 | hardware_item: one 6 | action: MyString 7 | 8 | two: 9 | user: two 10 | hardware_item: two 11 | action: MyString 12 | -------------------------------------------------------------------------------- /config/initializers/cookies_serializer.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Specify a serializer for the signed and encrypted cookie jars. 4 | # Valid options are :json, :marshal, and :hybrid. 5 | Rails.application.config.action_dispatch.cookies_serializer = :json 6 | -------------------------------------------------------------------------------- /db/migrate/20191003222330_remove_slack_from_user.rb: -------------------------------------------------------------------------------- 1 | class RemoveSlackFromUser < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :users, :slack 4 | add_column :users, :slack_id, :string, null: true 5 | add_column :users, :slack_username, :string, null: true 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20231009025205_rename_email_marketing_consent_to_non_transactional_email_consent.rb: -------------------------------------------------------------------------------- 1 | class RenameEmailMarketingConsentToNonTransactionalEmailConsent < ActiveRecord::Migration[5.2] 2 | def change 3 | rename_column :users, :email_marketing_consent, :non_transactional_email_consent 4 | end 5 | end 6 | -------------------------------------------------------------------------------- /bin/rails: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | begin 3 | load File.expand_path('../spring', __FILE__) 4 | rescue LoadError => e 5 | raise unless e.message.include?('spring') 6 | end 7 | APP_PATH = File.expand_path('../config/application', __dir__) 8 | require_relative '../config/boot' 9 | require 'rails/commands' 10 | -------------------------------------------------------------------------------- /config/environment.rb: -------------------------------------------------------------------------------- 1 | # Load the Rails application. 2 | require_relative 'application' 3 | 4 | # Initialize the Rails application. 5 | Rails.application.initialize! 6 | 7 | # remove fields_with_error divs 8 | ActionView::Base.field_error_proc = Proc.new do |html_tag, instance| 9 | html_tag.html_safe 10 | end -------------------------------------------------------------------------------- /app/views/hardware_items/_barcode.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
<%= @hardware_item.name %>
3 |
4 |
<%= @hardware_item.uid %>
5 |
-------------------------------------------------------------------------------- /app/views/layouts/mailer.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 8 | 9 | 10 | 11 | <%= yield %> 12 | 13 | 14 | -------------------------------------------------------------------------------- /db/migrate/20190818222059_update_custom_fields_for_event_applications.rb: -------------------------------------------------------------------------------- 1 | class UpdateCustomFieldsForEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | change_column_default( 4 | :event_applications, 5 | :custom_fields, 6 | from: nil, 7 | to: "{}") 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /db/migrate/20170701032834_remove_default_value_in_boolean_value.rb: -------------------------------------------------------------------------------- 1 | class RemoveDefaultValueInBooleanValue < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :event_applications, :interested_in_hardware_hacks, :boolean 4 | add_column :event_applications, :interested_in_hardware_hacks, :boolean 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /app/controllers/users_controller.rb: -------------------------------------------------------------------------------- 1 | class UsersController < ApplicationController 2 | before_action :authenticate_user! 3 | 4 | def go_to_forgot 5 | current_user.send_reset_password_instructions 6 | sign_out current_user 7 | flash[:notice] = "Send an email to you" 8 | redirect_to index_path 9 | end 10 | end -------------------------------------------------------------------------------- /db/migrate/20180808024842_create_projects.rb: -------------------------------------------------------------------------------- 1 | class CreateProjects < ActiveRecord::Migration[5.1] 2 | def change 3 | create_table :projects do |t| 4 | t.string :title 5 | t.string :description 6 | t.string :link 7 | t.string :team_members 8 | 9 | t.timestamps 10 | end 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /db/migrate/20200126201720_update_assignment_index.rb: -------------------------------------------------------------------------------- 1 | class UpdateAssignmentIndex < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_index :judging_assignments, name: "index_judging_assignments_on_user_id_and_project_id" 4 | add_index :judging_assignments, ["user_id", "project_id", "tag"], :unique => true 5 | end 6 | end 7 | -------------------------------------------------------------------------------- /db/migrate/20170512164743_remove_item_upc_from_hardware_checkouts.rb: -------------------------------------------------------------------------------- 1 | class RemoveItemUpcFromHardwareCheckouts < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :hardware_checkouts, :user_email 4 | remove_column :hardware_checkouts, :item_upc 5 | remove_column :hardware_checkouts, :checked_out_by 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20190819205021_modify_default_value_for_custom_fields_in_event_applications.rb: -------------------------------------------------------------------------------- 1 | class ModifyDefaultValueForCustomFieldsInEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | change_column_default( 4 | :event_applications, 5 | :custom_fields, 6 | from: "{}", 7 | to: nil) 8 | end 9 | end 10 | -------------------------------------------------------------------------------- /test/fixtures/mentorship_requests.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | user_id: 1 5 | mentor_id: 1 6 | title: MyString 7 | type: 8 | status: MyString 9 | 10 | two: 11 | user_id: 1 12 | mentor_id: 1 13 | title: MyString 14 | type: 15 | status: MyString 16 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # Files to ignore when building the docker container 2 | 3 | # Ignores Git files 4 | .git 5 | .gitignore 6 | README.md 7 | 8 | # Ignore the docker-compose postgres volume 9 | /db/postgres 10 | 11 | # Ignore all logfiles and tempfiles. 12 | /log/* 13 | /tmp/* 14 | !/log/.keep 15 | !/tmp/.keep 16 | 17 | # 18 | # OS X 19 | # 20 | .DS_Store -------------------------------------------------------------------------------- /db/migrate/20171030002802_create_emails.rb: -------------------------------------------------------------------------------- 1 | class CreateEmails < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :emails do |t| 4 | t.string :subject 5 | t.string :message 6 | t.string :mailing_list 7 | t.string :status 8 | t.string :sent_by 9 | 10 | t.timestamps 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20180909190233_create_prizes.rb: -------------------------------------------------------------------------------- 1 | class CreatePrizes < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :prizes do |t| 4 | t.string :name 5 | t.string :description 6 | t.string :criteria 7 | t.string :sponsor 8 | t.integer :priority 9 | 10 | t.timestamps 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /config/initializers/formats_filter.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | # see https://groups.google.com/forum/#!topic/rubyonrails-security/zRNVOUhKHrg 4 | 5 | ActionDispatch::Request.prepend(Module.new do 6 | def formats 7 | super().select do |format| 8 | format.symbol || format.ref == "*/*" 9 | end 10 | end 11 | end) -------------------------------------------------------------------------------- /db/migrate/20170614024614_numbers.rb: -------------------------------------------------------------------------------- 1 | class Numbers < ActiveRecord::Migration[5.0] 2 | def change 3 | add_column :event_applications, :accepted_applicants, :integer, default: 0 4 | add_column :event_applications, :rejected_applicants, :integer, default: 0 5 | add_column :event_applications, :waitlisted_applicants, :integer, default: 0 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /db/migrate/20180929224811_add_tech_to_mentorship_requests.rb: -------------------------------------------------------------------------------- 1 | class AddTechToMentorshipRequests < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :mentorship_requests, :description, :string 4 | add_column :mentorship_requests, :tech, :string, array:true, default: '{}' 5 | remove_column :mentorship_requests, :help_type, :string 6 | end 7 | end 8 | -------------------------------------------------------------------------------- /test/fixtures/hardware_checkouts.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | user_id: 1 5 | user_email: MyString 6 | item_id: 1 7 | item_upc: 1 8 | checked_out_by: 1 9 | 10 | two: 11 | user_id: 1 12 | user_email: MyString 13 | item_id: 1 14 | item_upc: 1 15 | checked_out_by: 1 16 | -------------------------------------------------------------------------------- /test/test_helper.rb: -------------------------------------------------------------------------------- 1 | ENV['RAILS_ENV'] ||= 'test' 2 | require File.expand_path('../../config/environment', __FILE__) 3 | require 'rails/test_help' 4 | 5 | class ActiveSupport::TestCase 6 | # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order. 7 | fixtures :all 8 | 9 | # Add more helper methods to be used by all tests here... 10 | end 11 | -------------------------------------------------------------------------------- /docker_shell.sh: -------------------------------------------------------------------------------- 1 | CURR_DIR="${PWD##*/}" 2 | 3 | RUNNING_ID="docker ps --format '{{.ID}}' -f 'ancestor=${CURR_DIR}-rails'" 4 | if [[ "$RUNNING_ID" == "" ]]; then 5 | echo Running new container instance 6 | ./docker/docker_run.sh ${@:-/bin/bash} 7 | else 8 | echo Connecting to running container instance 9 | docker-compose exec rails ${@:-/bin/bash} 10 | fi 11 | -------------------------------------------------------------------------------- /test/fixtures/event_applications.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | user_id: 5 | name: 6 | university: 7 | major: 8 | grad_year: 9 | food_restrictions: 10 | 11 | two: 12 | user_id: 13 | name: 14 | university: 15 | major: 16 | grad_year: 17 | food_restrictions: 18 | -------------------------------------------------------------------------------- /test/fixtures/prizes.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | award: MyString 5 | description: MyString 6 | title: MyString 7 | sponsor: MyString 8 | priority: 9 | 10 | two: 11 | award: MyString 12 | description: MyString 13 | title: MyString 14 | sponsor: MyString 15 | priority: 16 | -------------------------------------------------------------------------------- /db/migrate/20170709180501_create_events.rb: -------------------------------------------------------------------------------- 1 | class CreateEvents < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :events do |t| 4 | t.string :title 5 | t.string :description 6 | t.string :location 7 | t.string :time 8 | t.string :created_by 9 | t.string :thumbnail 10 | 11 | t.timestamps 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /db/migrate/20191014004914_create_hardware_checkout_logs.rb: -------------------------------------------------------------------------------- 1 | class CreateHardwareCheckoutLogs < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :hardware_checkout_logs do |t| 4 | t.references :user, foreign_key: true 5 | t.references :hardware_item, foreign_key: true 6 | t.string :action 7 | 8 | t.timestamps 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20191018035814_create_mentorship_notifications.rb: -------------------------------------------------------------------------------- 1 | class CreateMentorshipNotifications < ActiveRecord::Migration[5.2] 2 | def change 3 | create_table :mentorship_notifications do |t| 4 | t.references :user, foreign_key: true 5 | t.json :tech, array: true, default: [] 6 | t.boolean :all 7 | 8 | t.timestamps 9 | end 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /test/controllers/navigation_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class NavigationControllerTest < ActionDispatch::IntegrationTest 4 | test "should get index" do 5 | get navigation_index_url 6 | assert_response :success 7 | end 8 | 9 | test "should get about" do 10 | get navigation_about_url 11 | assert_response :success 12 | end 13 | 14 | end 15 | -------------------------------------------------------------------------------- /db/migrate/20170524233707_create_mentorship_requests.rb: -------------------------------------------------------------------------------- 1 | class CreateMentorshipRequests < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :mentorship_requests do |t| 4 | t.integer :user_id 5 | t.integer :mentor_id 6 | t.string :title 7 | t.string :type 8 | t.string :status 9 | 10 | t.timestamps 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20180930015740_add_attachment_screenshot_to_mentorship_requests.rb: -------------------------------------------------------------------------------- 1 | class AddAttachmentScreenshotToMentorshipRequests < ActiveRecord::Migration[5.2] 2 | def self.up 3 | change_table :mentorship_requests do |t| 4 | t.attachment :screenshot 5 | end 6 | end 7 | 8 | def self.down 9 | remove_attachment :mentorship_requests, :screenshot 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /db/migrate/20200206212235_devise_token_auth_edit_users.rb: -------------------------------------------------------------------------------- 1 | class DeviseTokenAuthEditUsers < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :users, :provider, :string, :null => false, :default => "email" 4 | change_table(:users) do |t| 5 | t.string :uid, :null => false, :default => "" 6 | 7 | ## Tokens 8 | t.json :tokens 9 | end 10 | end 11 | end -------------------------------------------------------------------------------- /db/migrate/20170424014343_create_hardware_items.rb: -------------------------------------------------------------------------------- 1 | class CreateHardwareItems < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :hardware_items do |t| 4 | t.integer :upc 5 | t.string :name 6 | t.string :link 7 | t.string :category 8 | t.integer :count 9 | t.boolean :available 10 | 11 | t.timestamps 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /test/fixtures/hardware_items.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | name: MyString 5 | count: 1 6 | link: MyString 7 | category: MyString 8 | available: false 9 | uid: 1 10 | 11 | two: 12 | name: MyString 13 | count: 1 14 | link: MyString 15 | category: MyString 16 | available: false 17 | uid: 1 18 | -------------------------------------------------------------------------------- /app/views/shared/home_pages/_denied_view.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | <%= render file: HackumassWeb::Application::copy_for('shared/home_pages/denied_participant') %> 7 |
8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /db/migrate/20170427165952_create_hardware_checkouts.rb: -------------------------------------------------------------------------------- 1 | class CreateHardwareCheckouts < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :hardware_checkouts do |t| 4 | t.integer :user_id 5 | t.string :user_email 6 | t.integer :item_id 7 | t.integer :item_upc 8 | t.integer :checked_out_by 9 | 10 | t.timestamps 11 | end 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20180909211902_add_paperclip_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddPaperclipToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :projectimage_file_name, :string 4 | add_column :projects, :projectimage_content_type, :string 5 | add_column :projects, :projectimage_file_size, :integer 6 | add_column :projects, :projectimage_updated_at, :datetime 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /test/fixtures/emails.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | subject: MyString 5 | message: MyString 6 | mailing_list: MyString 7 | status: MyString 8 | sent_by: MyString 9 | 10 | two: 11 | subject: MyString 12 | message: MyString 13 | mailing_list: MyString 14 | status: MyString 15 | sent_by: MyString 16 | -------------------------------------------------------------------------------- /app/views/shared/home_pages/_undecided_view.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | <%= render file: HackumassWeb::Application::copy_for('shared/home_pages/undecided_participant') %> 7 |
8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /app/views/shared/home_pages/_waitlisted_view.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | <%= render file: HackumassWeb::Application::copy_for('shared/home_pages/waitlisted_participant') %> 7 |
8 |
9 |
10 |
11 | -------------------------------------------------------------------------------- /db/migrate/20170512171123_add_references_to_hardware_checkouts.rb: -------------------------------------------------------------------------------- 1 | class AddReferencesToHardwareCheckouts < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :hardware_checkouts, :user_id 4 | remove_column :hardware_checkouts, :item_id 5 | add_reference :hardware_checkouts, :user, foreign_key: true 6 | add_reference :hardware_checkouts, :hardware_item, foreign_key: true 7 | end 8 | end 9 | -------------------------------------------------------------------------------- /config/initializers/recaptcha.rb: -------------------------------------------------------------------------------- 1 | Recaptcha.configure do |config| 2 | if ENV['RAILS_ENV'] == 'production' 3 | config.site_key = ENV['RECAPTCHA_SITE_KEY'] 4 | config.secret_key = ENV['RECAPTCHA_SECRET_KEY'] 5 | else 6 | config.site_key = 'development_site_key' 7 | config.secret_key = 'development_secret_key' 8 | config.skip_verify_env << 'development' 9 | end 10 | end -------------------------------------------------------------------------------- /test/fixtures/users.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /db/migrate/20170416004110_create_event_applications.rb: -------------------------------------------------------------------------------- 1 | class CreateEventApplications < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :event_applications do |t| 4 | t.integer :user_id 5 | t.string :name 6 | t.string :university 7 | t.string :major 8 | t.string :grad_year 9 | t.string :food_restrictions 10 | 11 | t.timestamps 12 | end 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /test/fixtures/judgements.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /app/views/emails/new.html.erb: -------------------------------------------------------------------------------- 1 |

New Email

2 | 3 |
4 | 5 | Just FYI: This email will not be sent automatically. Once you create the email you will have to preview it and then send it. 6 |
7 | 8 | <%= render 'form', email: @email %> 9 | 10 | <%= link_to 'Back', emails_path %> 11 | -------------------------------------------------------------------------------- /test/fixtures/event_attendances.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | # This model initially had no columns defined. If you add columns to the 4 | # model remove the '{}' from the fixture names and add the columns immediately 5 | # below each fixture, per the syntax in the comments below 6 | # 7 | one: {} 8 | # column: value 9 | # 10 | two: {} 11 | # column: value 12 | -------------------------------------------------------------------------------- /app/assets/javascripts/cable.js: -------------------------------------------------------------------------------- 1 | // Action Cable provides the framework to deal with WebSockets in Rails. 2 | // You can generate new channels where WebSocket features live using the rails generate channel command. 3 | // 4 | //= require action_cable 5 | //= require_self 6 | //= require_tree ./channels 7 | 8 | (function() { 9 | this.App || (this.App = {}); 10 | 11 | App.cable = ActionCable.createConsumer(); 12 | 13 | }).call(this); 14 | -------------------------------------------------------------------------------- /app/views/partial/_hackathonfooter.html.erb: -------------------------------------------------------------------------------- 1 | 2 | Made with ❤ by the <%= HackumassWeb::Application::HACKATHON_NAME %> Tech Team. 3 | 4 | 5 | Powered by the 6 | 7 | <%= image_tag("dashboard-logo.png", height: 16, class: 'dashboard-logo') %> 8 | FuseUMass Platform 9 | 10 | -------------------------------------------------------------------------------- /test/fixtures/events.yml: -------------------------------------------------------------------------------- 1 | # Read about fixtures at http://api.rubyonrails.org/classes/ActiveRecord/FixtureSet.html 2 | 3 | one: 4 | title: MyString 5 | description: MyString 6 | location: MyString 7 | time: MyString 8 | created_by: MyString 9 | thumbnail: MyString 10 | 11 | two: 12 | title: MyString 13 | description: MyString 14 | location: MyString 15 | time: MyString 16 | created_by: MyString 17 | thumbnail: MyString 18 | -------------------------------------------------------------------------------- /app/helpers/application_helper.rb: -------------------------------------------------------------------------------- 1 | module ApplicationHelper 2 | # Called when deciding colors for alert badge 3 | def bootstrap_class_for(flash_type) 4 | case flash_type 5 | when 'success', 'notice' 6 | 'alert-success' # Green 7 | when 'error', 'alert' 8 | 'alert-danger' # Red 9 | when 'warning' 10 | 'alert-warning' # Yellow 11 | else 12 | flash_type.to_s 13 | end 14 | end 15 | 16 | end 17 | -------------------------------------------------------------------------------- /db/migrate/20191017194803_fix_defaults.rb: -------------------------------------------------------------------------------- 1 | class FixDefaults < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :projects, :tech 4 | remove_column :projects, :prizes 5 | remove_column :projects, :prizes_won 6 | add_column :projects, :tech, :json, array: true, default: [] 7 | add_column :projects, :prizes, :json, array: true, default: [] 8 | add_column :projects, :prizes_won, :json, array: true, default: [] 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/edit.html.erb: -------------------------------------------------------------------------------- 1 | 4 | <%= render 'form', mentorship_notification: @mentorship_notification %> 5 | 6 | <%= link_to 'Click here to DISABLE ALL NOTIFICATIONS', @mentorship_notification, method: :delete, data: { confirm: 'Are you sure?' }, class: 'btn btn-primary', style: "display: inline-block" %> 7 | <%= link_to 'Back', mentorship_requests_path, class: 'btn btn-danger' %> 8 | -------------------------------------------------------------------------------- /docker/docker_set_up.sh: -------------------------------------------------------------------------------- 1 | # Work around for the pesky "server is already running bug" 2 | rm tmp/pids/server.pid 3 | 4 | if [ \( ! -f "db/postgres/.built" \) ]; then 5 | echo Development db or test db does not exist. Running initial setup... && 6 | bundle exec rake db:create && 7 | bundle exec rake db:migrate && 8 | bundle exec rake db:setup && 9 | bundle exec rake feature_flags:load_flags 10 | touch db/postgres/.built 11 | fi 12 | 13 | bundle exec rails server -b 0.0.0.0 -------------------------------------------------------------------------------- /app/controllers/api/api_controller.rb: -------------------------------------------------------------------------------- 1 | module Api 2 | class Api::ApiController < ApplicationController 3 | include DeviseTokenAuth::Concerns::SetUserByToken 4 | 5 | skip_before_action :auth_user 6 | before_action :configure_permitted_parameters, if: :devise_controller? 7 | 8 | def configure_permitted_parameters 9 | devise_parameter_sanitizer.permit(:sign_in, keys: [:email, :password]) 10 | end 11 | 12 | def index 13 | render json: {} 14 | end 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /lib/tasks/template_email.rake: -------------------------------------------------------------------------------- 1 | namespace :template_email do 2 | 3 | task :send => :environment do 4 | email_count = 0 5 | 6 | # all_checkouts = HardwareCheckout.all 7 | # all_checkouts.each do |checkout| 8 | # if checkout.user.has_slack? == false 9 | # UserMailer.template_email(user, 'URGENT Slack Needed For Hardware').deliver_now 10 | # email_count++ 11 | # end 12 | # end 13 | # puts "Emails sent: #{email_count}" 14 | end 15 | 16 | end 17 | -------------------------------------------------------------------------------- /app/controllers/registrations_controller.rb: -------------------------------------------------------------------------------- 1 | class RegistrationsController < Devise::RegistrationsController 2 | def create 3 | if verify_recaptcha 4 | super 5 | else 6 | build_resource(sign_up_params) 7 | clean_up_passwords(resource) 8 | flash.now[:alert] = "There was an error with the recaptcha code below. Please re-enter the code." 9 | flash.delete :recaptcha_error 10 | render :new 11 | end 12 | end 13 | end -------------------------------------------------------------------------------- /app/models/event.rb: -------------------------------------------------------------------------------- 1 | class Event < ApplicationRecord 2 | # TODO: Add a bunch of checks here 3 | # after_validation :remove_image_repeat 4 | validates_presence_of :start_time, :location, :title, :description 5 | has_many :event_attendances 6 | has_many :users, through: :event_attendances 7 | def self.to_csv 8 | CSV.generate do |csv| 9 | 10 | csv << Event.attribute_names 11 | 12 | Event.find_each do |event| 13 | csv << event.attributes.values 14 | end 15 | end 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /lib/tasks/csv.rake: -------------------------------------------------------------------------------- 1 | namespace :csv do 2 | desc "" 3 | task rsvp: :environment do 4 | require 'csv' 5 | CSV.open("rsvp.csv", "w") do |csv| 6 | @all_applications = EventApplication.select(:name, :email, :university).where({rsvp: true}) 7 | csv << ['Applicant Name', 'Email', 'Univeristy'] 8 | @all_applications.each do |applicant| 9 | csv << [applicant.name, applicant.email, applicant.university] 10 | end 11 | end 12 | end 13 | 14 | end 15 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/show.html.erb: -------------------------------------------------------------------------------- 1 |

<%= notice %>

2 | 3 |

4 | User: 5 | <%= @mentorship_notification.user %> 6 |

7 | 8 |

9 | Tech: 10 | <%= @mentorship_notification.tech %> 11 |

12 | 13 |

14 | All: 15 | <%= @mentorship_notification.all %> 16 |

17 | 18 | <%= link_to 'Edit', edit_mentorship_notification_path(@mentorship_notification) %> | 19 | <%= link_to 'Back', mentorship_notifications_path %> 20 | -------------------------------------------------------------------------------- /app/views/devise/unlocks/new.html.erb: -------------------------------------------------------------------------------- 1 |

Resend unlock instructions

2 | 3 | <%= form_for(resource, as: resource_name, url: unlock_path(resource_name), html: { method: :post }) do |f| %> 4 | <%= devise_error_messages! %> 5 | 6 |
7 | <%= f.label :email %>
8 | <%= f.email_field :email, autofocus: true %> 9 |
10 | 11 |
12 | <%= f.submit "Resend unlock instructions" %> 13 |
14 | <% end %> 15 | 16 | <%= render "devise/shared/links" %> 17 | -------------------------------------------------------------------------------- /app/models/mentorship_request.rb: -------------------------------------------------------------------------------- 1 | class MentorshipRequest < ApplicationRecord 2 | validates_presence_of :user, :title, :status, :urgency 3 | has_attached_file :screenshot 4 | validates_attachment_content_type :screenshot, :content_type => /image/ 5 | belongs_to :user 6 | 7 | def urgency_str 8 | if urgency == 0 9 | return "Not Urgent" 10 | elsif urgency == 1 11 | return "Mildly Urgent" 12 | elsif urgency == 2 13 | return "Urgent" 14 | else 15 | return "Drastically Urgent" 16 | end 17 | end 18 | 19 | end 20 | -------------------------------------------------------------------------------- /db/migrate/20200618042555_add_confirmable_to_devise.rb: -------------------------------------------------------------------------------- 1 | class AddConfirmableToDevise < ActiveRecord::Migration[5.2] 2 | def up 3 | add_column :users, :confirmation_token, :string 4 | add_column :users, :confirmed_at, :datetime 5 | add_column :users, :confirmation_sent_at, :datetime 6 | add_index :users, :confirmation_token, unique: true 7 | User.update_all confirmed_at: DateTime.now 8 | end 9 | 10 | def down 11 | remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /db/migrate/20181004212657_add_new_fields_to_projects.rb: -------------------------------------------------------------------------------- 1 | class AddNewFieldsToProjects < ActiveRecord::Migration[5.2] 2 | def change 3 | add_column :projects, :inspiration, :string 4 | add_column :projects, :does_what, :string 5 | add_column :projects, :built_how, :string 6 | add_column :projects, :challenges, :string 7 | add_column :projects, :accomplishments, :string 8 | add_column :projects, :learned, :string 9 | add_column :projects, :next, :string 10 | add_column :projects, :built_with, :string 11 | end 12 | end 13 | -------------------------------------------------------------------------------- /config/initializers/wrap_parameters.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # This file contains settings for ActionController::ParamsWrapper which 4 | # is enabled by default. 5 | 6 | # Enable parameter wrapping for JSON. You can disable this by setting :format to an empty array. 7 | ActiveSupport.on_load(:action_controller) do 8 | wrap_parameters format: [:json] 9 | end 10 | 11 | # To enable root element in JSON for ActiveRecord objects. 12 | # ActiveSupport.on_load(:active_record) do 13 | # self.include_root_in_json = true 14 | # end 15 | -------------------------------------------------------------------------------- /bin/spring: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | 3 | # This file loads spring without using Bundler, in order to be fast. 4 | # It gets overwritten when you run the `spring binstub` command. 5 | 6 | unless defined?(Spring) 7 | require 'rubygems' 8 | require 'bundler' 9 | 10 | lockfile = Bundler::LockfileParser.new(Bundler.default_lockfile.read) 11 | spring = lockfile.specs.detect { |spec| spec.name == "spring" } 12 | if spring 13 | Gem.use_paths Gem.dir, Bundler.bundle_path.to_s, *Gem.path 14 | gem 'spring', spring.version 15 | require 'spring/binstub' 16 | end 17 | end 18 | -------------------------------------------------------------------------------- /db/migrate/20170614025022_number2.rb: -------------------------------------------------------------------------------- 1 | class Number2 < ActiveRecord::Migration[5.0] 2 | def change 3 | remove_column :event_applications, :accepted_applicants, :integer 4 | remove_column :event_applications, :rejected_applicants, :integer 5 | remove_column :event_applications, :waitlisted_applicants, :integer 6 | 7 | add_column :event_applications, :accepted_applicants, :integer, default: 0 8 | add_column :event_applications, :rejected_applicants, :integer, default: 0 9 | add_column :event_applications, :waitlisted_applicants, :integer, default: 0 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /app/views/devise/confirmations/new.html.erb: -------------------------------------------------------------------------------- 1 |

Resend confirmation instructions

2 | 3 | <%= form_for(resource, as: resource_name, url: confirmation_path(resource_name), html: { method: :post }) do |f| %> 4 | <%= devise_error_messages! %> 5 | 6 |
7 | <%= f.label :email %>
8 | <%= f.email_field :email, autofocus: true, value: (resource.pending_reconfirmation? ? resource.unconfirmed_email : resource.email) %> 9 |
10 | 11 |
12 | <%= f.submit "Resend confirmation instructions" %> 13 |
14 | <% end %> 15 | 16 | <%= render "devise/shared/links" %> 17 | -------------------------------------------------------------------------------- /lib/tasks/db_clean.rake: -------------------------------------------------------------------------------- 1 | namespace :application do 2 | desc 'Clean Database' 3 | task :db_clean => :environment do 4 | 5 | # Delete all users 6 | puts "Deleting all users..." 7 | User.delete_all 8 | 9 | # Delete all event applications 10 | puts "Deleting all event applications..." 11 | EventApplication.delete_all 12 | 13 | # Delete all prizes 14 | puts "Deleting all prizes..." 15 | Prize.delete_all 16 | 17 | # Delete all projects 18 | puts "Deleting all projects..." 19 | Project.delete_all 20 | 21 | end 22 | end -------------------------------------------------------------------------------- /config/initializers/arel.rb: -------------------------------------------------------------------------------- 1 | # app/config/initializers/arel.rb 2 | 3 | require 'arel/nodes/binary' 4 | require 'arel/predications' 5 | require 'arel/visitors/postgresql' 6 | 7 | module Arel 8 | class Nodes::ContainsArray < Arel::Nodes::Binary 9 | def operator 10 | :"@>" 11 | end 12 | end 13 | 14 | class Visitors::PostgreSQL 15 | private 16 | 17 | def visit_Arel_Nodes_ContainsArray(o, collector) 18 | infix_value o, collector, ' @> ' 19 | end 20 | end 21 | 22 | module Predications 23 | def contains(other) 24 | Nodes::ContainsArray.new self, Nodes.build_quoted(other, self) 25 | end 26 | end 27 | end -------------------------------------------------------------------------------- /db/migrate/20190820044737_delete_unneeded_fields_in_event_applications.rb: -------------------------------------------------------------------------------- 1 | class DeleteUnneededFieldsInEventApplications < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :event_applications, :linkedin_url, :string 4 | remove_column :event_applications, :github_url, :string 5 | remove_column :event_applications, :prev_attendance, :boolean 6 | remove_column :event_applications, :programming_skills, :string 7 | remove_column :event_applications, :hardware_skills, :string 8 | remove_column :event_applications, :referral_info, :text 9 | remove_column :event_applications, :future_hardware_suggestion, :text 10 | end 11 | end 12 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "2.4" 2 | services: 3 | postgres: 4 | image: postgres:12 5 | environment: 6 | - POSTGRES_USER=dashboard 7 | - POSTGRES_PASSWORD=dashboardpass 8 | volumes: 9 | - ./db/postgres:/var/lib/postgresql/data 10 | healthcheck: 11 | test: ["CMD-SHELL", "pg_isready -U dashboard"] 12 | interval: 5s 13 | timeout: 5s 14 | retries: 5 15 | rails: 16 | build: 17 | context: . 18 | dockerfile: docker/Dockerfile 19 | depends_on: 20 | postgres: 21 | condition: service_healthy 22 | links: 23 | - postgres 24 | volumes: 25 | - ./:/usr/src/app 26 | ports: 27 | - "3000:3000" 28 | -------------------------------------------------------------------------------- /app/assets/javascripts/init.js: -------------------------------------------------------------------------------- 1 | /* code source: https://www.driftingruby.com/episodes/page-specific-javascript-in-ruby-on-rails */ 2 | 3 | var Page, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; 4 | Page = (function() { 5 | function Page() { 6 | this.action = bind(this.action, this); 7 | this.controller = bind(this.controller, this); 8 | } 9 | Page.prototype.controller = function() { 10 | return $('meta[name=page_specific]').attr('controller'); 11 | }; 12 | Page.prototype.action = function() { 13 | return $('meta[name=page_specific]').attr('action'); 14 | }; 15 | return Page; 16 | })(); 17 | 18 | this.page = new Page; -------------------------------------------------------------------------------- /config/database.yml: -------------------------------------------------------------------------------- 1 | # PostgreSQL 2 | # Sets the default db config to be Postgres for both Development and Production 3 | # 4 | default: &default 5 | adapter: postgresql 6 | encoding: unicode 7 | pool: 5 8 | username: dashboard 9 | password: dashboardpass 10 | host: postgres 11 | 12 | development: 13 | <<: *default 14 | database: dashboard_development 15 | 16 | # Warning: The database defined as "test" will be erased and 17 | # re-generated from your development database when you run "rake". 18 | # Do not set this db to the same as development or production. 19 | test: 20 | <<: *default 21 | database: dashboard_test 22 | 23 | production: 24 | <<: *default 25 | database: dashboard_production 26 | -------------------------------------------------------------------------------- /app/models/hardware_item.rb: -------------------------------------------------------------------------------- 1 | class HardwareItem < ApplicationRecord 2 | validates_presence_of :name, :count, :category, :location 3 | validates_numericality_of :count 4 | validates_uniqueness_of :uid 5 | 6 | has_many :hardware_checkouts, dependent: :destroy 7 | has_many :users, through: :hardware_checkouts 8 | 9 | def is_available? 10 | if count > 0 11 | 'Yes' 12 | else 13 | 'No' 14 | end 15 | end 16 | 17 | def to_csv 18 | attributes = %w{name uid} 19 | CSV.generate do |csv| 20 | item = self 21 | count = item.count 22 | while count >= 1 23 | csv << item.attributes.values_at(*attributes) 24 | count -= 1 25 | end 26 | end 27 | end 28 | 29 | end 30 | -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ruby:2.5 2 | 3 | # Installs dependencies to run Rails on the ruby:2.5 image 4 | RUN apt-get update && apt-get install -y \ 5 | build-essential \ 6 | nodejs \ 7 | postgresql-client 8 | 9 | # Configure the main working directory 10 | WORKDIR /usr/src/app 11 | 12 | # Copies the Gemfile and Gemfile.lock to the main working directory 13 | COPY Gemfile Gemfile.lock ./ 14 | 15 | # Installs gems listed in the Gemfile.lock 16 | RUN bundle install 17 | 18 | # Copies the main application to run install dependencies and rake files 19 | COPY . . 20 | 21 | # Exposes the 3000 port to access it outside of the image 22 | EXPOSE 3000 23 | 24 | # Default command that runs when the container starts 25 | CMD ["bash", "docker/docker_set_up.sh"] -------------------------------------------------------------------------------- /app/views/paper_judging/index.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 |

Generate paper judging forms

9 |

Only click this button once. You will be brought to a new page containing a PDF with judging forms for each submitted project.

10 | <%= button_to 'Generate Judging Forms', 11 | {controller: 'paper_judging', action: 'generate_forms'}, 12 | {class: 'btn btn-primary btn-block', form: {target: '_blank', id: 'makebutton', onsubmit: "onSubmit()"}} %> 13 |
14 |
15 |
16 | -------------------------------------------------------------------------------- /db/migrate/20180729035032_remove_old_variables_from_event_application.rb: -------------------------------------------------------------------------------- 1 | class RemoveOldVariablesFromEventApplication < ActiveRecord::Migration[5.2] 2 | def change 3 | remove_column :event_applications, :rsvp, :boolean 4 | remove_column :event_applications, :check_in, :boolean 5 | remove_column :event_applications, :resume_file_size, :integer 6 | remove_column :event_applications, :email, :string 7 | remove_column :event_applications, :resume_file, :binary 8 | remove_column :event_applications, :resume_file_name, :string 9 | remove_column :event_applications, :interested_in_hardware_hacks, :boolean 10 | remove_column :event_applications, :interested_hardware_hacks_list, :string 11 | 12 | add_column :event_applications, :resume, :binary 13 | end 14 | end 15 | -------------------------------------------------------------------------------- /app/views/hardware_items/_checkout_log.html.erb: -------------------------------------------------------------------------------- 1 | <% if @checkout_log.empty? %> 2 |
There is no checkout history for this item.
3 | <% end %> 4 | 5 | 6 | <% unless @checkout_log.empty? %> 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | <% end %> 16 | 17 | <% @checkout_log.each do |item| %> 18 | 19 | 20 | 21 | 22 | 23 | 24 | <% end %> 25 | 26 |
TimeUserActionMessage
<%= item.created_at.strftime('%A, %b %d at %I:%M %p')%><%= item.user.full_name.titleize %> (<%= item.user.email %>)<%= item.action %><%= item.message %>
27 | -------------------------------------------------------------------------------- /test/controllers/judging_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class JudgingControllerTest < ActionDispatch::IntegrationTest 4 | test "should get new" do 5 | get judging_new_url 6 | assert_response :success 7 | end 8 | 9 | test "should get create" do 10 | get judging_create_url 11 | assert_response :success 12 | end 13 | 14 | test "should get show" do 15 | get judging_show_url 16 | assert_response :success 17 | end 18 | 19 | test "should get edit" do 20 | get judging_edit_url 21 | assert_response :success 22 | end 23 | 24 | test "should get update" do 25 | get judging_update_url 26 | assert_response :success 27 | end 28 | 29 | test "should get destroy" do 30 | get judging_destroy_url 31 | assert_response :success 32 | end 33 | 34 | end 35 | -------------------------------------------------------------------------------- /app/views/devise/shared/_links.html.erb: -------------------------------------------------------------------------------- 1 | <%- if controller_name != 'sessions' %> 2 | <%= link_to "Already have an account? Log in", new_session_path(resource_name) %>
3 | <% end -%> 4 | 5 | <%- if devise_mapping.registerable? && controller_name != 'registrations' %> 6 | <%= link_to "Don't have an account? Sign up!", new_registration_path(resource_name)%>
7 | <% end -%> 8 | 9 | <%- if devise_mapping.recoverable? && controller_name != 'passwords' && controller_name != 'registrations' %> 10 | <%= link_to "Forgot your password?", new_password_path(resource_name) %>
11 | <% end -%> 12 | 13 | <%- if devise_mapping.omniauthable? %> 14 | <%- resource_class.omniauth_providers.each do |provider| %> 15 | <%= link_to "Sign in with #{OmniAuth::Utils.camelize(provider)}", omniauth_authorize_path(resource_name, provider) %>
16 | <% end -%> 17 | <% end -%> 18 | -------------------------------------------------------------------------------- /app/views/judging/show.html.erb: -------------------------------------------------------------------------------- 1 | 11 | 12 |
13 |
14 |

Project: <%= @score.project.title %>

15 |

Judge: <%= @score.user.full_name %>

16 | <%= render 'score', score: @score, max_width: '600px' %> 17 |
18 |
19 | 20 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files for more about ignoring files. 2 | # 3 | # If you find yourself ignoring temporary files generated by your text editor 4 | # or operating system, you probably want to add a global ignore instead: 5 | # git config --global core.excludesfile '~/.gitignore_global' 6 | 7 | # Ignore bundler config. 8 | /.bundle 9 | 10 | # Ignore docker Postgres files 11 | /db/postgres/ 12 | 13 | # Ignore all logfiles and tempfiles. 14 | /log/* 15 | /tmp/* 16 | !/log/.keep 17 | !/tmp/.keep 18 | 19 | # Ignore Byebug command history file. 20 | .byebug_history 21 | 22 | # Ignore text editor and workspace preferences files 23 | .vscode 24 | .idea 25 | 26 | *.code-workspace 27 | # Ignore macOS .DS_Store files 28 | .DS_Store 29 | 30 | # Ignore secrets file 31 | config/secrets.yml 32 | 33 | public/assets/** 34 | public/assets/.sprocket* 35 | .gitmodules 36 | -------------------------------------------------------------------------------- /bin/update: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a way to update your development environment automatically. 15 | # Add necessary update steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | puts "\n== Updating database ==" 22 | system! 'bin/rails db:migrate' 23 | 24 | puts "\n== Removing old logs and tempfiles ==" 25 | system! 'bin/rails log:clear tmp:clear' 26 | 27 | puts "\n== Restarting application server ==" 28 | system! 'bin/rails restart' 29 | end 30 | -------------------------------------------------------------------------------- /lib/tasks/reminder.rake: -------------------------------------------------------------------------------- 1 | namespace :reminder do 2 | desc "reminder email to all applicants that they haven't finish their 3 | application and the deadline is coming up" 4 | 5 | 6 | task :send_email => :environment do 7 | 8 | @users = User.all 9 | count = 0 10 | 11 | @users.each do |user| 12 | if user.has_applied? == false 13 | UserMailer.reminder_email(user,'Applications are closing soon!', "It looks like you haven’t submitted your application yet! The deadline for #{HackumassWeb::Application::HACKATHON_NAME} #{HackumassWeb::Application::HACKATHON_VERSION} is September 24th, so if you’re still interested in being part of the largest hackathon in Western Mass, please submit your application soon. We hope to see you this fall~").deliver_now 14 | count += 1 15 | end 16 | end 17 | 18 | puts "#{count} emails sent succesfully!" 19 | 20 | end 21 | 22 | end 23 | -------------------------------------------------------------------------------- /app/views/custom_rsvp/show.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 |
9 | <% if @applicant %> 10 | <%= link_to 'View Application', 11 | event_application_path(@applicant.id), 12 | class: 'btn btn-purple event-application-nav-button' %> 13 | <% else %> 14 | The user does not have an event application. 15 | <% end %> 16 |
17 |
18 |
19 | <%= render "custom_rsvp/form" %> 20 |
21 |
22 |
23 |
24 | -------------------------------------------------------------------------------- /app/views/shared/home_pages/_new_user_view.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | <% if check_feature_flag?($Applications) and @event_application_mode == 'open' %> 7 | <%= render file: HackumassWeb::Application::copy_for('shared/home_pages/new_user_applications_open') %> 8 | <% else %> 9 | <% if @event_application_mode == 'waitlist' %> 10 | <%= render file: HackumassWeb::Application::copy_for('shared/home_pages/new_user_applications_waitlisted') %> 11 | <% else %> 12 | <%= render file: HackumassWeb::Application::copy_for('shared/home_pages/new_user_applications_closed') %> 13 | <% end %> 14 | <% end %> 15 |
16 |
17 |
18 |
19 | -------------------------------------------------------------------------------- /lib/tasks/autocomplete.rake: -------------------------------------------------------------------------------- 1 | require 'csv' 2 | 3 | namespace :application do 4 | desc 'Import CSV Data from Majors & Universities to Import' 5 | task :autocomplete => :environment do 6 | 7 | # Import data for 8 | Major.delete_all 9 | csv_file_path = 'db/application_autocomplete/majors-list.csv' 10 | CSV.foreach(csv_file_path, encoding: 'iso-8859-1:utf-8') do |row| 11 | Major.create!({ 12 | :name => row[1] 13 | }) 14 | puts row[1] + " added!" 15 | end 16 | 17 | # Import data for university dropdown 18 | University.delete_all 19 | csv_file_path = 'db/application_autocomplete/colleges.csv' 20 | CSV.foreach(csv_file_path, encoding: 'iso-8859-1:utf-8') do |row| 21 | University.create!({ 22 | :name => row[1] 23 | }) 24 | puts row[1] + " added!" 25 | end 26 | 27 | end 28 | end 29 | -------------------------------------------------------------------------------- /app/views/shared/_footer.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 | 25 | -------------------------------------------------------------------------------- /app/helpers/devise_helper.rb: -------------------------------------------------------------------------------- 1 | module DeviseHelper 2 | def devise_error_messages! 3 | return "" unless devise_error_messages? 4 | 5 | messages = resource.errors.full_messages.map { |msg| content_tag(:li, msg.downcase.capitalize) }.join 6 | sentence = I18n.t("errors.messages.not_saved", 7 | :count => resource.errors.count, 8 | :resource => resource.class.model_name.human.downcase) 9 | 10 | html = <<-HTML 11 |
12 |
13 |
14 |

#{sentence}

15 |
16 |
17 | 18 |
19 |
20 | HTML 21 | 22 | html.html_safe 23 | end 24 | 25 | def devise_error_messages? 26 | !resource.errors.empty? 27 | end 28 | 29 | end 30 | 31 | -------------------------------------------------------------------------------- /test/mailers/previews/user_mailer_preview.rb: -------------------------------------------------------------------------------- 1 | # Preview all emails at http://localhost:3000/rails/mailers/user_mailer 2 | class UserMailerPreview < ActionMailer::Preview 3 | 4 | def welcome_email_preview 5 | @user = User.last 6 | UserMailer.welcome_email(@user) 7 | end 8 | 9 | def submit_email_preview 10 | @user = User.last 11 | UserMailer.submit_email(@user) 12 | end 13 | 14 | def accepted_email_preview 15 | @user = User.last 16 | UserMailer.accepted_email(@user) 17 | end 18 | 19 | def denied_email_preview 20 | @user = User.last 21 | UserMailer.denied_email(@user) 22 | end 23 | 24 | def waitlisted_email_preview 25 | @user = User.last 26 | UserMailer.waitlisted_email(@user) 27 | end 28 | 29 | def reminder_email_preivew 30 | @user = User.last 31 | UserMailer.reminder_email(@user) 32 | end 33 | 34 | def template_email_preview 35 | @user = User.last 36 | @subject = 'Test Subject 2' 37 | UserMailer.template_email(@user, @subject) 38 | end 39 | 40 | end 41 | -------------------------------------------------------------------------------- /app/views/devise/passwords/new.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= render 'partial/hackathonlogo', local_assigns: {width: "70%", height: "70%"}%> 4 | <%= form_for(resource, as: resource_name, url: password_path(resource_name), html:{class: "card"}) do |f| %> 5 |
6 |
Forgot password
7 |

Enter your email address and you will receive a link to reset your password.

8 |
9 | 10 | <%= f.email_field :email, autofocus: true, class: "form-control", placeholder: "Enter Email" %> 11 |
12 | 15 |
16 | <% end %> 17 |
18 | <%= render "devise/shared/links" %> 19 |
20 |
21 |
-------------------------------------------------------------------------------- /app/views/mentorship_notifications/index.html.erb: -------------------------------------------------------------------------------- 1 |

<%= notice %>

2 | 3 |

Mentorship Notifications

4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | <% @mentorship_notifications.each do |mentorship_notification| %> 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | <% end %> 26 | 27 |
UserTechAll
<%= mentorship_notification.user_id %><%= mentorship_notification.tech %><%= mentorship_notification.all %><%= link_to 'Show', mentorship_notification %><%= link_to 'Edit', edit_mentorship_notification_path(mentorship_notification) %><%= link_to 'Destroy', mentorship_notification, method: :delete, data: { confirm: 'Are you sure?' } %>
28 | 29 |
30 | 31 | <%= link_to 'New Mentorship Notification', new_mentorship_notification_path %> 32 | -------------------------------------------------------------------------------- /bin/setup: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env ruby 2 | require 'pathname' 3 | require 'fileutils' 4 | include FileUtils 5 | 6 | # path to your application root. 7 | APP_ROOT = Pathname.new File.expand_path('../../', __FILE__) 8 | 9 | def system!(*args) 10 | system(*args) || abort("\n== Command #{args} failed ==") 11 | end 12 | 13 | chdir APP_ROOT do 14 | # This script is a starting point to setup your application. 15 | # Add necessary setup steps to this file. 16 | 17 | puts '== Installing dependencies ==' 18 | system! 'gem install bundler --conservative' 19 | system('bundle check') || system!('bundle install') 20 | 21 | # puts "\n== Copying sample files ==" 22 | # unless File.exist?('config/database.yml') 23 | # cp 'config/database.yml.sample', 'config/database.yml' 24 | # end 25 | 26 | puts "\n== Preparing database ==" 27 | system! 'bin/rails db:setup' 28 | 29 | puts "\n== Removing old logs and tempfiles ==" 30 | system! 'bin/rails log:clear tmp:clear' 31 | 32 | puts "\n== Restarting application server ==" 33 | system! 'bin/rails restart' 34 | end 35 | -------------------------------------------------------------------------------- /db/migrate/20180728205939_create_active_storage_tables.active_storage.rb: -------------------------------------------------------------------------------- 1 | # This migration comes from active_storage (originally 20170806125915) 2 | class CreateActiveStorageTables < ActiveRecord::Migration[5.2] 3 | def change 4 | create_table :active_storage_blobs do |t| 5 | t.string :key, null: false 6 | t.string :filename, null: false 7 | t.string :content_type 8 | t.text :metadata 9 | t.bigint :byte_size, null: false 10 | t.string :checksum, null: false 11 | t.datetime :created_at, null: false 12 | 13 | t.index [ :key ], unique: true 14 | end 15 | 16 | create_table :active_storage_attachments do |t| 17 | t.string :name, null: false 18 | t.references :record, null: false, polymorphic: true, index: false 19 | t.references :blob, null: false 20 | 21 | t.datetime :created_at, null: false 22 | 23 | t.index [ :record_type, :record_id, :name, :blob_id ], name: "index_active_storage_attachments_uniqueness", unique: true 24 | end 25 | end 26 | end 27 | -------------------------------------------------------------------------------- /config/initializers/new_framework_defaults.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | # 3 | # This file contains migration options to ease your Rails 5.0 upgrade. 4 | # 5 | # Read the Guide for Upgrading Ruby on Rails for more info on each option. 6 | 7 | # Enable per-form CSRF tokens. Previous versions had false. 8 | Rails.application.config.action_controller.per_form_csrf_tokens = true 9 | 10 | # Enable origin-checking CSRF mitigation. Previous versions had false. 11 | Rails.application.config.action_controller.forgery_protection_origin_check = true 12 | 13 | # Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`. 14 | # Previous versions had false. 15 | ActiveSupport.to_time_preserves_timezone = true 16 | 17 | # Require `belongs_to` associations by default. Previous versions had false. 18 | Rails.application.config.active_record.belongs_to_required_by_default = true 19 | 20 | # Configure SSL options to enable HSTS with subdomains. Previous versions had false. 21 | Rails.application.config.ssl_options = { hsts: { subdomains: true } } 22 | -------------------------------------------------------------------------------- /config/secrets.yml: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Your secret key is used for verifying the integrity of signed cookies. 4 | # If you change this key, all old signed cookies will become invalid! 5 | 6 | # Make sure the secret is at least 30 characters and all random, 7 | # no regular words or you'll be exposed to dictionary attacks. 8 | # You can use `rails secret` to generate a secure secret key. 9 | 10 | # Make sure the secrets in this file are kept private 11 | # if you're sharing your code publicly. 12 | 13 | development: 14 | secret_key_base: f1077de79cb9bb9ae1188e28154c892e7ecc04bd9a6e0264514bb148f34e28c6caf54d0b5c9388de66fcef04db5485c3672d41c6af4540b9c65fd82aeeb4c358 15 | 16 | test: 17 | secret_key_base: 242f75594ec85a36c32535d6271241f8fb34c66a358104dd9daef5c86afd89eab473a24cc7d10260ca42d54f54aa080cb2bcad71a9bfb25915fa8616469d4b00 18 | 19 | # Do not keep production secrets in the repository, 20 | # instead read values from the environment. 21 | production: 22 | secret_key_base: <%= ENV["SECRET_KEY_BASE"] %> 23 | 24 | slack: SL4CK_T0K3N -------------------------------------------------------------------------------- /db/migrate/20180804035430_clean_up_event_application_table.rb: -------------------------------------------------------------------------------- 1 | class CleanUpEventApplicationTable < ActiveRecord::Migration[5.2] 2 | def change 3 | drop_table :event_applications 4 | 5 | create_table :event_applications do |t| 6 | t.integer :user_id 7 | t.string :status, default: 'undecided' 8 | t.boolean :flag, default: false 9 | t.string :name 10 | t.string :phone 11 | t.string :age 12 | t.string :sex 13 | t.string :university 14 | t.string :major 15 | t.string :grad_year 16 | t.boolean :food_restrictions 17 | t.text :food_restrictions_info 18 | t.binary :resume 19 | t.string :t_shirt_size 20 | t.string :linkedin_url 21 | t.string :github_url 22 | t.boolean :prev_attendance 23 | t.string :programming_skills, array: true, default: '{}' 24 | t.string :hardware_skills, array: true, default: '{}' 25 | t.text :referral_info 26 | t.text :future_hardware_suggestion 27 | t.boolean :waiver_liability_agreement 28 | t.timestamps 29 | end 30 | end 31 | end 32 | -------------------------------------------------------------------------------- /app/views/hardware_items/_checkout.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_for(@hardware_checkout) do |f| %> 2 | <% if @hardware_checkout.errors.any? %> 3 |
4 |

<%= pluralize(hardware_checkout.errors.count, "error") %> prohibited this hardware_checkout from being saved:

5 | 6 | 11 |
12 | <% end %> 13 | 14 | 15 | 16 |
17 | <%= f.text_field :user_id, class: 'form-control', placeholder: 'Scan QR Code or Type email', :autofocus => true, data: {autocomplete: autocomplete_user_email_hardware_checkouts_path}, 'min-length' => 1 %> 18 |
19 |
20 | 21 |
22 | <%= f.number_field :hardware_item_id, hidden: true, value: @hardware_item.id %> 23 |
24 | 25 | 26 |
27 | <%= f.submit 'Checkout Item', class: 'btn btn-warning'%> 28 |
29 | <% end %> 30 | -------------------------------------------------------------------------------- /app/assets/javascripts/application.js: -------------------------------------------------------------------------------- 1 | // This is a manifest file that'll be compiled into application.js, which will include all the files 2 | // listed below. 3 | // 4 | // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 5 | // or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path. 6 | // 7 | // It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 8 | // compiled file. JavaScript code in this file should be added after the last require_* statement. 9 | // 10 | // Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details 11 | // about supported directives. 12 | // 13 | //= require tabler 14 | //= require tabler.plugins 15 | //= require Chart.bundle 16 | //= require chartkick 17 | //= require highcharts 18 | //= require jquery 19 | //= require countdown 20 | //= require jquery_ujs 21 | //= require jquery-ui 22 | //= require autocomplete-rails 23 | //= require turbolinks 24 | //= require cable 25 | //= require event_application 26 | //= require judging 27 | //= require_tree . 28 | -------------------------------------------------------------------------------- /app/views/events/index.html.erb: -------------------------------------------------------------------------------- 1 | 4 | <% if current_user.is_admin? or current_user.is_organizer? %> 5 | <%= link_to 'Download CSV', events_path(@event, format: 'csv'), class: 'btn btn-secondary' %> 6 |

7 | 8 | <% end %> 9 | 10 | <% if [true, false].sample %> 11 | 14 | <% end %> 15 | 16 | <% if @events.empty? %> 17 |

Looks like there aren't any events yet....

18 | <% end %> 19 | 20 | 21 | 22 | <% @events.each do |event| %> 23 | <%= render 'event', event: event, show_edit_and_delete: true%> 24 | <% end %> 25 | 26 |
27 | <%= will_paginate @events %> 28 |
29 | 30 | 31 |
32 | 33 | <% if current_user.is_admin? or current_user.is_organizer? %> 34 | <%= link_to 'New Event', new_event_path, class: 'btn btn-secondary' %> 35 | <% end %> 36 | -------------------------------------------------------------------------------- /config/initializers/assets.rb: -------------------------------------------------------------------------------- 1 | # Be sure to restart your server when you modify this file. 2 | 3 | # Version of your assets, change this if you want to expire all your assets. 4 | Rails.application.config.assets.version = '1.0' 5 | 6 | # Add additional assets to the asset load path 7 | # Rails.application.config.assets.paths << Emoji.images_path 8 | 9 | Rails.application.config.assets.paths << Rails.root.join("hackathon-config", "assets", "images") 10 | Rails.application.config.assets.paths << Rails.root.join("hackathon-config", "assets", "stylesheets") 11 | Rails.application.config.assets.paths << Rails.root.join("hackathon-config", "assets", "javascripts") 12 | 13 | # Precompile additional assets. 14 | # application.js, application.css, and all non-JS/CSS in app/assets folder are already added. 15 | # Rails.application.config.assets.precompile += %w( search.js ) 16 | Rails.application.config.assets.precompile += %w( event_application.js ) 17 | # Manually add PNG and CSS files in the custom hackathon-config assets folders 18 | Rails.application.config.assets.precompile += ['*.png'] 19 | Rails.application.config.assets.precompile += %w( custom.css custom.js ) 20 | 21 | -------------------------------------------------------------------------------- /lib/tasks/load_hardware.rake: -------------------------------------------------------------------------------- 1 | require 'csv' 2 | namespace :hardware do 3 | desc 'Create all the hardware items' 4 | task :create, [:var] => :environment do |task, args| 5 | 6 | # To pass the right argument for the rake command, refer to the sample command: 7 | # sudo ./docker_shell rake hardware:create[lib/tasks/sample_hardware_data.csv] 8 | # You may chose to edit the sample CSV or pass in a different location of your CSV file within the brackets 9 | 10 | hardware_items = [] 11 | if args.var.nil? 12 | puts("No Arguments Received") 13 | else 14 | csvPath = args.var 15 | header = true 16 | 17 | CSV.foreach(csvPath) do |row| 18 | if header == true 19 | header = false 20 | else 21 | item = HardwareItem.new( 22 | { 23 | uid: row[0], 24 | name: row[1], 25 | count: row[2], 26 | category: row[3], 27 | location: row[4] 28 | }) 29 | hardware_items.push(item) 30 | 31 | end 32 | end 33 | 34 | hardware_items.each do |item| 35 | item.save 36 | end 37 | 38 | end 39 | 40 | end 41 | 42 | end -------------------------------------------------------------------------------- /app/models/custom_rsvp.rb: -------------------------------------------------------------------------------- 1 | class CustomRsvp < ApplicationRecord 2 | belongs_to :user 3 | 4 | validate :custom_field_validation 5 | 6 | private 7 | 8 | def custom_field_validation 9 | HackumassWeb::Application::RSVP_CUSTOM_FIELDS.each do |c| 10 | if c['required'] 11 | if answers[c['name']] == nil or answers[c['name']] == '' or answers[c['name']].length == 0 12 | errors.add("missing_custom_field_#{c['name']}".to_sym, "Please fill out this field: #{c['label']}") 13 | end 14 | end 15 | if c['validate_regex'] and answers[c['name']] and answers[c['name']].length > 0 16 | r = Regexp.new c['validate_regex'] 17 | if !r.match?(answers[c['name']]) 18 | errors.add("regex_answers_#{c['name']}".to_sym, c['validate_error'] ? c['validate_error'] : "Invalid entry for field: #{c['label']}") 19 | end 20 | end 21 | if c['max_chars'] 22 | if answers[c['name']] and answers[c['name']].length > c['max_chars'] 23 | errors.add("too_long_answers_#{c['name']}".to_sym, "The value for '#{c['label']}' is too long! The maximum length is #{c['max_chars']} characters") 24 | end 25 | end 26 | end 27 | end 28 | 29 | end 30 | -------------------------------------------------------------------------------- /app/views/feature_flags/_feature_flag.erb: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | <% if feature_flag.value == true %> 6 | 7 | 8 | 9 | <% else %> 10 | 11 | 12 | 13 | <% end %> 14 | 15 | <%= feature_flag.display_name %> 16 | 17 | <% if feature_flag.value == true%> 18 | <%= button_to 'Disable', 19 | {controller:'feature_flags', action: 'disable', 20 | params: {flag: feature_flag}}, 21 | {class: 'btn btn-secondary btn-sm'} %> 22 | <% else %> 23 | <%= button_to 'Enable', 24 | {controller:'feature_flags', action: 'enable', 25 | params: {flag: feature_flag}}, 26 | {class: 'btn btn-secondary btn-sm'} %> 27 | <% end %> 28 | 29 | -------------------------------------------------------------------------------- /db/migrate/20180811040748_update_event_application_table.rb: -------------------------------------------------------------------------------- 1 | class UpdateEventApplicationTable < ActiveRecord::Migration[5.2] 2 | def change 3 | drop_table :event_applications 4 | 5 | create_table :event_applications do |t| 6 | t.timestamps 7 | t.integer :user_id 8 | t.string :status, default: 'undecided' 9 | t.boolean :flag, default: false 10 | t.string :name 11 | t.string :phone 12 | t.string :age 13 | t.string :sex 14 | t.string :university 15 | t.string :major 16 | t.string :grad_year 17 | t.boolean :food_restrictions 18 | t.text :food_restrictions_info 19 | t.string :resume_file_name 20 | t.string :resume_content_type 21 | t.integer :resume_file_size 22 | t.datetime :resume_updated_at 23 | t.string :t_shirt_size 24 | t.string :linkedin_url 25 | t.string :github_url 26 | t.boolean :prev_attendance 27 | t.string :programming_skills, array: true, default: '{}' 28 | t.string :hardware_skills, array: true, default: '{}' 29 | t.text :referral_info 30 | t.text :future_hardware_suggestion 31 | t.boolean :waiver_liability_agreement 32 | end 33 | end 34 | end 35 | -------------------------------------------------------------------------------- /app/views/mentorship_notifications/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_with(model: mentorship_notification, local: true) do |form| %> 2 | <% if mentorship_notification.errors.any? %> 3 |
4 |

<%= pluralize(mentorship_notification.errors.count, "error") %> prohibited this mentorship_notification from being saved:

5 | 6 | 11 |
12 | <% end %> 13 | 14 |
15 | <%= form.label :tech, 16 | 'Select technologies which you would like to receive notifications when a participant makes a mentorship request with them:', 17 | class: 'form-label' %> 18 |
19 | <%= render 'mentorship_requests/tech_form_options', f:form %> 20 |
21 |
22 | 23 |
24 | OR, Receive notifications for all new mentorship requests:  25 | <%= form.check_box :all %> 26 |
27 | 28 | 29 | <% end %> 30 | -------------------------------------------------------------------------------- /lib/tasks/load_events.rake: -------------------------------------------------------------------------------- 1 | require 'csv' 2 | namespace :event do 3 | desc 'Import all the Events from CSV' 4 | task :create, [:var] => :environment do |task, args| 5 | 6 | # To pass the right argument for the rake command, refer to the sample command: 7 | # sudo ./docker_shell rake event:create[lib/tasks/sample_events_data.csv] 8 | # You may chose to edit the sample CSV or pass in a different location of your CSV file within the brackets 9 | 10 | events = [] 11 | if args.var.nil? 12 | puts("No Arguments Received") 13 | else 14 | csvPath = args.var 15 | header = true 16 | 17 | CSV.foreach(csvPath) do |row| 18 | if header == true 19 | header = false 20 | else 21 | newEvent = Event.new( 22 | { 23 | title: row[0], 24 | description: row[1], 25 | location: row[2], 26 | host: row[3], 27 | start_time: row[4], 28 | end_time:row[5], 29 | rsvpable:row[6], 30 | max_seats:row[7] 31 | }) 32 | events.push(newEvent) 33 | 34 | end 35 | end 36 | 37 | events.each do |item| 38 | item.save 39 | end 40 | 41 | end 42 | 43 | end 44 | 45 | end -------------------------------------------------------------------------------- /app/views/pages/redeem_code.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | 14 | 15 |
16 |
17 |
18 |
19 | <%= form_tag use_code_path, method: :post, class:'col-lg-12', id: 'id-form' do %> 20 |
21 |
22 | <%= text_field_tag :code, params[:code], class: 'form-control', placeholder: 'Code (Case Insensitive)', :id => 'id-code', :autofocus => true %> 23 |
24 | 25 | <%= submit_tag 'Redeem Code', name: nil, id: 'id-submit', class: 'btn btn-primary btn-raised' %> 26 | 27 |
28 | <%end%> 29 |
30 |
31 |
32 |
-------------------------------------------------------------------------------- /app/assets/javascripts/project.js: -------------------------------------------------------------------------------- 1 | $(document).on('turbolinks:load', function () { 2 | if (!(page.controller() === 'event_applications' && page.action() === 'new' || page.action() === 'edit')) { 3 | return; 4 | } 5 | }); 6 | 7 | 8 | $(document).on('ready', function () { 9 | if (!(page.controller() === 'event_applications' && page.action() === 'create' || page.action() === 'update')) { 10 | return; 11 | } 12 | }); 13 | 14 | 15 | function updateProjectImageFileLabel() { 16 | var fileLabel = document.getElementsByClassName('custom-file-label')[0]; 17 | var resumeFileField = document.getElementById('project_projectimage'); 18 | if(resumeFileField) { 19 | var pathArray = resumeFileField.value.split('\\'); 20 | var fileName = pathArray[pathArray.length-1]; 21 | fileLabel.innerHTML = fileName; 22 | } 23 | } 24 | 25 | function updateRequestImageFileLabel() { 26 | var fileLabel = document.getElementsByClassName('custom-file-label')[0]; 27 | var resumeFileField = document.getElementById('request_requestimage'); 28 | if(resumeFileField) { 29 | var pathArray = resumeFileField.value.split('\\'); 30 | var fileName = pathArray[pathArray.length-1]; 31 | fileLabel.innerHTML = fileName; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /app/views/devise/passwords/edit.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= render 'partial/hackathonlogo', local_assigns: {width: "70%", height: "70%"}%> 4 | <%= form_for(resource, as: resource_name, url: password_path(resource_name), html:{class: "card", method: :put}) do |f| %> 5 | <%= f.hidden_field :reset_password_token %> 6 |
7 |
Please update your password below
8 |
9 | 10 | <%= f.password_field :password, placeholder: "New Password", autofocus: true, autocomplete: "off", class: "form-control" %> 11 |
12 |
13 | 14 | <%= f.password_field :password_confirmation, placeholder: "Confirm Password", autocomplete: "off", class: "form-control" %> 15 |
16 | 19 |
20 | <% end %> 21 |
22 | <%= render "devise/shared/links" %> 23 |
24 |
25 |
-------------------------------------------------------------------------------- /app/views/judging/_score.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | <% score.custom_scores.keys.each do |field| %> 10 | 11 | 12 | 15 | 24 | 25 | <% end %> 26 | 27 | 28 | 29 | 30 | 34 | 35 | 36 |
FieldScore
<%= field.titleize %> 13 | <% if score.custom_scores[field].length > 4 %> 14 |
16 | 17 | <%= score.custom_scores[field] %> 18 | 19 | <% else %> 20 | <%= score.custom_scores[field] %> 21 | / <%= @field_max_scores[field] %> 22 | <% end %> 23 |
Total Score 31 | <%= score.score %> 32 | / <%= @max_score %> 33 |
-------------------------------------------------------------------------------- /app/helpers/event_applications_helper.rb: -------------------------------------------------------------------------------- 1 | module EventApplicationsHelper 2 | 3 | def denied_is_active?(params) 4 | params[:status].present? && params[:status] == 'denied' 5 | end 6 | 7 | def waitlisted_is_active?(params) 8 | params[:status].present? && params[:status] == 'waitlisted' 9 | end 10 | 11 | def accepted_is_active?(params) 12 | params[:status].present? && params[:status] == 'accepted' 13 | end 14 | 15 | def undecided_is_active?(params) 16 | params[:status].present? && params[:status] == 'undecided' 17 | end 18 | 19 | def rsvp_is_active?(params) 20 | params[:rsvp].present? 21 | end 22 | 23 | def flagged_is_active?(params) 24 | params[:flagged].present? 25 | end 26 | 27 | def rsvp_is_active?(params) 28 | params[:rsvp].present? 29 | end 30 | 31 | def all_is_active?(params) 32 | !(params[:status].present? || params[:flagged].present?) 33 | end 34 | 35 | def editing_application? 36 | params[:action] == 'edit' 37 | end 38 | 39 | def admin_or_organizer? 40 | current_user.user_type == 'admin' || current_user.user_type == 'organizer' 41 | end 42 | 43 | def admin? 44 | current_user.user_type == 'admin' 45 | end 46 | 47 | 48 | def lack_permission_msg 49 | 'Sorry, but you seem to lack the permission to go to that part of the website.' 50 | end 51 | end -------------------------------------------------------------------------------- /app/views/pages/join_slack.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |
6 | <% if HackumassWeb::Application::SLACK_ENABLED %> 7 | <%= render file: HackumassWeb::Application::copy_for('pages/join_slack') %> 8 |
9 |
10 | Join Slack 11 |
12 |
13 |
14 | I already joined! 15 |
16 |
17 |
18 | <% else %> 19 |
20 |
21 |

Slack integration is disabled. Please contact a hackathon organizer if you encounter this page while trying to access a feature.

22 |
23 |
24 | <% end %> 25 |
26 |
27 |
28 |
29 | -------------------------------------------------------------------------------- /db/migrate/20170609212338_renaming_reordering_removing_event_application_variables.rb: -------------------------------------------------------------------------------- 1 | class RenamingReorderingRemovingEventApplicationVariables < ActiveRecord::Migration[5.0] 2 | def change 3 | drop_table :event_applications 4 | 5 | create_table :event_applications do |t| 6 | t.integer :user_id 7 | t.string :application_status, default: 'undecided' 8 | t.string :name 9 | t.string :email 10 | t.string :phone 11 | t.string :age 12 | t.string :sex 13 | t.string :university 14 | t.string :major 15 | t.string :grad_year 16 | t.boolean :food_restrictions 17 | t.text :food_restrictions_info 18 | t.string :t_shirt 19 | t.binary :resume_file 20 | t.string :resume_file_name 21 | t.string :linkedin 22 | t.string :github 23 | t.boolean :previous_hackathon_attendance 24 | t.boolean :transportation 25 | t.string :transportation_location 26 | t.string :programmer_type_list, array:true, default: '{}' 27 | t.string :programming_skills_list, array:true, default: '{}' 28 | t.boolean :interested_in_hardware_hacks, default: false 29 | t.string :interested_hardware_hacks_list, array:true, default: '{}' 30 | t.text :how_did_you_hear_about_hackumass 31 | t.text :future_hardware_for_hackumass 32 | t.boolean :waiver_liability_agreement 33 | 34 | t.timestamps 35 | end 36 | end 37 | end 38 | -------------------------------------------------------------------------------- /app/views/judging/tag_assign.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 |
9 |

Assign a judge to all projects competing in a prize category.

10 | <%= form_tag add_judge_to_tag_path, method: :post do %> 11 | 12 |
13 |
14 | <%= text_field_tag :judge_email, params[:judge_email], class: 'form-control', placeholder: 'Email Address', type: "search", 'min-length' => 1, required: true, data: {autocomplete: autocomplete_user_email_hardware_checkouts_path} %> 15 |
16 | 17 |
18 | <%= text_field_tag :prize_criteria, params[:prize_criteria], class: 'form-control', placeholder: 'Prize Category', type: "text", data: {autocomplete: autocomplete_prize_criteria_judging_index_path} %> 19 |
20 | 21 |
22 | <%= button_tag 'Assign Judge', type: :submit, class: 'btn btn-primary' %> 23 |
24 |
25 | <% end %> 26 |
27 |
28 |
29 |
30 | 31 | <%= link_to 'Return to Judging Home', judging_index_path, class: 'btn btn-secondary' %> 32 | 33 | 34 | -------------------------------------------------------------------------------- /app/views/prizes/show.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |

<%= notice %>

6 | 7 |
8 |
9 |
10 |
11 |

Prize Info

12 |
13 |
14 |

15 | Title: 16 | <%= @prize.title %> 17 |

18 | 19 |

20 | Description: 21 | <%= @prize.description %> 22 |

23 | 24 |

25 | Sponsor: 26 | <%= @prize.sponsor %> 27 |

28 | 29 |

30 | Priority: 31 | <%= @prize.priority %> 32 |

33 | 34 | <% if @prize.project_selectable %>You need to apply for this prize by selecting it on your project.<% end %> 35 | 36 | <%= link_to 'Edit', edit_prize_path(@prize), class: 'btn btn-warning' %> 37 | <% if current_user.is_admin? %> 38 | <%= link_to "Assign to Project", prize_assign_path(:prize_id => @prize.id), class: 'btn btn-primary' %> 39 | <%= link_to 'Delete', prize_path(@prize), :method => :delete, class: 'btn btn-danger' %> 40 | <% end %> 41 |
42 |
43 |
44 | <%= link_to 'Go Back to Prizes', prizes_path, class: 'btn btn-secondary' %> 45 | -------------------------------------------------------------------------------- /test/controllers/prizes_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class PrizesControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @prize = prizes(:one) 6 | end 7 | 8 | test "should get index" do 9 | get prizes_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_prize_url 15 | assert_response :success 16 | end 17 | 18 | test "should create prize" do 19 | assert_difference('Prize.count') do 20 | post prizes_url, params: { prize: { title: @prize.title, description: @prize.description, award: @prize.award, priority: @prize.priority, sponsor: @prize.sponsor } } 21 | end 22 | 23 | assert_redirected_to prize_url(Prize.last) 24 | end 25 | 26 | test "should show prize" do 27 | get prize_url(@prize) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_prize_url(@prize) 33 | assert_response :success 34 | end 35 | 36 | test "should update prize" do 37 | patch prize_url(@prize), params: { prize: { title: @prize.title, description: @prize.description, award: @prize.award, priority: @prize.priority, sponsor: @prize.sponsor } } 38 | assert_redirected_to prize_url(@prize) 39 | end 40 | 41 | test "should destroy prize" do 42 | assert_difference('Prize.count', -1) do 43 | delete prize_url(@prize) 44 | end 45 | 46 | assert_redirected_to prizes_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /test/controllers/emails_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EmailsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @email = emails(:one) 6 | end 7 | 8 | test "should get index" do 9 | get emails_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_email_url 15 | assert_response :success 16 | end 17 | 18 | test "should create email" do 19 | assert_difference('Email.count') do 20 | post emails_url, params: { email: { mailing_list: @email.mailing_list, message: @email.message, sent_by: @email.sent_by, status: @email.status, subject: @email.subject } } 21 | end 22 | 23 | assert_redirected_to email_url(Email.last) 24 | end 25 | 26 | test "should show email" do 27 | get email_url(@email) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_email_url(@email) 33 | assert_response :success 34 | end 35 | 36 | test "should update email" do 37 | patch email_url(@email), params: { email: { mailing_list: @email.mailing_list, message: @email.message, sent_by: @email.sent_by, status: @email.status, subject: @email.subject } } 38 | assert_redirected_to email_url(@email) 39 | end 40 | 41 | test "should destroy email" do 42 | assert_difference('Email.count', -1) do 43 | delete email_url(@email) 44 | end 45 | 46 | assert_redirected_to emails_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /app/views/prizes/index.html.erb: -------------------------------------------------------------------------------- 1 |

<%= notice %>

2 | 9 |

Prizes

10 | 11 |
12 | 13 | <% @prizes.each do |prize| %> 14 | 15 |
16 | <% if prize.priority <= 1 %> 17 |
18 | <% end %> 19 | <% if prize.priority == 2 %> 20 |
21 | <% end %> 22 | <% if prize.priority == 3 %> 23 |
24 | <% end %> 25 |
26 | <% if current_user.is_organizer? %> 27 |

<%= link_to prize.award, prize%>

28 | <% else %> 29 |

<%= prize.award %>

30 | <% end %> 31 |
32 |
33 |

Title: <%= prize.title %>

34 |

Description: <%= prize.description %>

35 |

Sponsored by: <%= prize.sponsor %>

36 | <% if prize.project_selectable %> 37 | You need to apply for this prize by selecting it on your project. 38 | <% end %> 39 |
40 |
41 | 42 | <% end %> 43 | 44 |
45 | 46 |
47 | <% if current_user.is_organizer? %> 48 | <%= link_to 'New Prize', new_prize_path, class: 'btn btn-secondary' %> 49 | <% end %> 50 | -------------------------------------------------------------------------------- /test/system/prizes_test.rb: -------------------------------------------------------------------------------- 1 | require "application_system_test_case" 2 | 3 | class PrizesTest < ApplicationSystemTestCase 4 | setup do 5 | @prize = prizes(:one) 6 | end 7 | 8 | test "visiting the index" do 9 | visit prizes_url 10 | assert_selector "h1", text: "Prizes" 11 | end 12 | 13 | test "creating a Prize" do 14 | visit prizes_url 15 | click_on "New Prize" 16 | 17 | fill_in "Title", with: @prize.title 18 | fill_in "Description", with: @prize.description 19 | fill_in "Award", with: @prize.award 20 | fill_in "Priority", with: @prize.priority 21 | fill_in "Sponsor", with: @prize.sponsor 22 | click_on "Create Prize" 23 | 24 | assert_text "Prize was successfully created" 25 | click_on "Back" 26 | end 27 | 28 | test "updating a Prize" do 29 | visit prizes_url 30 | click_on "Edit", match: :first 31 | 32 | fill_in "Title", with: @prize.title 33 | fill_in "Description", with: @prize.description 34 | fill_in "Award", with: @prize.award 35 | fill_in "Priority", with: @prize.priority 36 | fill_in "Sponsor", with: @prize.sponsor 37 | click_on "Update Prize" 38 | 39 | assert_text "Prize was successfully updated" 40 | click_on "Back" 41 | end 42 | 43 | test "destroying a Prize" do 44 | visit prizes_url 45 | page.accept_confirm do 46 | click_on "Destroy", match: :first 47 | end 48 | 49 | assert_text "Prize was successfully destroyed" 50 | end 51 | end 52 | -------------------------------------------------------------------------------- /app/views/judging/_assigned_projects.html.erb: -------------------------------------------------------------------------------- 1 | <% if !@assigned.nil? and !@assigned.empty? %> 2 |

Assigned to Me

3 |
4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | <% @assigned.each do |asn| %> 18 | 19 | <% if asn.project.table_id.nil? %> 20 | 21 | <% else %> 22 | 27 | <% end %> 28 | 29 | 30 | 31 | 34 | 35 | 36 | 37 | 38 | 39 | <% end %> 40 | 41 |
Table #TitleTagTimes JudgedAction
TBD<%= asn.project.table_id %> 23 | <% if asn.project.power %> 24 | (Outlet) 25 | <% end %> 26 | <%= link_to truncate(asn.project.title, length: 30), asn.project %> 32 | <% unless asn.tag.nil? %> <%= asn.tag %> 33 | <% end %> <%= @times_judged[asn.project.id] %><%= link_to "Judge", new_judging_path(:project_id => asn.project.id, :tag => asn.tag), class: 'btn btn-primary' %>
42 |
43 | <% else %> 44 | You have no projects assigned to judge. 45 | <% end %> -------------------------------------------------------------------------------- /app/assets/stylesheets/scaffolds.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #fff; 3 | color: #333; 4 | margin: 33px; 5 | font-family: verdana, arial, helvetica, sans-serif; 6 | font-size: 13px; 7 | line-height: 18px; 8 | } 9 | 10 | p, ol, ul, td { 11 | font-family: verdana, arial, helvetica, sans-serif; 12 | font-size: 13px; 13 | line-height: 18px; 14 | } 15 | 16 | pre { 17 | background-color: #eee; 18 | padding: 10px; 19 | font-size: 11px; 20 | } 21 | 22 | a { 23 | color: #000; 24 | 25 | &:visited { 26 | color: #666; 27 | } 28 | 29 | &:hover { 30 | color: #fff; 31 | background-color: #000; 32 | } 33 | } 34 | 35 | th { 36 | padding-bottom: 5px; 37 | } 38 | 39 | td { 40 | padding: 0 5px 7px; 41 | } 42 | 43 | div { 44 | &.field, &.actions { 45 | margin-bottom: 10px; 46 | } 47 | } 48 | 49 | #notice { 50 | color: green; 51 | } 52 | 53 | .field_with_errors { 54 | padding: 2px; 55 | background-color: red; 56 | display: table; 57 | } 58 | 59 | #error_explanation { 60 | width: 450px; 61 | border: 2px solid red; 62 | padding: 7px 7px 0; 63 | margin-bottom: 20px; 64 | background-color: #f0f0f0; 65 | 66 | h2 { 67 | text-align: left; 68 | font-weight: bold; 69 | padding: 5px 5px 5px 15px; 70 | font-size: 12px; 71 | margin: -7px -7px 0; 72 | background-color: #c00; 73 | color: #fff; 74 | } 75 | 76 | ul li { 77 | font-size: 12px; 78 | list-style: square; 79 | } 80 | } 81 | 82 | label { 83 | display: block; 84 | } 85 | -------------------------------------------------------------------------------- /test/controllers/events_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EventsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @event = events(:one) 6 | end 7 | 8 | test "should get index" do 9 | get events_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_event_url 15 | assert_response :success 16 | end 17 | 18 | test "should create event" do 19 | assert_difference('Event.count') do 20 | post events_url, params: { event: { created_by: @event.created_by, description: @event.description, location: @event.location, thumbnail: @event.thumbnail, time: @event.time, title: @event.title } } 21 | end 22 | 23 | assert_redirected_to event_url(Event.last) 24 | end 25 | 26 | test "should show event" do 27 | get event_url(@event) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_event_url(@event) 33 | assert_response :success 34 | end 35 | 36 | test "should update event" do 37 | patch event_url(@event), params: { event: { created_by: @event.created_by, description: @event.description, location: @event.location, thumbnail: @event.thumbnail, time: @event.time, title: @event.title } } 38 | assert_redirected_to event_url(@event) 39 | end 40 | 41 | test "should destroy event" do 42 | assert_difference('Event.count', -1) do 43 | delete event_url(@event) 44 | end 45 | 46 | assert_redirected_to events_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /app/views/slackintegration/admin.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | <% if !HackumassWeb::Application::SLACK_ENABLED %> 6 |
7 |
8 |
9 |

Slack Integration Not Enabled

10 |

Changes on this page will not have any effect unless Slack integration is enabled.

11 |
12 |
13 |
14 | <% end %> 15 | 16 |
17 |
18 |
19 |

Reassociate Users

20 |
21 |
22 |

This will re-link all Slack users who do not have a slack_id set based on the email addresses currently in the Slack workspace.

23 | 24 | Reassociate all users 25 | 26 |

27 | 28 |

This will re-link all Slack users in the workspace, overriding the slack_id of any users in Dashboard.

29 | 30 | Force reassociate all users 31 |
32 |
33 |
34 | <%= link_to 'Return to Admin Page', admin_path, class: 'btn btn-secondary'%> 35 | -------------------------------------------------------------------------------- /config/locales/en.yml: -------------------------------------------------------------------------------- 1 | # Files in the config/locales directory are used for internationalization 2 | # and are automatically loaded by Rails. If you want to use locales other 3 | # than English, add the necessary files in this directory. 4 | # 5 | # To use the locales, use `I18n.t`: 6 | # 7 | # I18n.t 'hello' 8 | # 9 | # In views, this is aliased to just `t`: 10 | # 11 | # <%= t('hello') %> 12 | # 13 | # To use a different locale, set it with `I18n.locale`: 14 | # 15 | # I18n.locale = :es 16 | # 17 | # This would use the information in config/locales/es.yml. 18 | # 19 | # To learn more, please read the Rails Internationalization guide 20 | # available at http://guides.rubyonrails.org/i18n.html. 21 | 22 | en: 23 | activerecord: 24 | attributes: 25 | event_application: 26 | name: "full name" 27 | email: "email" 28 | phone: "phone number" 29 | age: "age" 30 | gender: "gender" 31 | university: "university" 32 | major: "major" 33 | grad_year: "graduation year" 34 | food_restrictions: "Do you have any food allergies or dietary 35 | restrictions that we should know about?" 36 | t_shirt_size: "t-shirt size" 37 | resume: "resume" 38 | prev_attendance: "Have you been to a hackathon before?" 39 | referral_info: "How did you hear about hackumass?" 40 | future_hardware_suggestion: "What hardware do you want to see at HackUMass VI or future HackUMass?" 41 | education_lvl: "education level" 42 | -------------------------------------------------------------------------------- /app/views/emails/index.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | 7 | <% if @emails.empty? %> 8 |

There aren't any emails... Yet.

9 | <% else %> 10 |
11 |
12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | <% @emails.each do |email| %> 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | <% end %> 35 | 36 | 37 |
SubjectMessageMailing ListStatusSent byCreated at
<%= link_to email.subject, email %><%= truncate(email.message , length: 30)%><%= email.mailing_list %><%= email.status %><%= email.sent_by %><%= email.created_at.strftime('%A, %b %d at %I:%M %p') %>
38 |
39 |
40 |
41 | 42 | <% end %> 43 |
44 | <%= link_to 'Return to Admin Page', admin_path, class: 'btn btn-secondary'%> 45 | <%= link_to 'Create New Email', new_email_path, class: 'btn btn-primary' %> 46 | -------------------------------------------------------------------------------- /app/views/event_applications/edit.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 |
5 |
6 | <% if @application.errors.any? %> 7 |
8 |
9 |
10 |

11 | <%=pluralize(@application.errors.count, 'error') %> prohibited this 12 | application from being submitted: 13 |

14 |
15 |
16 |
    17 | <% @application.errors.values.each do |message| %> 18 |
  • 19 | <%= message.to_s.gsub(%r{[\[\]"]}, '').gsub(%r{\\n}, '') %> 20 |
  • 21 | <% end %> 22 |
23 |
24 |
25 | <% end %> 26 |
27 | <% if !@application.errors.any? %> 28 |
29 | <% end %> 30 |
31 |

32 | Edit Registration 33 |

34 |
35 | <%= render 'form', event_application: @event_application %> 36 |
37 |
38 |
39 |
40 | 41 | -------------------------------------------------------------------------------- /app/assets/stylesheets/judging.scss: -------------------------------------------------------------------------------- 1 | // Place all the styles related to the judging controller here. 2 | // They will automatically be included in application.css. 3 | // You can use Sass (SCSS) here: http://sass-lang.com/ 4 | 5 | 6 | .card-input-element + .judge_button { 7 | color: var(--primary); 8 | box-shadow: none; 9 | border: 2px solid transparent; 10 | border-radius: 4px; 11 | } 12 | 13 | .card-input-element + .judge_button:hover { 14 | cursor: pointer; 15 | } 16 | 17 | .card-input-element:checked + .judge_button { 18 | border: 2px solid var(--primary); 19 | transition: border .3s; 20 | } 21 | 22 | // Judging form 23 | .judge_button_style { 24 | min-width: 160px; 25 | } 26 | 27 | // Pop up for project description 28 | .modal { 29 | display: none; /* Hidden by default */ 30 | position: fixed; /* Stay in place */ 31 | z-index: 1; /* Sit on top */ 32 | left: 0; 33 | top: 0; 34 | width: 100%; /* Full width */ 35 | height: 100%; /* Full height */ 36 | overflow: auto; /* Enable scroll if needed */ 37 | background-color: rgb(0,0,0); /* Fallback color */ 38 | background-color: rgba(0,0,0,0.4); /* Black w/ opacity */ 39 | } 40 | 41 | .modal-content { 42 | background-color: #fefefe; 43 | margin: 15% auto; /* 15% from the top and centered */ 44 | padding: 20px; 45 | border: 1px solid #888; 46 | width: 80%; /* Could be more or less, depending on screen size */ 47 | } 48 | 49 | 50 | .main-row-header { 51 | display: flex; 52 | } 53 | .card-header-padding { 54 | padding-top: 9px; 55 | } -------------------------------------------------------------------------------- /app/views/pages/index.html.erb: -------------------------------------------------------------------------------- 1 |
2 | 5 | 6 | <% if current_user.is_admin? %> 7 | <%= render 'shared/home_pages/admin_view'%> 8 | <% elsif current_user.is_organizer? %> 9 | <%= render 'shared/home_pages/organizer_view'%> 10 | <% elsif current_user.is_mentor? %> 11 | <%= render 'shared/home_pages/mentor_view'%> 12 | <% elsif current_user.check_in %> 13 | <%= render 'shared/home_pages/checked_in_view'%> 14 | <% else %> 15 | <% if current_user.has_applied? %> 16 | <% if current_user.event_application.status == 'undecided' %> 17 | <%= render 'shared/home_pages/undecided_view'%> 18 | <% elsif current_user.event_application.status == 'accepted' %> 19 | <% if current_user.rsvp %> 20 | <% if current_user.check_in %> 21 | <%= render 'shared/home_pages/checked_in_view'%> 22 | <% else %> 23 | <%= render 'shared/home_pages/rsvp_view'%> 24 | <% end %> 25 | <% else %> 26 | <%= render 'shared/home_pages/accepted_view'%> 27 | <% end %> 28 | <% elsif current_user.event_application.status == 'waitlisted' %> 29 | <%= render 'shared/home_pages/waitlisted_view'%> 30 | <% elsif current_user.event_application.status == 'denied' %> 31 | <%= render 'shared/home_pages/denied_view'%> 32 | <% end %> 33 | <% else %> 34 | <%= render 'shared/home_pages/new_user_view'%> 35 | <% end %> 36 | <% end %> 37 | 38 |
39 | -------------------------------------------------------------------------------- /app/mailers/user_mailer.rb: -------------------------------------------------------------------------------- 1 | class UserMailer < ApplicationMailer 2 | 3 | default from: "#{HackumassWeb::Application::CONTACT_EMAIL}" 4 | 5 | def welcome_email(user) 6 | @user = user; 7 | mail(to: @user.email, subject: "Thank you for signing up for #{HackumassWeb::Application::HACKATHON_NAME} #{HackumassWeb::Application::HACKATHON_VERSION}!") 8 | end 9 | 10 | def submit_email(user) 11 | @user = user; 12 | mail(to: @user.email, subject: "Thank you for submitting your #{HackumassWeb::Application::HACKATHON_NAME} #{HackumassWeb::Application::HACKATHON_VERSION} application!") 13 | end 14 | 15 | def accepted_email(user) 16 | @user = user; 17 | mail(to: @user.email, subject: "Congratulations! Welcome to #{HackumassWeb::Application::HACKATHON_NAME}!") 18 | end 19 | 20 | def denied_email(user) 21 | @user = user; 22 | mail(to: @user.email, subject: "#{HackumassWeb::Application::HACKATHON_NAME} #{HackumassWeb::Application::HACKATHON_VERSION} Application Status Update") 23 | end 24 | 25 | def waitlisted_email(user) 26 | @user = user; 27 | mail(to: @user.email, subject: "#{HackumassWeb::Application::HACKATHON_NAME} #{HackumassWeb::Application::HACKATHON_VERSION} Application Status Update") 28 | end 29 | 30 | def reminder_email(user, subject, message) 31 | @user = user 32 | @message = message 33 | @subject = subject 34 | mail(to: @user.email, subject: @subject) 35 | end 36 | 37 | def template_email(user, subject) 38 | @user = user 39 | @subject = subject 40 | mail(to: @user.email, subject: @subject) 41 | end 42 | 43 | end 44 | -------------------------------------------------------------------------------- /app/views/judging/_judged_projects.html.erb: -------------------------------------------------------------------------------- 1 | <% if !@judged_by_me.nil? and !@judged_by_me.empty? %> 2 |

Judged By Me

3 |
4 |
5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | <% @judged_by_me.each do |judgement| %> 18 | 19 | <% if judgement.project.table_id.nil? %> 20 | 21 | <% else %> 22 | 28 | <% end %> 29 | 30 | 31 | 32 | 35 | 36 | 37 | 41 | 42 | <% end %> 43 | 44 |
Table #TitleTagTimes JudgedAction
TBD 23 | <%= judgement.project.table_id %> 24 | <% if judgement.project.power %> 25 | (Outlet) 26 | <% end %> 27 | <%= link_to truncate(judgement.project.title, length: 30), judgement.project %> 33 | <% if !judgement.tag.nil? %> <%= judgement.tag %> 34 | <% end %> <%= @times_judged[judgement.project.id] %> (including you) 38 | <%= link_to "View", judgement_path(:id => judgement.id), class: 'btn btn-primary' %> 39 | <%= link_to "Edit", edit_judgement_path(:id => judgement.id), class: 'btn btn-primary' %> 40 |
45 |
46 | <% else %> 47 |

You have not judged any projects.

48 | <% end %> -------------------------------------------------------------------------------- /lib/tasks/admissions.rake: -------------------------------------------------------------------------------- 1 | namespace :admissions do 2 | desc "Accept or flag student applications" 3 | task :update_apps, [:newFlag, :flag] => :environment do |t, args| 4 | 5 | list_of_apps = EventApplication.where(:status => args[:flag]) 6 | flagged_count = 0 7 | accepted_count = 0 8 | 9 | list_of_apps.each do |app| 10 | 11 | app.status = args[:newFlag] 12 | app.save(:validate => false) 13 | accepted_count += 1 14 | UserMailer.accepted_email(app.user).deliver_now 15 | 16 | end #End of event application check 17 | 18 | 19 | puts "Flagged Applications: #{flagged_count}" 20 | puts "Accepted Applications: #{accepted_count}" 21 | puts "Total Applications Considered: #{flagged_count+accepted_count}" 22 | end 23 | 24 | desc "Accept or flag student applications using csv" 25 | task :update_apps_file, [:newFlag, :file] => :environment do |t, args| 26 | 27 | flagged_count = 0 28 | accepted_count = 0 29 | 30 | emailList = File.read(args[:file]).split(",").map(&:strip) 31 | 32 | emailList.each do |email| 33 | list_of_apps = EventApplication.joins(:user).where("users.email = '#{email}'") 34 | list_of_apps.each do |app| 35 | app.status = args[:newFlag] 36 | app.save(:validate => false) 37 | accepted_count += 1 38 | UserMailer.accepted_email(app.user).deliver_now 39 | 40 | end #End of event application check 41 | end 42 | 43 | puts "Flagged Applications: #{flagged_count}" 44 | puts "Accepted Applications: #{accepted_count}" 45 | puts "Total Applications Considered: #{flagged_count+accepted_count}" 46 | end 47 | 48 | end 49 | -------------------------------------------------------------------------------- /test/system/mentorship_notifications_test.rb: -------------------------------------------------------------------------------- 1 | require "application_system_test_case" 2 | 3 | class MentorshipNotificationsTest < ApplicationSystemTestCase 4 | setup do 5 | @mentorship_notification = mentorship_notifications(:one) 6 | end 7 | 8 | test "visiting the index" do 9 | visit mentorship_notifications_url 10 | assert_selector "h1", text: "Mentorship Notifications" 11 | end 12 | 13 | test "creating a Mentorship notification" do 14 | visit mentorship_notifications_url 15 | click_on "New Mentorship Notification" 16 | 17 | fill_in "All", with: @mentorship_notification.all 18 | fill_in "Tech", with: @mentorship_notification.tech 19 | fill_in "User", with: @mentorship_notification.user_id 20 | click_on "Create Mentorship notification" 21 | 22 | assert_text "Mentorship notification was successfully created" 23 | click_on "Back" 24 | end 25 | 26 | test "updating a Mentorship notification" do 27 | visit mentorship_notifications_url 28 | click_on "Edit", match: :first 29 | 30 | fill_in "All", with: @mentorship_notification.all 31 | fill_in "Tech", with: @mentorship_notification.tech 32 | fill_in "User", with: @mentorship_notification.user_id 33 | click_on "Update Mentorship notification" 34 | 35 | assert_text "Mentorship notification was successfully updated" 36 | click_on "Back" 37 | end 38 | 39 | test "destroying a Mentorship notification" do 40 | visit mentorship_notifications_url 41 | page.accept_confirm do 42 | click_on "Destroy", match: :first 43 | end 44 | 45 | assert_text "Mentorship notification was successfully destroyed" 46 | end 47 | end 48 | -------------------------------------------------------------------------------- /app/views/event_applications/new.html.erb: -------------------------------------------------------------------------------- 1 | <% 2 | =begin%> 3 | This file handles how creating a new application looks in the browser. 4 | If an application errors in some way it lets the user know why. 5 | <% 6 | =end%> 7 | 8 |
9 |
10 |
11 | <% if @application.errors.any? %> 12 |
13 |
14 |
15 |

16 | <%=pluralize(@application.errors.count, 'error') %> prohibited this 17 | application from being submitted: 18 |

19 |
20 |
21 |
    22 | <% @application.errors.values.each do |message| %> 23 |
  • 24 | <%= message.to_s.gsub(%r{[\[\]"]}, '').gsub(%r{\\n}, '') %> 25 |
  • 26 | <% end %> 27 |
28 |
29 |
30 | <% end %> 31 |
32 | <% if !@application.errors.any? %> 33 |
34 | <% end %> 35 |
36 |

37 | <%= HackumassWeb::Application::HACKATHON_NAME %> <%= HackumassWeb::Application::HACKATHON_VERSION %> Registrations 38 |

39 |
40 | <%= render 'form', event_application: @event_application %> 41 |
42 |
43 |
44 |
45 | 46 | -------------------------------------------------------------------------------- /db/migrate/20170415164547_devise_create_users.rb: -------------------------------------------------------------------------------- 1 | class DeviseCreateUsers < ActiveRecord::Migration[5.0] 2 | def change 3 | create_table :users do |t| 4 | ## Basic info 5 | t.string :first_name, null:false 6 | t.string :last_name, null:false 7 | 8 | ## Database authenticatable 9 | t.string :email, null: false, default: "" 10 | t.string :encrypted_password, null: false, default: "" 11 | 12 | ## Recoverable 13 | t.string :reset_password_token 14 | t.datetime :reset_password_sent_at 15 | 16 | ## Rememberable 17 | t.datetime :remember_created_at 18 | 19 | ## Trackable 20 | t.integer :sign_in_count, default: 0, null: false 21 | t.datetime :current_sign_in_at 22 | t.datetime :last_sign_in_at 23 | t.string :current_sign_in_ip 24 | t.string :last_sign_in_ip 25 | 26 | ## Confirmable 27 | # t.string :confirmation_token 28 | # t.datetime :confirmed_at 29 | # t.datetime :confirmation_sent_at 30 | # t.string :unconfirmed_email # Only if using reconfirmable 31 | 32 | ## Lockable 33 | # t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts 34 | # t.string :unlock_token # Only if unlock strategy is :email or :both 35 | # t.datetime :locked_at 36 | 37 | 38 | t.timestamps null: false 39 | end 40 | 41 | add_index :users, :email, unique: true 42 | add_index :users, :reset_password_token, unique: true 43 | # add_index :users, :confirmation_token, unique: true 44 | # add_index :users, :unlock_token, unique: true 45 | end 46 | end 47 | -------------------------------------------------------------------------------- /app/views/emails/_form.html.erb: -------------------------------------------------------------------------------- 1 | <%= form_for(email) do |f| %> 2 | 3 | <% if email.errors.any? %> 4 | 5 |
6 |
7 |

<%= pluralize(email.errors.count, "error") %> prohibited this email from being saved:

8 |
9 |
10 | 15 |
16 |
17 | <%= email.errors.keys %> 18 | <% end %> 19 | 20 |
21 | <%= f.label :subject, class:'control-label' %> 22 | <%= f.text_field :subject, class: 'form-control', placeholder: 'Type email subject here' %> 23 |
24 | 25 | 26 |
27 | <%= f.label :message, class:'control-label' %> 28 | <%= f.text_area :message, class: 'form-control', placeholder: 'Type the email you want to send here. Exclude the opening statement (e.g. Hello @name... That will be automatically added.)'%> 29 |
30 | 31 |
32 | <%= f.label :mailing_list, class:'control-label' %> 33 | <%= f.select(:mailing_list, ['Accepted Applicants', 'Waitlisted Applicants', 'Denied Applicants', 'Undecided Applicants', 'All Applicants', 'Send Test Email to Myself', 'Send Email To Those Who Have Not Applied','All Users'], {include_blank: "Select a category"}, { :class => 'form-control' }) %> 34 |
35 | 36 |
37 | <%= f.submit class: 'btn btn-primary' %> 38 |
39 | <% end %> 40 | 41 | -------------------------------------------------------------------------------- /test/controllers/hardware_items_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HardwareItemsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @hardware_item = hardware_items(:one) 6 | end 7 | 8 | test "should get index" do 9 | get hardware_items_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_hardware_item_url 15 | assert_response :success 16 | end 17 | 18 | test "should create hardware_item" do 19 | assert_difference('HardwareItem.count') do 20 | post hardware_items_url, params: { hardware_item: { available: @hardware_item.available, category: @hardware_item.category, count: @hardware_item.count, link: @hardware_item.link, name: @hardware_item.name, uid: @hardware_item.uid } } 21 | end 22 | 23 | assert_redirected_to hardware_item_url(HardwareItem.last) 24 | end 25 | 26 | test "should show hardware_item" do 27 | get hardware_item_url(@hardware_item) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_hardware_item_url(@hardware_item) 33 | assert_response :success 34 | end 35 | 36 | test "should update hardware_item" do 37 | patch hardware_item_url(@hardware_item), params: { hardware_item: { available: @hardware_item.available, category: @hardware_item.category, count: @hardware_item.count, link: @hardware_item.link, name: @hardware_item.name, uid: @hardware_item.uid } } 38 | assert_redirected_to hardware_item_url(@hardware_item) 39 | end 40 | 41 | test "should destroy hardware_item" do 42 | assert_difference('HardwareItem.count', -1) do 43 | delete hardware_item_url(@hardware_item) 44 | end 45 | 46 | assert_redirected_to hardware_items_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /app/views/prizes/assign.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 |
9 | <% if @project.nil? %> 10 | <%= form_tag prize_assign_prize_path, method: :post do %> 11 |
12 |
13 | <%= text_field_tag :project_name, params[:project_name], class: 'form-control', placeholder: 'Project Name', type: "search", 'min-length' => 1, required: true, data: {autocomplete: autocomplete_project_title_prizes_path} %> 14 |
15 | 16 | <%= hidden_field_tag :prize_id, value: @prize.id %> 17 | 18 |
19 | <%= button_tag 'Assign Winner', type: :submit, class: 'btn btn-primary' %> 20 |
21 |
22 | <% end %> 23 | <% else %> 24 |

This Prize Has Been Assigned to a Winning Project.

25 |

Project Name: <%= @project.title %>

26 | <%= link_to "View Project", @project, class: 'btn btn-primary' %> 27 | <%= link_to "Remove Prize From Project", prize_unassign_prize_path(:project_name => @project.title, :prize_id => @prize.id), class: 'btn btn-danger', method: :post %> 28 | 29 | <% end %> 30 |
31 |
32 |
33 |
34 | 35 | <%= link_to 'Return to Prizes', prizes_path, class: 'btn btn-secondary' %> 36 | 37 | 38 | -------------------------------------------------------------------------------- /app/views/layouts/application.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <%= HackumassWeb::Application::HACKATHON_NAME %> Dashboard 5 | 6 | <%= csrf_meta_tags %> 7 | <% if HackumassWeb::Application::FAVICON_URL != nil %> 8 | <%= favicon_link_tag HackumassWeb::Application::FAVICON_URL %> 9 | <% end %> 10 | <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 11 | <%= stylesheet_link_tag 'custom', media: 'all', 'data-turbolinks-track': 'reload' %> 12 | <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 13 | <%= javascript_include_tag 'custom', 'data-turbolinks-track': 'reload' %> 14 | <%= tag :meta, name: :page_specific, action: action_name, controller: controller_name %> 15 | 16 | 17 | 18 | 19 |
20 |
21 | 22 | <% if user_signed_in? %> 23 | <%= render 'shared/navigation' %> 24 | <% end %> 25 | 26 |
27 | <% flash.each do |type, message| %> 28 |
29 | 30 | <%= message %> 31 |
32 | <% end %> 33 | 34 | 35 | <%= yield %> 36 |
37 |
38 | <% if user_signed_in? %> 39 | <%= render 'shared/footer' %> 40 | <% end %> 41 |
42 | 43 | 44 | 45 | -------------------------------------------------------------------------------- /app/views/projects/project_submit_info.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 | To win prizes and have your hack judged, you must first create and submit an overview of your project on Dashboard. Please review the following requirements before creating the project. 9 |
10 | 11 |
12 |
13 |
Project Creation
14 |
You should only create one project page per team.
15 | 16 |
Editing
17 |
Project submissions may be edited after creation until the deadline.
18 | 19 |
Team Members
20 |
Every member of the project team must be included in the submission to receive credit.
21 | 22 |
Prizes
23 |
Up to 4 individual prizes are given per team. If there are more than 4 team members, only 4 will receive prizes.
24 | 25 |
26 |
27 | 28 | 29 | 30 |
31 | The email address associated with your account is: <%= current_user.email%>. 32 |
33 | In order to be added to a project as a contributor, the person creating the new project must add the email address above as a team member. 34 |
35 | 36 |
37 | <% if has_access_to_projects? %> 38 | <%= link_to new_project_path, class: "nav-link #{'active' if is_projects_create_active?}" do %> 39 |

Create New Project

40 | <% end %> 41 | <% end %> 42 |
43 |
44 | -------------------------------------------------------------------------------- /app/views/devise/sessions/new.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= render 'partial/hackathonlogo', local_assigns: {width: "90%", height: "90%"}%> 4 | 5 | <% if HackumassWeb::Application::PROJECTS_PUBLIC and Project.all.count > 0 %> 6 | <%= link_to "View #{HackumassWeb::Application::HACKATHON_NAME} #{HackumassWeb::Application::HACKATHON_VERSION} Projects", public_projects_path, class: 'btn btn-primary btn-block' %> 7 |
8 | <% end %> 9 | 10 | 11 | <%= form_for(resource, as: resource_name, url: session_path(resource_name), html:{class: "card"}) do |f| %> 12 |
13 |
Login to your account
14 |
15 | 16 | <%= f.email_field :email, placeholder: "Enter Email", autofocus: true, class: "form-control" %> 17 |
18 |
19 | 20 | <%= f.password_field :password, placeholder: "Password", autocomplete: "off", class: "form-control"%> 21 |
22 |
23 | 27 |
28 | 31 |
32 | <% end %> 33 |
34 | <%= render "devise/shared/links" %> 35 |

36 | <%= render 'partial/hackathonfooter' %> 37 |
38 |
39 |
-------------------------------------------------------------------------------- /public/422.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (422) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

Opppsssss! We're sorry, but something went wrong.

62 |
63 |

We are so sorry this happened! Do you want to Go back to safety!

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /public/500.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | We're sorry, but something went wrong (500) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

Opppsssss! We're sorry, but something went wrong.

62 |
63 |

We are so sorry this happened! Do you want to Go back to safety!

64 |
65 | 66 | 67 | -------------------------------------------------------------------------------- /app/views/projects/_public_navigation.html.erb: -------------------------------------------------------------------------------- 1 |
2 |
3 | 27 |
28 |
29 |
30 |
31 |
32 |
33 | 42 |
43 |
44 |
45 |
46 | -------------------------------------------------------------------------------- /public/404.html.erb: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | The page you were looking for doesn't exist (404) 5 | 6 | 55 | 56 | 57 | 58 | 59 |
60 |
61 |

Hey there! It seems like the page you were looking for doesn't exist.

62 |

You may have mistyped the address or the page may have moved.

63 |
64 |

Go back to safety!

65 |
66 | 67 | 68 | -------------------------------------------------------------------------------- /test/controllers/mentorship_requests_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MentorshipRequestsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @mentorship_request = mentorship_requests(:one) 6 | end 7 | 8 | test "should get index" do 9 | get mentorship_requests_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_mentorship_request_url 15 | assert_response :success 16 | end 17 | 18 | test "should create mentorship_request" do 19 | assert_difference('MentorshipRequest.count') do 20 | post mentorship_requests_url, params: { mentorship_request: { mentor_id: @mentorship_request.mentor_id, status: @mentorship_request.status, title: @mentorship_request.title, type: @mentorship_request.type, user_id: @mentorship_request.user_id } } 21 | end 22 | 23 | assert_redirected_to mentorship_request_url(MentorshipRequest.last) 24 | end 25 | 26 | test "should show mentorship_request" do 27 | get mentorship_request_url(@mentorship_request) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_mentorship_request_url(@mentorship_request) 33 | assert_response :success 34 | end 35 | 36 | test "should update mentorship_request" do 37 | patch mentorship_request_url(@mentorship_request), params: { mentorship_request: { mentor_id: @mentorship_request.mentor_id, status: @mentorship_request.status, title: @mentorship_request.title, type: @mentorship_request.type, user_id: @mentorship_request.user_id } } 38 | assert_redirected_to mentorship_request_url(@mentorship_request) 39 | end 40 | 41 | test "should destroy mentorship_request" do 42 | assert_difference('MentorshipRequest.count', -1) do 43 | delete mentorship_request_url(@mentorship_request) 44 | end 45 | 46 | assert_redirected_to mentorship_requests_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /test/controllers/mentorship_notifications_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class MentorshipNotificationsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @mentorship_notification = mentorship_notifications(:one) 6 | end 7 | 8 | test "should get index" do 9 | get mentorship_notifications_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_mentorship_notification_url 15 | assert_response :success 16 | end 17 | 18 | test "should create mentorship_notification" do 19 | assert_difference('MentorshipNotification.count') do 20 | post mentorship_notifications_url, params: { mentorship_notification: { all: @mentorship_notification.all, tech: @mentorship_notification.tech, user_id: @mentorship_notification.user_id } } 21 | end 22 | 23 | assert_redirected_to mentorship_notification_url(MentorshipNotification.last) 24 | end 25 | 26 | test "should show mentorship_notification" do 27 | get mentorship_notification_url(@mentorship_notification) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_mentorship_notification_url(@mentorship_notification) 33 | assert_response :success 34 | end 35 | 36 | test "should update mentorship_notification" do 37 | patch mentorship_notification_url(@mentorship_notification), params: { mentorship_notification: { all: @mentorship_notification.all, tech: @mentorship_notification.tech, user_id: @mentorship_notification.user_id } } 38 | assert_redirected_to mentorship_notification_url(@mentorship_notification) 39 | end 40 | 41 | test "should destroy mentorship_notification" do 42 | assert_difference('MentorshipNotification.count', -1) do 43 | delete mentorship_notification_url(@mentorship_notification) 44 | end 45 | 46 | assert_redirected_to mentorship_notifications_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /config/environments/test.rb: -------------------------------------------------------------------------------- 1 | Rails.application.configure do 2 | # Settings specified here will take precedence over those in config/application.rb. 3 | 4 | # The test environment is used exclusively to run your application's 5 | # test suite. You never need to work with it otherwise. Remember that 6 | # your test database is "scratch space" for the test suite and is wiped 7 | # and recreated between test runs. Don't rely on the data there! 8 | config.cache_classes = true 9 | 10 | # Do not eager load code on boot. This avoids loading your whole application 11 | # just for the purpose of running a single test. If you are using a tool that 12 | # preloads Rails for running tests, you may have to set it to true. 13 | config.eager_load = false 14 | 15 | # Configure public file server for tests with Cache-Control for performance. 16 | config.public_file_server.enabled = true 17 | config.public_file_server.headers = { 18 | 'Cache-Control' => 'public, max-age=3600' 19 | } 20 | 21 | # Show full error reports and disable caching. 22 | config.consider_all_requests_local = true 23 | config.action_controller.perform_caching = false 24 | 25 | # Raise exceptions instead of rendering exception templates. 26 | config.action_dispatch.show_exceptions = false 27 | 28 | # Disable request forgery protection in test environment. 29 | config.action_controller.allow_forgery_protection = false 30 | config.action_mailer.perform_caching = false 31 | 32 | # Tell Action Mailer not to deliver emails to the real world. 33 | # The :test delivery method accumulates sent emails in the 34 | # ActionMailer::Base.deliveries array. 35 | config.action_mailer.delivery_method = :test 36 | 37 | # Print deprecation notices to the stderr. 38 | config.active_support.deprecation = :stderr 39 | 40 | # Raises error for missing translations 41 | # config.action_view.raise_on_missing_translations = true 42 | end 43 | -------------------------------------------------------------------------------- /test/controllers/hardware_checkouts_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class HardwareCheckoutsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @hardware_checkout = hardware_checkouts(:one) 6 | end 7 | 8 | test "should get index" do 9 | get hardware_checkouts_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_hardware_checkout_url 15 | assert_response :success 16 | end 17 | 18 | test "should create hardware_checkout" do 19 | assert_difference('HardwareCheckout.count') do 20 | post hardware_checkouts_url, params: { hardware_checkout: { checked_out_by: @hardware_checkout.checked_out_by, item_id: @hardware_checkout.item_id, item_upc: @hardware_checkout.item_upc, user_email: @hardware_checkout.user_email, user_id: @hardware_checkout.user_id } } 21 | end 22 | 23 | assert_redirected_to hardware_checkout_url(HardwareCheckout.last) 24 | end 25 | 26 | test "should show hardware_checkout" do 27 | get hardware_checkout_url(@hardware_checkout) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_hardware_checkout_url(@hardware_checkout) 33 | assert_response :success 34 | end 35 | 36 | test "should update hardware_checkout" do 37 | patch hardware_checkout_url(@hardware_checkout), params: { hardware_checkout: { checked_out_by: @hardware_checkout.checked_out_by, item_id: @hardware_checkout.item_id, item_upc: @hardware_checkout.item_upc, user_email: @hardware_checkout.user_email, user_id: @hardware_checkout.user_id } } 38 | assert_redirected_to hardware_checkout_url(@hardware_checkout) 39 | end 40 | 41 | test "should destroy hardware_checkout" do 42 | assert_difference('HardwareCheckout.count', -1) do 43 | delete hardware_checkout_url(@hardware_checkout) 44 | end 45 | 46 | assert_redirected_to hardware_checkouts_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /app/views/pages/check_in.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 |
7 |
8 |
9 | 10 | 11 | 12 |
13 |

<%= @check_in_count %>

14 | Check-In Attendees 15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 | 23 | 24 | 25 |
26 |

<%= @rsvp_count %>

27 | RSVP'd Users 28 |
29 |
30 |
31 |
32 |
33 | 34 |
35 |
36 | <%= form_tag check_in_path, method: :get, class:'col-lg-12' do%> 37 |
38 | <%= text_field_tag :email,'', class: 'form-control', placeholder: 'Scan QR Code or Type email', :autofocus => true, :onfocus => 'this.select()', :onmouseup => 'return false', data: {autocomplete: autocomplete_user_email_pages_path}, 'min-length' => 1%> 39 | 40 | <%= submit_tag 'Check In', class: 'btn btn-primary' %> 41 | 42 |
43 |
44 | 45 |
46 | <%end%> 47 |
48 |
49 | -------------------------------------------------------------------------------- /test/controllers/event_applications_controller_test.rb: -------------------------------------------------------------------------------- 1 | require 'test_helper' 2 | 3 | class EventApplicationsControllerTest < ActionDispatch::IntegrationTest 4 | setup do 5 | @event_application = event_applications(:one) 6 | end 7 | 8 | test "should get index" do 9 | get event_applications_url 10 | assert_response :success 11 | end 12 | 13 | test "should get new" do 14 | get new_event_application_url 15 | assert_response :success 16 | end 17 | 18 | test "should create event_application" do 19 | assert_difference('EventApplication.count') do 20 | post event_applications_url, params: { event_application: { food_restrictions: @event_application.food_restrictions, grad_year: @event_application.grad_year, major: @event_application.major, name: @event_application.name, university: @event_application.university, user_id: @event_application.user_id } } 21 | end 22 | 23 | assert_redirected_to event_application_url(EventApplication.last) 24 | end 25 | 26 | test "should show event_application" do 27 | get event_application_url(@event_application) 28 | assert_response :success 29 | end 30 | 31 | test "should get edit" do 32 | get edit_event_application_url(@event_application) 33 | assert_response :success 34 | end 35 | 36 | test "should update event_application" do 37 | patch event_application_url(@event_application), params: { event_application: { food_restrictions: @event_application.food_restrictions, grad_year: @event_application.grad_year, major: @event_application.major, name: @event_application.name, university: @event_application.university, user_id: @event_application.user_id } } 38 | assert_redirected_to event_application_url(@event_application) 39 | end 40 | 41 | test "should destroy event_application" do 42 | assert_difference('EventApplication.count', -1) do 43 | delete event_application_url(@event_application) 44 | end 45 | 46 | assert_redirected_to event_applications_url 47 | end 48 | end 49 | -------------------------------------------------------------------------------- /app/views/hardware_items/_checked_out_items.html.erb: -------------------------------------------------------------------------------- 1 | <% if @checked_out_items.empty? %> 2 |
This item hasn't been checked out yet
3 | <% else %> 4 | <% if HackumassWeb::Application::SLACK_ENABLED %> 5 |
6 | <%= hidden_field_tag :authenticity_token, form_authenticity_token -%> 7 | 8 | 9 | 10 |
11 |
12 | <% end %> 13 | <% end %> 14 | 15 | 16 | 17 | <% @checked_out_items.each do |item| %> 18 | 19 | 20 | 30 | 31 | 32 | <% end %> 33 | 34 |
<%= item.user.full_name.titleize %> on <%= item.created_at.strftime('%A, %b %d at %I:%M %p')%> 21 | <% if HackumassWeb::Application::SLACK_ENABLED %> 22 |
23 | <%= hidden_field_tag :authenticity_token, form_authenticity_token -%> 24 | 25 | 26 | 27 |
28 | <% end %> 29 |
<%= link_to 'Return', item, class: 'btn btn-sm btn-danger', method: :delete, data: { confirm: 'Are you sure you want to return this item?' } %>
35 | -------------------------------------------------------------------------------- /app/views/projects/team.html.erb: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | 7 |
8 |
9 |
10 |

Here you can add other <%= HackumassWeb::Application::HACKATHON_NAME %> participants to your project team. All participants on your team can edit the project and be given credit for the work done on it. To find the email address to use to add them, have them check their project page.

11 | <%= form_tag project_add_team_member_path, method: :post, class:'col-lg-12' do%> 12 |
13 | <%= text_field_tag :add_team_member, params[:add_team_member], class: 'form-control', placeholder: 'Email Address', type: "search", 'min-length' => 1%> 14 | 15 | <%= submit_tag 'Add Member', name: nil, class: 'btn btn-danger' %> 16 | 17 |
18 | <%end%> 19 |
20 |
21 |
22 | 23 |
24 |
25 |
26 | 27 | <% @project.user.each do |usr| %> 28 | 29 | 30 | 35 | 36 | <% end %> 37 |
<%= usr.full_name.titleize %> 31 | <%= form_tag project_remove_team_member_path, method: :post, class:'col-lg-12' do%> 32 | <%= button_tag 'Remove', type: :submit, value: usr.id, name: :user_to_remove,class: 'btn btn-danger' %> 33 | <%end%> 34 |
38 |
39 |
40 |
41 | 42 |
43 |
44 | 45 |
46 | <%= link_to 'Return to Project', project_path(@project), class: 'btn btn-secondary' %> 47 |
48 | 49 | 50 |
51 | --------------------------------------------------------------------------------