Merge branch 'master' into patch-1

This commit is contained in:
James Mason 2017-12-11 16:49:40 -08:00 committed by GitHub
commit 418088cc04
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
103 changed files with 568 additions and 352 deletions

View file

@ -1,19 +1,11 @@
# This configuration was generated by # This configuration was generated by
# `rubocop --auto-gen-config` # `rubocop --auto-gen-config`
# on 2017-07-14 12:03:16 +0000 using RuboCop version 0.49.1. # on 2017-11-27 22:40:12 +0530 using RuboCop version 0.51.0.
# The point is for the user to remove these configuration records # The point is for the user to remove these configuration records
# one by one as the offenses are removed from the code base. # one by one as the offenses are removed from the code base.
# Note that changes in the inspected code, or installation of new # Note that changes in the inspected code, or installation of new
# versions of RuboCop, may require this file to be generated again. # versions of RuboCop, may require this file to be generated again.
# Offense count: 15
# Cop supports --auto-correct.
# Configuration parameters: Include, TreatCommentsAsGroupSeparators.
# Include: **/Gemfile, **/gems.rb
Bundler/OrderedGems:
Exclude:
- 'Gemfile'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
@ -46,7 +38,7 @@ Layout/EmptyLineAfterMagicComment:
Exclude: Exclude:
- 'spec/models/conference_spec.rb' - 'spec/models/conference_spec.rb'
# Offense count: 104 # Offense count: 109
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: empty_lines, no_empty_lines # SupportedStyles: empty_lines, no_empty_lines
@ -151,7 +143,7 @@ Layout/MultilineHashBraceLayout:
Layout/MultilineMethodCallBraceLayout: Layout/MultilineMethodCallBraceLayout:
Enabled: false Enabled: false
# Offense count: 55 # Offense count: 53
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth. # Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
# SupportedStyles: aligned, indented, indented_relative_to_receiver # SupportedStyles: aligned, indented, indented_relative_to_receiver
@ -192,10 +184,11 @@ Layout/SpaceAroundOperators:
Exclude: Exclude:
- 'lib/tasks/data.rake' - 'lib/tasks/data.rake'
# Offense count: 416 # Offense count: 463
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles, SupportedStylesForEmptyBraces.
# SupportedStyles: space, no_space # SupportedStyles: space, no_space
# SupportedStylesForEmptyBraces: space, no_space
Layout/SpaceBeforeBlockBraces: Layout/SpaceBeforeBlockBraces:
Enabled: false Enabled: false
@ -205,20 +198,13 @@ Layout/SpaceBeforeComma:
Exclude: Exclude:
- 'lib/tasks/data_demo.rake' - 'lib/tasks/data_demo.rake'
# Offense count: 1
# Cop supports --auto-correct.
# Configuration parameters: AllowForAlignment.
Layout/SpaceBeforeFirstArg:
Exclude:
- 'spec/controllers/admin/roles_controller_spec.rb'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
Layout/SpaceBeforeSemicolon: Layout/SpaceBeforeSemicolon:
Exclude: Exclude:
- 'Guardfile' - 'Guardfile'
# Offense count: 51 # Offense count: 54
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces, SpaceBeforeBlockParameters. # Configuration parameters: EnforcedStyle, SupportedStyles, EnforcedStyleForEmptyBraces, SupportedStylesForEmptyBraces, SpaceBeforeBlockParameters.
# SupportedStyles: space, no_space # SupportedStyles: space, no_space
@ -293,6 +279,13 @@ Lint/IneffectiveAccessModifier:
- 'app/models/conference.rb' - 'app/models/conference.rb'
# Offense count: 2 # Offense count: 2
Lint/RescueWithoutErrorClass:
Exclude:
- 'app/controllers/users/omniauth_callbacks_controller.rb'
- 'lib/tasks/migrate_config.rake'
# Offense count: 2
# Cop supports --auto-correct.
Lint/ScriptPermission: Lint/ScriptPermission:
Exclude: Exclude:
- 'Guardfile' - 'Guardfile'
@ -305,49 +298,41 @@ Lint/UnusedBlockArgument:
Exclude: Exclude:
- 'lib/tasks/user.rake' - 'lib/tasks/user.rake'
# Offense count: 114 # Offense count: 136
Metrics/AbcSize: Metrics/AbcSize:
Max: 86 Max: 86
# Offense count: 233 # Offense count: 258
# Configuration parameters: CountComments, ExcludedMethods. # Configuration parameters: CountComments, ExcludedMethods.
Metrics/BlockLength: Metrics/BlockLength:
Max: 471 Max: 471
# Offense count: 23 # Offense count: 28
Metrics/CyclomaticComplexity: Metrics/CyclomaticComplexity:
Max: 12 Max: 14
Exclude:
- 'app/models/track.rb'
# Offense count: 2353 # Offense count: 2774
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns. # Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
# URISchemes: http, https # URISchemes: http, https
Metrics/LineLength: Metrics/LineLength:
Max: 619 Max: 619
# Offense count: 120 # Offense count: 133
# Configuration parameters: CountComments. # Configuration parameters: CountComments.
Metrics/MethodLength: Metrics/MethodLength:
Max: 56 Max: 56
Exclude:
- 'app/models/admin_ability.rb'
# Offense count: 3 # Offense count: 4
# Configuration parameters: CountComments. # Configuration parameters: CountComments.
Metrics/ModuleLength: Metrics/ModuleLength:
Max: 159 Max: 171
Exclude:
- 'app/helpers/format_helper.rb'
# Offense count: 15
Metrics/PerceivedComplexity:
Max: 16
Exclude:
- 'app/models/track.rb'
# Offense count: 20 # Offense count: 20
Style/AccessorMethodName: Metrics/PerceivedComplexity:
Max: 16
# Offense count: 20
Naming/AccessorMethodName:
Exclude: Exclude:
- 'app/controllers/admin/events_controller.rb' - 'app/controllers/admin/events_controller.rb'
- 'app/controllers/application_controller.rb' - 'app/controllers/application_controller.rb'
@ -356,6 +341,51 @@ Style/AccessorMethodName:
- 'app/models/target.rb' - 'app/models/target.rb'
- 'app/models/user.rb' - 'app/models/user.rb'
# Offense count: 2
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms.
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS
Naming/FileName:
Exclude:
- 'Gemfile'
- 'Vagrantfile'
# Offense count: 2
# Configuration parameters: Blacklist.
# Blacklist: END, (?-mix:EO[A-Z]{1})
Naming/HeredocDelimiterNaming:
Exclude:
- 'spec/factories/users.rb'
- 'spec/models/user_spec.rb'
# Offense count: 2
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist, MethodDefinitionMacros.
# NamePrefix: is_, has_, have_
# NamePrefixBlacklist: is_, has_, have_
# NameWhitelist: is_a?
# MethodDefinitionMacros: define_method, define_singleton_method
Naming/PredicateName:
Exclude:
- 'spec/**/*'
- 'app/models/comment.rb'
- 'app/models/contact.rb'
# Offense count: 2
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: snake_case, normalcase, non_integer
Naming/VariableNumber:
Exclude:
- 'spec/models/ticket_purchase_spec.rb'
# Offense count: 4
# Cop supports --auto-correct.
# Configuration parameters: AutoCorrect.
Performance/HashEachMethods:
Exclude:
- 'app/controllers/admin/conferences_controller.rb'
- 'app/helpers/application_helper.rb'
- 'db/migrate/20140701123203_add_events_per_week_to_conference.rb'
- 'spec/factories/event_users.rb'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles.
@ -386,7 +416,14 @@ Style/ConditionalAssignment:
- 'db/migrate/20140610165551_migrate_data_person_to_user.rb' - 'db/migrate/20140610165551_migrate_data_person_to_user.rb'
- 'db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb' - 'db/migrate/20140820124117_undo_wrong_migration20140801080705_add_users_to_events.rb'
# Offense count: 464 # Offense count: 9
Style/DateTime:
Exclude:
- 'app/models/conference.rb'
- 'app/models/program.rb'
- 'spec/models/conference_spec.rb'
# Offense count: 488
Style/Documentation: Style/Documentation:
Enabled: false Enabled: false
@ -419,14 +456,13 @@ Style/EmptyMethod:
- 'db/migrate/20130216122155_set_registration_defaults_to_false.rb' - 'db/migrate/20130216122155_set_registration_defaults_to_false.rb'
# Offense count: 2 # Offense count: 2
# Configuration parameters: ExpectMatchingDefinition, Regex, IgnoreExecutableScripts, AllowedAcronyms. # Cop supports --auto-correct.
# AllowedAcronyms: CLI, DSL, ACL, API, ASCII, CPU, CSS, DNS, EOF, GUID, HTML, HTTP, HTTPS, ID, IP, JSON, LHS, QPS, RAM, RHS, RPC, SLA, SMTP, SQL, SSH, TCP, TLS, TTL, UDP, UI, UID, UUID, URI, URL, UTF8, VM, XML, XMPP, XSRF, XSS Style/Encoding:
Style/FileName:
Exclude: Exclude:
- 'Gemfile' - 'app/uploaders/picture_uploader.rb'
- 'Vagrantfile' - 'spec/models/conference_spec.rb'
# Offense count: 24 # Offense count: 32
# Configuration parameters: MinBodyLength. # Configuration parameters: MinBodyLength.
Style/GuardClause: Style/GuardClause:
Enabled: false Enabled: false
@ -445,7 +481,6 @@ Style/HashSyntax:
# Configuration parameters: MaxLineLength. # Configuration parameters: MaxLineLength.
Style/IfUnlessModifier: Style/IfUnlessModifier:
Exclude: Exclude:
- 'app/controllers/admin/booths_controller.rb'
- 'app/controllers/admin/events_controller.rb' - 'app/controllers/admin/events_controller.rb'
- 'app/controllers/api/v1/events_controller.rb' - 'app/controllers/api/v1/events_controller.rb'
- 'app/controllers/conference_registrations_controller.rb' - 'app/controllers/conference_registrations_controller.rb'
@ -454,7 +489,6 @@ Style/IfUnlessModifier:
- 'app/models/commercial.rb' - 'app/models/commercial.rb'
- 'app/models/conference.rb' - 'app/models/conference.rb'
- 'app/models/email_settings.rb' - 'app/models/email_settings.rb'
- 'app/models/ticket_purchase.rb'
- 'app/models/user.rb' - 'app/models/user.rb'
- 'db/migrate/20151031092713_change_conference_id_to_venue_id_in_rooms.rb' - 'db/migrate/20151031092713_change_conference_id_to_venue_id_in_rooms.rb'
- 'lib/tasks/events_registrations.rake' - 'lib/tasks/events_registrations.rake'
@ -469,7 +503,7 @@ Style/LineEndConcatenation:
- 'spec/features/conference_spec.rb' - 'spec/features/conference_spec.rb'
- 'spec/features/registration_periods_spec.rb' - 'spec/features/registration_periods_spec.rb'
# Offense count: 6 # Offense count: 9
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles. # Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: require_parentheses, require_no_parentheses, require_no_parentheses_except_multiline # SupportedStyles: require_parentheses, require_no_parentheses, require_no_parentheses_except_multiline
@ -498,12 +532,14 @@ Style/MutableConstant:
# Offense count: 4 # Offense count: 4
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: Whitelist.
# Whitelist: be, be_a, be_an, be_between, be_falsey, be_kind_of, be_instance_of, be_truthy, be_within, eq, eql, end_with, include, match, raise_error, respond_to, start_with
Style/NestedParenthesizedCalls: Style/NestedParenthesizedCalls:
Exclude: Exclude:
- 'spec/features/conference_spec.rb' - 'spec/features/conference_spec.rb'
- 'spec/models/conference_spec.rb' - 'spec/models/conference_spec.rb'
# Offense count: 26 # Offense count: 27
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles. # Configuration parameters: EnforcedStyle, MinBodyLength, SupportedStyles.
# SupportedStyles: skip_modifier_ifs, always # SupportedStyles: skip_modifier_ifs, always
@ -548,6 +584,12 @@ Style/OptionalArguments:
Exclude: Exclude:
- 'app/models/event.rb' - 'app/models/event.rb'
# Offense count: 1
# Cop supports --auto-correct.
Style/OrAssignment:
Exclude:
- 'app/controllers/schedules_controller.rb'
# Offense count: 3 # Offense count: 3
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: AllowSafeAssignment. # Configuration parameters: AllowSafeAssignment.
@ -557,7 +599,7 @@ Style/ParenthesesAroundCondition:
- 'app/controllers/application_controller.rb' - 'app/controllers/application_controller.rb'
- 'app/helpers/format_helper.rb' - 'app/helpers/format_helper.rb'
# Offense count: 14 # Offense count: 15
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: PreferredDelimiters. # Configuration parameters: PreferredDelimiters.
Style/PercentLiteralDelimiters: Style/PercentLiteralDelimiters:
@ -571,20 +613,9 @@ Style/PercentLiteralDelimiters:
- 'app/models/contact.rb' - 'app/models/contact.rb'
- 'app/models/registration.rb' - 'app/models/registration.rb'
- 'app/models/subscription.rb' - 'app/models/subscription.rb'
- 'app/models/track.rb'
- 'app/uploaders/picture_uploader.rb' - 'app/uploaders/picture_uploader.rb'
- 'spec/models/program_spec.rb' - 'spec/models/program_spec.rb'
- 'app/models/track.rb'
# Offense count: 2
# Configuration parameters: NamePrefix, NamePrefixBlacklist, NameWhitelist.
# NamePrefix: is_, has_, have_
# NamePrefixBlacklist: is_, has_, have_
# NameWhitelist: is_a?
Style/PredicateName:
Exclude:
- 'spec/**/*'
- 'app/models/comment.rb'
- 'app/models/contact.rb'
# Offense count: 1 # Offense count: 1
# Cop supports --auto-correct. # Cop supports --auto-correct.
@ -607,16 +638,6 @@ Style/RedundantParentheses:
Exclude: Exclude:
- 'app/controllers/admin/base_controller.rb' - 'app/controllers/admin/base_controller.rb'
# Offense count: 9
# Cop supports --auto-correct.
# Configuration parameters: AllowMultipleReturnValues.
Style/RedundantReturn:
Exclude:
- 'app/helpers/application_helper.rb'
- 'app/helpers/format_helper.rb'
- 'app/helpers/paths_helper.rb'
- 'app/helpers/users_helper.rb'
# Offense count: 2 # Offense count: 2
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes. # Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
@ -662,7 +683,7 @@ Style/StringLiteralsInInterpolation:
Exclude: Exclude:
- 'lib/tasks/dump_db.rake' - 'lib/tasks/dump_db.rake'
# Offense count: 73 # Offense count: 79
# Cop supports --auto-correct. # Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, MinSize, SupportedStyles. # Configuration parameters: EnforcedStyle, MinSize, SupportedStyles.
# SupportedStyles: percent, brackets # SupportedStyles: percent, brackets
@ -701,17 +722,3 @@ Style/TrailingCommaInLiteral:
- 'Guardfile' - 'Guardfile'
- 'db/migrate/20140701123203_add_events_per_week_to_conference.rb' - 'db/migrate/20140701123203_add_events_per_week_to_conference.rb'
- 'spec/models/conference_spec.rb' - 'spec/models/conference_spec.rb'
# Offense count: 3
# Cop supports --auto-correct.
Style/UnneededInterpolation:
Exclude:
- 'app/helpers/format_helper.rb'
- 'spec/controllers/admin/conferences_controller_spec.rb'
# Offense count: 2
# Configuration parameters: EnforcedStyle, SupportedStyles.
# SupportedStyles: snake_case, normalcase, non_integer
Style/VariableNumber:
Exclude:
- 'spec/models/ticket_purchase_spec.rb'

42
Gemfile
View file

@ -6,7 +6,10 @@ if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4')
end end
# as web framework # as web framework
gem 'rails', '~> 4.2.8' gem 'rails', '~> 5.0.5'
# Use Puma as the app server
gem 'puma', '~> 3.0'
# enables serving assets in production and setting your logger to standard out # enables serving assets in production and setting your logger to standard out
# both of which are required to run an application on a twelve-factor provider # both of which are required to run an application on a twelve-factor provider
@ -27,11 +30,11 @@ gem 'paper_trail'
# for upload management # for upload management
gem 'carrierwave' gem 'carrierwave'
gem 'mini_magick'
gem 'carrierwave-bombshelter' gem 'carrierwave-bombshelter'
gem 'mini_magick'
# for internationalizing # for internationalizing
gem 'rails-i18n', '~> 4.0.0' gem 'rails-i18n', '~> 5.0.0'
# as authentification framework # as authentification framework
gem 'devise' gem 'devise'
@ -40,15 +43,15 @@ gem 'devise_ichain_authenticatable'
# for openID authentication # for openID authentication
gem 'omniauth' gem 'omniauth'
gem 'omniauth-facebook' gem 'omniauth-facebook'
gem 'omniauth-openid'
gem 'omniauth-google-oauth2'
gem 'omniauth-github' gem 'omniauth-github'
gem 'omniauth-google-oauth2'
gem 'omniauth-openid'
# Bot-filtering # Bot-filtering
gem 'recaptcha', require: 'recaptcha/rails' gem 'recaptcha', require: 'recaptcha/rails'
# as authorization framework # as authorization framework
gem 'cancancan' gem 'cancancan', '~> 2.0'
# for roles # for roles
gem 'rolify' gem 'rolify'
@ -60,8 +63,8 @@ gem 'unobtrusive_flash', '>=3'
gem 'transitions', :require => %w( transitions active_record/transitions ) gem 'transitions', :require => %w( transitions active_record/transitions )
# for comments # for comments
gem 'awesome_nested_set', '~> 3.1.3'
gem 'acts_as_commentable_with_threading' gem 'acts_as_commentable_with_threading'
gem 'awesome_nested_set', '~> 3.1.3'
# as templating language # as templating language
gem 'haml-rails' gem 'haml-rails'
@ -73,11 +76,11 @@ gem 'sass-rails', '>= 4.0.2'
gem 'uglifier', '>= 1.3.0' gem 'uglifier', '>= 1.3.0'
# as the front-end framework # as the front-end framework
gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'autoprefixer-rails' gem 'autoprefixer-rails'
gem 'formtastic-bootstrap' gem 'bootstrap-sass', '~> 3.3.4.1'
gem 'formtastic', '~> 3.1.1'
gem 'cocoon' gem 'cocoon'
gem 'formtastic', '~> 3.1.5'
gem 'formtastic-bootstrap'
# as the JavaScript library # as the JavaScript library
gem 'jquery-rails' gem 'jquery-rails'
@ -108,8 +111,8 @@ source 'https://rails-assets.org' do
gem 'rails-assets-waypoints' gem 'rails-assets-waypoints'
# for markdown editors # for markdown editors
gem 'rails-assets-bootstrap-markdown' gem 'rails-assets-bootstrap-markdown'
gem 'rails-assets-to-markdown'
gem 'rails-assets-markdown' gem 'rails-assets-markdown'
gem 'rails-assets-to-markdown'
end end
# as date picker # as date picker
@ -129,9 +132,9 @@ gem 'gravtastic'
gem 'country_select' gem 'country_select'
# as PDF generator # as PDF generator
gem 'prawn-qrcode', '~> 0.2.2.1'
gem 'prawn_rails' gem 'prawn_rails'
gem 'rqrcode' gem 'rqrcode'
gem 'prawn-qrcode', '~> 0.2.2.1'
# to render XLS spreadsheets # to render XLS spreadsheets
gem 'axlsx', git: 'https://github.com/randym/axlsx.git' gem 'axlsx', git: 'https://github.com/randym/axlsx.git'
@ -157,12 +160,11 @@ gem 'rdoc-generator-fivefish'
# for visitor tracking # for visitor tracking
gem 'ahoy_matey' gem 'ahoy_matey'
gem 'activeuuid'
gem 'piwik_analytics', '~> 1.0.1' gem 'piwik_analytics', '~> 1.0.1'
# for recurring jobs # for recurring jobs
gem 'whenever', :require => false
gem 'delayed_job_active_record' gem 'delayed_job_active_record'
gem 'whenever', :require => false
# to run scripts # to run scripts
gem 'daemons' gem 'daemons'
@ -216,10 +218,10 @@ gem 'nokogiri', '>= 1.8.1'
group :development do group :development do
# to launch specs when files are modified # to launch specs when files are modified
gem 'guard-rspec' gem 'guard-rspec'
gem 'spring-commands-rspec'
gem 'haml_lint', '~> 0.24.0' gem 'haml_lint', '~> 0.24.0'
gem 'spring-commands-rspec'
# for static code analisys # for static code analisys
gem 'rubocop', '~> 0.49.0', require: false gem 'rubocop', '~> 0.51.0', require: false
# as database # as database
gem 'sqlite3' gem 'sqlite3'
# to open mails # to open mails
@ -234,11 +236,11 @@ end
group :test do group :test do
# as test framework # as test framework
gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
gem 'database_cleaner'
gem 'capybara' gem 'capybara'
gem 'poltergeist' gem 'database_cleaner'
gem 'phantomjs', :require => 'phantomjs/poltergeist' gem 'phantomjs', :require => 'phantomjs/poltergeist'
gem 'poltergeist'
gem 'rspec-rails', '~> 3.5', '>= 3.5.2'
# for measuring test coverage # for measuring test coverage
gem 'coveralls', require: false gem 'coveralls', require: false
# for describing models # for describing models
@ -253,6 +255,8 @@ group :test do
gem 'stripe-ruby-mock' gem 'stripe-ruby-mock'
# For validating JSON schemas # For validating JSON schemas
gem 'json-schema' gem 'json-schema'
# For using 'assigns' in tests
gem 'rails-controller-testing'
end end
group :development, :test do group :development, :test do

View file

@ -12,62 +12,65 @@ GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
remote: https://rails-assets.org/ remote: https://rails-assets.org/
specs: specs:
actionmailer (4.2.9) actioncable (5.0.5)
actionpack (= 4.2.9) actionpack (= 5.0.5)
actionview (= 4.2.9) nio4r (>= 1.2, < 3.0)
activejob (= 4.2.9) websocket-driver (~> 0.6.1)
actionmailer (5.0.5)
actionpack (= 5.0.5)
actionview (= 5.0.5)
activejob (= 5.0.5)
mail (~> 2.5, >= 2.5.4) mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
actionpack (4.2.9) actionpack (5.0.5)
actionview (= 4.2.9) actionview (= 5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
rack (~> 1.6) rack (~> 2.0)
rack-test (~> 0.6.2) rack-test (~> 0.6.3)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.2) rails-html-sanitizer (~> 1.0, >= 1.0.2)
actionview (4.2.9) actionview (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
builder (~> 3.1) builder (~> 3.1)
erubis (~> 2.7.0) erubis (~> 2.7.0)
rails-dom-testing (~> 1.0, >= 1.0.5) rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.0.3) rails-html-sanitizer (~> 1.0, >= 1.0.3)
active_model_serializers (0.9.4) active_model_serializers (0.9.4)
activemodel (>= 3.2) activemodel (>= 3.2)
activejob (4.2.9) activejob (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
globalid (>= 0.3.0) globalid (>= 0.3.6)
activemodel (4.2.9) activemodel (5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
builder (~> 3.1) activerecord (5.0.5)
activerecord (4.2.9) activemodel (= 5.0.5)
activemodel (= 4.2.9) activesupport (= 5.0.5)
activesupport (= 4.2.9) arel (~> 7.0)
arel (~> 6.0) activesupport (5.0.5)
activesupport (4.2.9) concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7) i18n (~> 0.7)
minitest (~> 5.1) minitest (~> 5.1)
thread_safe (~> 0.3, >= 0.3.4)
tzinfo (~> 1.1) tzinfo (~> 1.1)
activeuuid (0.6.1)
activerecord (>= 3.1)
uuidtools
acts_as_commentable_with_threading (1.2.0) acts_as_commentable_with_threading (1.2.0)
activerecord (>= 3.0) activerecord (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
awesome_nested_set (>= 2.0) awesome_nested_set (>= 2.0)
acts_as_list (0.4.0) acts_as_list (0.9.7)
activerecord (>= 3.0) activerecord (>= 3.0)
addressable (2.5.1) addressable (2.5.1)
public_suffix (~> 2.0, >= 2.0.2) public_suffix (~> 2.0, >= 2.0.2)
ahoy_matey (1.0.0) ahoy_matey (1.6.0)
addressable addressable
browser (>= 0.4.0) browser (~> 2.0)
geocoder geocoder
referer-parser rack-attack (< 6)
railties
referer-parser (>= 0.3.0)
request_store request_store
safely_block (>= 0.1.1)
user_agent_parser user_agent_parser
uuidtools uuidtools
arel (6.0.4) arel (7.1.4)
ast (2.3.0) ast (2.3.0)
autoprefixer-rails (7.1.1) autoprefixer-rails (7.1.1)
execjs execjs
@ -86,10 +89,10 @@ GEM
bootstrap-switch-rails (3.0.2) bootstrap-switch-rails (3.0.2)
bootstrap3-datetimepicker-rails (3.0.3) bootstrap3-datetimepicker-rails (3.0.3)
momentjs-rails (>= 2.8.1) momentjs-rails (>= 2.8.1)
browser (0.6.0) browser (2.5.1)
builder (3.2.3) builder (3.2.3)
byebug (9.0.6) byebug (9.0.6)
cancancan (1.13.1) cancancan (2.0.0)
capybara (2.6.2) capybara (2.6.2)
addressable addressable
mime-types (>= 1.16) mime-types (>= 1.16)
@ -144,7 +147,7 @@ GEM
daemons (1.1.9) daemons (1.1.9)
dante (0.2.0) dante (0.2.0)
database_cleaner (1.3.0) database_cleaner (1.3.0)
debug_inspector (0.0.2) debug_inspector (0.0.3)
delayed_job (4.1.3) delayed_job (4.1.3)
activesupport (>= 3.0, < 5.2) activesupport (>= 3.0, < 5.2)
delayed_job_active_record (4.1.2) delayed_job_active_record (4.1.2)
@ -166,6 +169,7 @@ GEM
dotenv-rails (2.2.1) dotenv-rails (2.2.1)
dotenv (= 2.2.1) dotenv (= 2.2.1)
railties (>= 3.2, < 5.2) railties (>= 3.2, < 5.2)
errbase (0.0.3)
erubis (2.7.0) erubis (2.7.0)
execjs (2.6.0) execjs (2.6.0)
factory_girl (4.5.0) factory_girl (4.5.0)
@ -184,11 +188,11 @@ GEM
font-awesome-rails (4.7.0.2) font-awesome-rails (4.7.0.2)
railties (>= 3.2, < 5.2) railties (>= 3.2, < 5.2)
formatador (0.2.5) formatador (0.2.5)
formtastic (3.1.3) formtastic (3.1.5)
actionpack (>= 3.2.13) actionpack (>= 3.2.13)
formtastic-bootstrap (3.1.1) formtastic-bootstrap (3.1.1)
formtastic (>= 3.0) formtastic (>= 3.0)
geocoder (1.2.2) geocoder (1.4.4)
globalid (0.4.0) globalid (0.4.0)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
gravtastic (3.2.6) gravtastic (3.2.6)
@ -291,6 +295,7 @@ GEM
mysql2 (0.4.9) mysql2 (0.4.9)
nenv (0.3.0) nenv (0.3.0)
netrc (0.11.0) netrc (0.11.0)
nio4r (2.1.0)
nokogiri (1.8.1) nokogiri (1.8.1)
mini_portile2 (~> 2.3.0) mini_portile2 (~> 2.3.0)
notiffany (0.1.1) notiffany (0.1.1)
@ -325,9 +330,9 @@ GEM
activerecord (>= 3.0, < 6.0) activerecord (>= 3.0, < 6.0)
activesupport (>= 3.0, < 6.0) activesupport (>= 3.0, < 6.0)
request_store (~> 1.1) request_store (~> 1.1)
parallel (1.11.2) parallel (1.12.0)
parser (2.4.0.0) parser (2.4.0.2)
ast (~> 2.2) ast (~> 2.3)
pdf-core (0.2.5) pdf-core (0.2.5)
phantomjs (2.1.1.0) phantomjs (2.1.1.0)
piwik_analytics (1.0.2) piwik_analytics (1.0.2)
@ -354,23 +359,27 @@ GEM
method_source (~> 0.8.1) method_source (~> 0.8.1)
slop (~> 3.4) slop (~> 3.4)
public_suffix (2.0.5) public_suffix (2.0.5)
rack (1.6.8) puma (3.10.0)
rack (2.0.3)
rack-attack (5.0.1)
rack
rack-openid (1.3.1) rack-openid (1.3.1)
rack (>= 1.1.0) rack (>= 1.1.0)
ruby-openid (>= 2.1.8) ruby-openid (>= 2.1.8)
rack-test (0.6.3) rack-test (0.6.3)
rack (>= 1.0) rack (>= 1.0)
rails (4.2.9) rails (5.0.5)
actionmailer (= 4.2.9) actioncable (= 5.0.5)
actionpack (= 4.2.9) actionmailer (= 5.0.5)
actionview (= 4.2.9) actionpack (= 5.0.5)
activejob (= 4.2.9) actionview (= 5.0.5)
activemodel (= 4.2.9) activejob (= 5.0.5)
activerecord (= 4.2.9) activemodel (= 5.0.5)
activesupport (= 4.2.9) activerecord (= 5.0.5)
bundler (>= 1.3.0, < 2.0) activesupport (= 5.0.5)
railties (= 4.2.9) bundler (>= 1.3.0)
sprockets-rails railties (= 5.0.5)
sprockets-rails (>= 2.0.0)
rails-assets-bootstrap (3.3.6) rails-assets-bootstrap (3.3.6)
rails-assets-jquery (>= 1.9.1, < 3) rails-assets-jquery (>= 1.9.1, < 3)
rails-assets-bootstrap-markdown (2.10.0) rails-assets-bootstrap-markdown (2.10.0)
@ -388,30 +397,32 @@ GEM
rails-assets-to-markdown (1.3.0) rails-assets-to-markdown (1.3.0)
rails-assets-trianglify (0.4.0) rails-assets-trianglify (0.4.0)
rails-assets-waypoints (4.0.0) rails-assets-waypoints (4.0.0)
rails-deprecated_sanitizer (1.0.3) rails-controller-testing (1.0.2)
activesupport (>= 4.2.0.alpha) actionpack (~> 5.x, >= 5.0.1)
rails-dom-testing (1.0.8) actionview (~> 5.x, >= 5.0.1)
activesupport (>= 4.2.0.beta, < 5.0) activesupport (~> 5.x)
nokogiri (~> 1.6) rails-dom-testing (2.0.3)
rails-deprecated_sanitizer (>= 1.0.1) activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.0.3) rails-html-sanitizer (1.0.3)
loofah (~> 2.0) loofah (~> 2.0)
rails-i18n (4.0.8) rails-i18n (5.0.4)
i18n (~> 0.7) i18n (~> 0.7)
railties (~> 4.0) railties (~> 5.0)
rails_12factor (0.0.3) rails_12factor (0.0.3)
rails_serve_static_assets rails_serve_static_assets
rails_stdout_logging rails_stdout_logging
rails_serve_static_assets (0.0.4) rails_serve_static_assets (0.0.4)
rails_stdout_logging (0.0.3) rails_stdout_logging (0.0.3)
railties (4.2.9) railties (5.0.5)
actionpack (= 4.2.9) actionpack (= 5.0.5)
activesupport (= 4.2.9) activesupport (= 5.0.5)
method_source
rake (>= 0.8.7) rake (>= 0.8.7)
thor (>= 0.18.1, < 2.0) thor (>= 0.18.1, < 2.0)
rainbow (2.2.2) rainbow (2.2.2)
rake rake
rake (12.0.0) rake (12.3.0)
rb-fsevent (0.10.2) rb-fsevent (0.10.2)
rb-inotify (0.9.10) rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2) ffi (>= 0.5.0, < 2)
@ -424,7 +435,7 @@ GEM
recaptcha (4.6.2) recaptcha (4.6.2)
json json
redcarpet (3.2.3) redcarpet (3.2.3)
referer-parser (0.2.1) referer-parser (0.3.0)
request_store (1.1.0) request_store (1.1.0)
responders (2.4.0) responders (2.4.0)
actionpack (>= 4.2.0, < 5.3) actionpack (>= 4.2.0, < 5.3)
@ -461,19 +472,21 @@ GEM
rspec-mocks (~> 3.6.0) rspec-mocks (~> 3.6.0)
rspec-support (~> 3.6.0) rspec-support (~> 3.6.0)
rspec-support (3.6.0) rspec-support (3.6.0)
rubocop (0.49.1) rubocop (0.51.0)
parallel (~> 1.10) parallel (~> 1.10)
parser (>= 2.3.3.1, < 3.0) parser (>= 2.3.3.1, < 3.0)
powerpack (~> 0.1) powerpack (~> 0.1)
rainbow (>= 1.99.1, < 3.0) rainbow (>= 2.2.2, < 3.0)
ruby-progressbar (~> 1.7) ruby-progressbar (~> 1.7)
unicode-display_width (~> 1.0, >= 1.0.1) unicode-display_width (~> 1.0, >= 1.0.1)
ruby-oembed (0.8.14) ruby-oembed (0.8.14)
ruby-openid (2.5.0) ruby-openid (2.5.0)
ruby-progressbar (1.8.1) ruby-progressbar (1.9.0)
ruby_dep (1.5.0) ruby_dep (1.5.0)
rubyzip (1.2.1) rubyzip (1.2.1)
safe_yaml (1.0.4) safe_yaml (1.0.4)
safely_block (0.2.0)
errbase
sass (3.2.19) sass (3.2.19)
sass-rails (5.0.6) sass-rails (5.0.6)
railties (>= 4.0.0, < 6) railties (>= 4.0.0, < 6)
@ -500,10 +513,10 @@ GEM
sprockets (3.7.1) sprockets (3.7.1)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
rack (> 1, < 3) rack (> 1, < 3)
sprockets-rails (2.3.3) sprockets-rails (3.2.1)
actionpack (>= 3.0) actionpack (>= 4.0)
activesupport (>= 3.0) activesupport (>= 4.0)
sprockets (>= 2.8, < 4.0) sprockets (>= 3.0.0)
sqlite3 (1.3.9) sqlite3 (1.3.9)
stripe (1.43.0) stripe (1.43.0)
rest-client (~> 1.4) rest-client (~> 1.4)
@ -534,11 +547,11 @@ GEM
unicode_utils (1.4.0) unicode_utils (1.4.0)
unobtrusive_flash (3.1.0) unobtrusive_flash (3.1.0)
railties railties
user_agent_parser (2.1.5) user_agent_parser (2.4.0)
uuidtools (2.1.5) uuidtools (2.1.5)
warden (1.2.4) warden (1.2.4)
rack (>= 1.0) rack (>= 1.0)
web-console (2.2.1) web-console (2.3.0)
activemodel (>= 4.0) activemodel (>= 4.0)
binding_of_caller (>= 0.7.2) binding_of_caller (>= 0.7.2)
railties (>= 4.0) railties (>= 4.0)
@ -562,7 +575,6 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
active_model_serializers active_model_serializers
activeuuid
acts_as_commentable_with_threading acts_as_commentable_with_threading
acts_as_list acts_as_list
ahoy_matey ahoy_matey
@ -574,7 +586,7 @@ DEPENDENCIES
bootstrap-switch-rails (~> 3.0.0) bootstrap-switch-rails (~> 3.0.0)
bootstrap3-datetimepicker-rails (~> 3.0.2) bootstrap3-datetimepicker-rails (~> 3.0.2)
byebug byebug
cancancan cancancan (~> 2.0)
capybara capybara
carrierwave carrierwave
carrierwave-bombshelter carrierwave-bombshelter
@ -594,7 +606,7 @@ DEPENDENCIES
faker faker
feature feature
font-awesome-rails font-awesome-rails
formtastic (~> 3.1.1) formtastic (~> 3.1.5)
formtastic-bootstrap formtastic-bootstrap
gravtastic gravtastic
guard-rspec guard-rspec
@ -625,7 +637,8 @@ DEPENDENCIES
poltergeist poltergeist
prawn-qrcode (~> 0.2.2.1) prawn-qrcode (~> 0.2.2.1)
prawn_rails prawn_rails
rails (~> 4.2.8) puma (~> 3.0)
rails (~> 5.0.5)
rails-assets-bootstrap-markdown! rails-assets-bootstrap-markdown!
rails-assets-date.format! rails-assets-date.format!
rails-assets-holderjs! rails-assets-holderjs!
@ -637,7 +650,8 @@ DEPENDENCIES
rails-assets-to-markdown! rails-assets-to-markdown!
rails-assets-trianglify! rails-assets-trianglify!
rails-assets-waypoints! rails-assets-waypoints!
rails-i18n (~> 4.0.0) rails-controller-testing
rails-i18n (~> 5.0.0)
rails_12factor rails_12factor
rdoc-generator-fivefish rdoc-generator-fivefish
recaptcha recaptcha
@ -647,7 +661,7 @@ DEPENDENCIES
rqrcode rqrcode
rspec-activemodel-mocks rspec-activemodel-mocks
rspec-rails (~> 3.5, >= 3.5.2) rspec-rails (~> 3.5, >= 3.5.2)
rubocop (~> 0.49.0) rubocop (~> 0.51.0)
ruby-oembed ruby-oembed
sass-rails (>= 4.0.2) sass-rails (>= 4.0.2)
selectize-rails selectize-rails

View file

@ -42,7 +42,7 @@ There are two configurations to deploy OSEM with Docker: *evaluation mode* and *
If you want to evaluate OSEM to see if it fits your needs, the default configuration in `docker-compose.env` will work perfectly fine for you. If you want to evaluate OSEM to see if it fits your needs, the default configuration in `docker-compose.env` will work perfectly fine for you.
For convenience reasons, `docker-compose.yml` already contains a [MailHog](https://github.com/mailhog/MailHog) service configuration. MailHog For convenience reasons, `docker-compose.yml` already contains a [MailHog](https://github.com/mailhog/MailHog) service configuration. MailHog
is going to catch every email sent by OSEM and displays them on a special web service. Thus, it eliminitates the need to set up an SMTP server just to try out OSEM. is going to catch every email sent by OSEM and displays them on a special web service. Thus, it eliminates the need to set up an SMTP server just to try out OSEM.
Just point your browser to http://localhost:8025 to get access to registration confirmation links etc. Just point your browser to http://localhost:8025 to get access to registration confirmation links etc.
Run `docker-compose up --build` to start the services. On first run, it will take a few minutes to initialize the database. Thus, wait a few minutes before you open up Run `docker-compose up --build` to start the services. On first run, it will take a few minutes to initialize the database. Thus, wait a few minutes before you open up
@ -105,6 +105,7 @@ There are a couple of environment variables you can set to configure OSEM. Check
| CLOUDINARY_URL | *string* | Configure your cloudinary.com cloud name and api key/secret | CLOUDINARY_URL | *string* | Configure your cloudinary.com cloud name and api key/secret
| STRIPE_PUBLISHABLE_KEY | *string* | Publishable Key for Stripe Gateway | STRIPE_PUBLISHABLE_KEY | *string* | Publishable Key for Stripe Gateway
| STRIPE_SECRET_KEY | *string* | Secret Key for Stripe Gateway | STRIPE_SECRET_KEY | *string* | Secret Key for Stripe Gateway
| OSEM_REDIS_URL | *string* | Redis server URL e.g. redis://localhost:6379/1
### Online Ticket Payments ### Online Ticket Payments
We use [Stripe](https://stripe.com) for accepting your ticket payments securely over the web. We use [Stripe](https://stripe.com) for accepting your ticket payments securely over the web.

View file

@ -79,11 +79,23 @@ $(function () {
$("#conference-start-datepicker").on("dp.change",function (e) { $("#conference-start-datepicker").on("dp.change",function (e) {
$('#conference-end-datepicker').data("DateTimePicker").setMinDate(e.date); $('#conference-end-datepicker').data("DateTimePicker").setMinDate(e.date);
if (!$('#conference-end-datepicker').val()) {
$('#conference-end-datepicker').data("DateTimePicker").setDate(e.date);
}
}); });
$("#conference-start-datepicker").change(function (e) {
$('#conference-start-datepicker').val()?$('#conference-end-datepicker').data("DateTimePicker").setMinDate(e.date):$('#conference-end-datepicker').data("DateTimePicker").setMinDate(null);
});
$("#conference-end-datepicker").on("dp.change",function (e) { $("#conference-end-datepicker").on("dp.change",function (e) {
$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date); $('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date);
}); });
$("#conference-end-datepicker").change(function (e) {
$('#conference-end-datepicker').val()?$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(e.date):$('#conference-start-datepicker').data("DateTimePicker").setMaxDate(null);
});
$("#registration-period-start-datepicker").on("dp.change",function (e) { $("#registration-period-start-datepicker").on("dp.change",function (e) {
$('#registration-period-end-datepicker').data("DateTimePicker").setMinDate(e.date); $('#registration-period-end-datepicker').data("DateTimePicker").setMinDate(e.date);
}); });

View file

@ -1,6 +1,6 @@
module Admin module Admin
class BaseController < ApplicationController class BaseController < ApplicationController
before_filter :verify_user_admin before_action :verify_user_admin
private private

View file

@ -2,7 +2,7 @@ module Admin
class RegistrationsController < Admin::BaseController class RegistrationsController < Admin::BaseController
load_and_authorize_resource :conference, find_by: :short_title load_and_authorize_resource :conference, find_by: :short_title
load_and_authorize_resource :registration, through: :conference load_and_authorize_resource :registration, through: :conference
before_filter :set_user, except: [:index] before_action :set_user, except: [:index]
def index def index
authorize! :show, Registration.new(conference_id: @conference.id) authorize! :show, Registration.new(conference_id: @conference.id)

View file

@ -1,10 +1,10 @@
class ApplicationController < ActionController::Base class ApplicationController < ActionController::Base
before_filter :set_paper_trail_whodunnit before_action :set_paper_trail_whodunnit
include ApplicationHelper include ApplicationHelper
add_flash_types :error add_flash_types :error
protect_from_forgery with: :exception protect_from_forgery with: :exception, prepend: true
before_filter :get_conferences before_action :get_conferences
before_filter :store_location before_action :store_location
# Ensure every controller authorizes resource or skips authorization (skip_authorization_check) # Ensure every controller authorizes resource or skips authorization (skip_authorization_check)
check_authorization unless: :devise_controller? check_authorization unless: :devise_controller?

View file

@ -1,5 +1,5 @@
class ConferenceRegistrationsController < ApplicationController class ConferenceRegistrationsController < ApplicationController
before_filter :authenticate_user!, except: [:new, :create] before_action :authenticate_user!, except: [:new, :create]
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
authorize_resource :conference_registrations, class: Registration, except: [:new, :create] authorize_resource :conference_registrations, class: Registration, except: [:new, :create]
before_action :set_registration, only: [:edit, :update, :destroy, :show] before_action :set_registration, only: [:edit, :update, :destroy, :show]

View file

@ -1,5 +1,5 @@
class SubscriptionsController < ApplicationController class SubscriptionsController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
load_and_authorize_resource only: [:create, :destroy], through: :conference load_and_authorize_resource only: [:create, :destroy], through: :conference

View file

@ -1,5 +1,5 @@
class TicketPurchasesController < ApplicationController class TicketPurchasesController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
authorize_resource :conference_registrations, class: Registration authorize_resource :conference_registrations, class: Registration
authorize_resource authorize_resource

View file

@ -1,9 +1,9 @@
class TicketsController < ApplicationController class TicketsController < ApplicationController
before_filter :authenticate_user! before_action :authenticate_user!
load_resource :conference, find_by: :short_title load_resource :conference, find_by: :short_title
load_resource :ticket, through: :conference load_resource :ticket, through: :conference
authorize_resource :conference_registrations, class: Registration authorize_resource :conference_registrations, class: Registration
before_filter :check_load_resource, only: :index before_action :check_load_resource, only: :index
def index; end def index; end

View file

@ -66,7 +66,7 @@ module ApplicationHelper
else else
ts = all.join ts = all.join
end end
return ts ts
end end
def difficulty_levels(conference) def difficulty_levels(conference)
@ -80,7 +80,7 @@ module ApplicationHelper
else else
ts = all.join ts = all.join
end end
return ts ts
end end
def unread_notifications(user) def unread_notifications(user)

View file

@ -101,17 +101,17 @@ module FormatHelper
def icon_for_todo(bool) def icon_for_todo(bool)
if bool if bool
return 'fa fa-check' 'fa fa-check'
else else
return 'fa fa-times' 'fa fa-times'
end end
end end
def class_for_todo(bool) def class_for_todo(bool)
if bool if bool
return 'todolist-ok' 'todolist-ok'
else else
return 'todolist-missing' 'todolist-missing'
end end
end end
@ -122,7 +122,7 @@ module FormatHelper
plural || singular.pluralize plural || singular.pluralize
end end
"#{word}" word
end end
# Returns black or white deppending on what of them contrast more with the # Returns black or white deppending on what of them contrast more with the

View file

@ -5,9 +5,9 @@ module PathsHelper
def active_nav_li(link) def active_nav_li(link)
if current_page?(link) if current_page?(link)
return 'active' 'active'
else else
return '' ''
end end
end end
end end

View file

@ -18,7 +18,7 @@ module UsersHelper
providers << provider if !ENV["OSEM_#{provider.upcase}_KEY"].blank? && !ENV["OSEM_#{provider.upcase}_SECRET"].blank? providers << provider if !ENV["OSEM_#{provider.upcase}_KEY"].blank? && !ENV["OSEM_#{provider.upcase}_SECRET"].blank?
end end
return providers.uniq providers.uniq
end end
# Receives a hash, generated from User model, function get_roles # Receives a hash, generated from User model, function get_roles

View file

@ -0,0 +1,2 @@
class ApplicationJob < ActiveJob::Base
end

View file

@ -1,4 +1,4 @@
class ConferenceCfpUpdateMailJob < ActiveJob::Base class ConferenceCfpUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceDateUpdateMailJob < ActiveJob::Base class ConferenceDateUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceRegistrationDateUpdateMailJob < ActiveJob::Base class ConferenceRegistrationDateUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceScheduleUpdateMailJob < ActiveJob::Base class ConferenceScheduleUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class ConferenceVenueUpdateMailJob < ActiveJob::Base class ConferenceVenueUpdateMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(conference) def perform(conference)

View file

@ -1,4 +1,4 @@
class EventCommentMailJob < ActiveJob::Base class EventCommentMailJob < ApplicationJob
queue_as :default queue_as :default
def perform(comment) def perform(comment)

View file

@ -1,5 +1,5 @@
module Ahoy module Ahoy
class Event < ActiveRecord::Base class Event < ApplicationRecord
self.table_name = 'ahoy_events' self.table_name = 'ahoy_events'
belongs_to :visit belongs_to :visit

View file

@ -1,4 +1,4 @@
class Answer < ActiveRecord::Base class Answer < ApplicationRecord
has_many :qanswers has_many :qanswers
has_many :questions, through: :qanswers has_many :questions, through: :qanswers

View file

@ -0,0 +1,3 @@
class ApplicationRecord < ActiveRecord::Base
self.abstract_class = true
end

View file

@ -1,4 +1,4 @@
class Booth < ActiveRecord::Base class Booth < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class BoothRequest < ActiveRecord::Base class BoothRequest < ApplicationRecord
belongs_to :booth belongs_to :booth
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Campaign < ActiveRecord::Base class Campaign < ApplicationRecord
validates :name, :utm_campaign, presence: true validates :name, :utm_campaign, presence: true
has_many :targets, dependent: :nullify has_many :targets, dependent: :nullify

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted # cannot delete program if there are events submitted
class Cfp < ActiveRecord::Base class Cfp < ApplicationRecord
TYPES = %w(events booths tracks).freeze TYPES = %w(events booths tracks).freeze
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Comment < ActiveRecord::Base class Comment < ApplicationRecord
acts_as_nested_set scope: %i(commentable_id commentable_type) acts_as_nested_set scope: %i(commentable_id commentable_type)
validates :body, presence: true validates :body, presence: true
validates :user, presence: true validates :user, presence: true

View file

@ -1,4 +1,4 @@
class Commercial < ActiveRecord::Base class Commercial < ApplicationRecord
require 'oembed' require 'oembed'
belongs_to :commercialable, polymorphic: true belongs_to :commercialable, polymorphic: true

View file

@ -1,4 +1,4 @@
class Conference < ActiveRecord::Base class Conference < ApplicationRecord
include RevisionCount include RevisionCount
require 'uri' require 'uri'
serialize :events_per_week, Hash serialize :events_per_week, Hash

View file

@ -1,4 +1,4 @@
class Contact < ActiveRecord::Base class Contact < ApplicationRecord
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class DifficultyLevel < ActiveRecord::Base class DifficultyLevel < ApplicationRecord
belongs_to :program belongs_to :program
has_many :events, dependent: :nullify has_many :events, dependent: :nullify

View file

@ -1,4 +1,4 @@
class EmailSettings < ActiveRecord::Base class EmailSettings < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Event < ActiveRecord::Base class Event < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
include RevisionCount include RevisionCount
has_paper_trail on: [:create, :update], ignore: [:updated_at, :guid, :week], meta: { conference_id: :conference_id } has_paper_trail on: [:create, :update], ignore: [:updated_at, :guid, :week], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class EventSchedule < ActiveRecord::Base class EventSchedule < ApplicationRecord
belongs_to :schedule belongs_to :schedule
belongs_to :event belongs_to :event
belongs_to :room belongs_to :room

View file

@ -1,4 +1,4 @@
class EventType < ActiveRecord::Base class EventType < ApplicationRecord
belongs_to :program belongs_to :program
has_many :events, dependent: :restrict_with_error has_many :events, dependent: :restrict_with_error

View file

@ -1,4 +1,4 @@
class EventUser < ActiveRecord::Base class EventUser < ApplicationRecord
# TODO: Do we need these roles? # TODO: Do we need these roles?
ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator]] ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator]]

View file

@ -1,4 +1,4 @@
class EventsRegistration < ActiveRecord::Base class EventsRegistration < ApplicationRecord
belongs_to :registration belongs_to :registration
belongs_to :event belongs_to :event

View file

@ -1,4 +1,4 @@
class Lodging < ActiveRecord::Base class Lodging < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Openid < ActiveRecord::Base class Openid < ApplicationRecord
belongs_to :user belongs_to :user
validates :provider, :uid, presence: true validates :provider, :uid, presence: true

View file

@ -1,4 +1,4 @@
class Organization < ActiveRecord::Base class Organization < ApplicationRecord
resourcify :roles, dependent: :delete_all resourcify :roles, dependent: :delete_all
has_paper_trail has_paper_trail

View file

@ -1,4 +1,4 @@
class Payment < ActiveRecord::Base class Payment < ApplicationRecord
has_many :ticket_purchases has_many :ticket_purchases
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class PhysicalTicket < ActiveRecord::Base class PhysicalTicket < ApplicationRecord
belongs_to :ticket_purchase belongs_to :ticket_purchase
has_one :ticket, through: :ticket_purchase has_one :ticket, through: :ticket_purchase
has_one :conference, through: :ticket_purchase has_one :conference, through: :ticket_purchase

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted # cannot delete program if there are events submitted
class Program < ActiveRecord::Base class Program < ApplicationRecord
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class Qanswer < ActiveRecord::Base class Qanswer < ApplicationRecord
belongs_to :question belongs_to :question
belongs_to :answer, dependent: :delete belongs_to :answer, dependent: :delete

View file

@ -1,4 +1,4 @@
class Question < ActiveRecord::Base class Question < ApplicationRecord
belongs_to :question_type belongs_to :question_type
has_and_belongs_to_many :conferences has_and_belongs_to_many :conferences

View file

@ -1,3 +1,3 @@
class QuestionType < ActiveRecord::Base class QuestionType < ApplicationRecord
has_many :questions has_many :questions
end end

View file

@ -1,4 +1,4 @@
class Registration < ActiveRecord::Base class Registration < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class RegistrationPeriod < ActiveRecord::Base class RegistrationPeriod < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Resource < ActiveRecord::Base class Resource < ApplicationRecord
belongs_to :conference belongs_to :conference
validates :name, :used, :quantity, presence: true validates :name, :used, :quantity, presence: true
validates :used, :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true } validates :used, :quantity, numericality: { greater_than_or_equal_to: 0, only_integer: true }

View file

@ -1,4 +1,4 @@
class Role < ActiveRecord::Base class Role < ApplicationRecord
belongs_to :resource, polymorphic: true belongs_to :resource, polymorphic: true
has_many :users_roles has_many :users_roles
has_many :users, through: :users_roles has_many :users, through: :users_roles

View file

@ -1,4 +1,4 @@
class Room < ActiveRecord::Base class Room < ApplicationRecord
include RevisionCount include RevisionCount
belongs_to :venue belongs_to :venue
has_many :event_schedules, dependent: :destroy has_many :event_schedules, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Schedule < ActiveRecord::Base class Schedule < ApplicationRecord
belongs_to :program belongs_to :program
belongs_to :track belongs_to :track
has_many :event_schedules, dependent: :destroy has_many :event_schedules, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Splashpage < ActiveRecord::Base class Splashpage < ApplicationRecord
belongs_to :conference belongs_to :conference
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id } has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }

View file

@ -1,4 +1,4 @@
class Sponsor < ActiveRecord::Base class Sponsor < ApplicationRecord
belongs_to :sponsorship_level belongs_to :sponsorship_level
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class SponsorshipLevel < ActiveRecord::Base class SponsorshipLevel < ApplicationRecord
validates :title, presence: true validates :title, presence: true
belongs_to :conference belongs_to :conference
acts_as_list scope: :conference acts_as_list scope: :conference

View file

@ -1,4 +1,4 @@
class Subscription < ActiveRecord::Base class Subscription < ApplicationRecord
belongs_to :conference belongs_to :conference
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Target < ActiveRecord::Base class Target < ApplicationRecord
include ActionView::Helpers::TextHelper include ActionView::Helpers::TextHelper
default_scope { order('due_date ASC') } default_scope { order('due_date ASC') }

View file

@ -1,4 +1,4 @@
class Ticket < ActiveRecord::Base class Ticket < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :ticket_purchases, dependent: :destroy has_many :ticket_purchases, dependent: :destroy
has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user has_many :buyers, -> { distinct }, through: :ticket_purchases, source: :user

View file

@ -1,4 +1,4 @@
class TicketPurchase < ActiveRecord::Base class TicketPurchase < ApplicationRecord
belongs_to :ticket belongs_to :ticket
belongs_to :user belongs_to :user
belongs_to :conference belongs_to :conference

View file

@ -1,4 +1,4 @@
class TicketScanning < ActiveRecord::Base class TicketScanning < ApplicationRecord
belongs_to :physical_ticket belongs_to :physical_ticket
before_create :mark_user_present before_create :mark_user_present

View file

@ -1,4 +1,4 @@
class Track < ActiveRecord::Base class Track < ApplicationRecord
include ActiveRecord::Transitions include ActiveRecord::Transitions
include RevisionCount include RevisionCount

View file

@ -4,7 +4,7 @@ end
class UserDisabled < StandardError class UserDisabled < StandardError
end end
class User < ActiveRecord::Base class User < ApplicationRecord
rolify rolify
has_many :physical_tickets, through: :ticket_purchases do has_many :physical_tickets, through: :ticket_purchases do
def by_conference(conference) def by_conference(conference)

View file

@ -1,4 +1,4 @@
class UsersRole < ActiveRecord::Base class UsersRole < ApplicationRecord
belongs_to :role belongs_to :role
belongs_to :user belongs_to :user

View file

@ -1,4 +1,4 @@
class Vchoice < ActiveRecord::Base class Vchoice < ApplicationRecord
belongs_to :vday belongs_to :vday
belongs_to :vposition belongs_to :vposition

View file

@ -1,4 +1,4 @@
class Vday < ActiveRecord::Base class Vday < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :vchoices has_many :vchoices

View file

@ -1,4 +1,4 @@
class Venue < ActiveRecord::Base class Venue < ApplicationRecord
belongs_to :conference belongs_to :conference
has_one :commercial, as: :commercialable, dependent: :destroy has_one :commercial, as: :commercialable, dependent: :destroy
has_many :rooms, dependent: :destroy has_many :rooms, dependent: :destroy

View file

@ -1,4 +1,4 @@
class Visit < ActiveRecord::Base class Visit < ApplicationRecord
has_many :ahoy_events, class_name: 'Ahoy::Event' has_many :ahoy_events, class_name: 'Ahoy::Event'
belongs_to :user belongs_to :user
end end

View file

@ -1,4 +1,4 @@
class Vote < ActiveRecord::Base class Vote < ApplicationRecord
belongs_to :user belongs_to :user
belongs_to :event belongs_to :event

View file

@ -1,4 +1,4 @@
class Vposition < ActiveRecord::Base class Vposition < ApplicationRecord
belongs_to :conference belongs_to :conference
has_many :vchoices has_many :vchoices

View file

@ -27,7 +27,7 @@
= cfp.end_date.strftime('%A, %B %-d. %Y') = cfp.end_date.strftime('%A, %B %-d. %Y')
%td %td
%p %p
= markdown(truncate(cfp.description)) = truncate(cfp.description)
%td %td
= pluralize(cfp.remaining_days, 'day') = pluralize(cfp.remaining_days, 'day')
%td %td

View file

@ -165,7 +165,7 @@
%td= markdown(@event.abstract) %td= markdown(@event.abstract)
%tr %tr
%td %td
%b Description %b Requirements
%td= simple_format(@event.description) %td= simple_format(@event.description)
- if @conference.program && @conference.program.rating && @conference.program.rating > 0 - if @conference.program && @conference.program.rating && @conference.program.rating > 0

View file

@ -9,7 +9,7 @@
.row .row
.col-md-8 .col-md-8
= semantic_form_for(@lodging, url: (@lodging.new_record? ? admin_conference_lodgings_path : admin_conference_lodging_path(@conference.short_title, @lodging))) do |f| = semantic_form_for(@lodging, url: (@lodging.new_record? ? admin_conference_lodgings_path : admin_conference_lodging_path(@conference.short_title, @lodging))) do |f|
= f.input :name = f.input :name, input_html: { autofocus: true}
= f.input :website_link = f.input :website_link
= f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint = f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint
- if @lodging.picture? - if @lodging.picture?

View file

@ -3,7 +3,7 @@
= f.input :name, as: :string, required: true = f.input :name, as: :string, required: true
= f.input :description, as: :text, input_html: { rows: 10 }, placeholder: 'Decribe about your organization..' = f.input :description, as: :text, input_html: { rows: 10 }, placeholder: 'Decribe about your organization..'
= image_tag f.object.picture.thumb.url if f.object.picture? = image_tag f.object.picture.thumb.url if f.object.picture?
- if @organization.picture - if @organization.picture?
= image_tag(@organization.picture.thumb.url, width: '20%') = image_tag(@organization.picture.thumb.url, width: '20%')
= f.input :picture = f.input :picture
%p.text-right %p.text-right

View file

@ -8,7 +8,7 @@
- @organizations.each do |organization| - @organizations.each do |organization|
.col-md-4 .col-md-4
.thumbnail .thumbnail
= image_tag(organization.picture.thumb.url, width: '20%') = image_tag(organization.picture.thumb.url, width: '20%') if organization.picture?
.caption .caption
%h4 %h4
= organization.name = organization.name

3
bin/bundle Executable file
View file

@ -0,0 +1,3 @@
#!/usr/bin/env ruby.ruby2.4
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
load Gem.bin_path('bundler', 'bundle')

4
bin/rake Executable file
View file

@ -0,0 +1,4 @@
#!/usr/bin/env ruby.ruby2.4
require_relative '../config/boot'
require 'rake'
Rake.application.run

34
bin/setup Executable file
View file

@ -0,0 +1,34 @@
#!/usr/bin/env ruby.ruby2.4
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a starting point to setup your application.
# Add necessary setup steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
# puts "\n== Copying sample files =="
# unless File.exist?('config/database.yml')
# cp 'config/database.yml.sample', 'config/database.yml'
# end
puts "\n== Preparing database =="
system! 'bin/rails db:setup'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

29
bin/update Executable file
View file

@ -0,0 +1,29 @@
#!/usr/bin/env ruby.ruby2.4
require 'pathname'
require 'fileutils'
include FileUtils
# path to your application root.
APP_ROOT = Pathname.new File.expand_path('../../', __FILE__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
end
chdir APP_ROOT do
# This script is a way to update your development environment automatically.
# Add necessary update steps to this file.
puts '== Installing dependencies =='
system! 'gem install bundler --conservative'
system('bundle check') || system!('bundle install')
puts "\n== Updating database =="
system! 'bin/rails db:migrate'
puts "\n== Removing old logs and tempfiles =="
system! 'bin/rails log:clear tmp:clear'
puts "\n== Restarting application server =="
system! 'bin/rails restart'
end

View file

@ -60,9 +60,6 @@ module Osem
# Version of your assets, change this if you want to expire all your assets # Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0' config.assets.version = '1.0'
# Errors raised within `after_rollback`/`after_commit` propagate normally
# like in other Active Record callbacks.
config.active_record.raise_in_transactional_callbacks = true
config.active_job.queue_adapter = :delayed_job config.active_job.queue_adapter = :delayed_job
end end
end end

View file

@ -1,4 +1,3 @@
# Set up gems listed in the Gemfile. ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exist?(ENV['BUNDLE_GEMFILE']) require 'bundler/setup' # Set up gems listed in the Gemfile.

9
config/cable.yml Normal file
View file

@ -0,0 +1,9 @@
development:
adapter: async
test:
adapter: async
production:
adapter: redis
url: <%= ENV['OSEM_REDIS_URL'] %>

View file

@ -15,7 +15,7 @@ Osem::Application.configure do
config.eager_load = true config.eager_load = true
# Disable Rails's static asset server (Apache or nginx will already do this) # Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_files = false config.public_file_server.enabled = false
# Compress JavaScripts and CSS # Compress JavaScripts and CSS
config.assets.compress = true config.assets.compress = true

View file

@ -8,8 +8,8 @@ Osem::Application.configure do
config.cache_classes = true config.cache_classes = true
# Configure static asset server for tests with Cache-Control for performance # Configure static asset server for tests with Cache-Control for performance
config.serve_static_files = true config.public_file_server.enabled = true
config.static_cache_control = 'public, max-age=3600' config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
# Do not eager load code on boot. # Do not eager load code on boot.
config.eager_load = false config.eager_load = false

View file

@ -0,0 +1,6 @@
# Be sure to restart your server when you modify this file.
# ApplicationController.renderer.defaults.merge!(
# http_host: 'example.org',
# https: false
# )

View file

@ -0,0 +1,11 @@
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path
# Rails.application.config.assets.paths << Emoji.images_path
# Precompile additional assets.
# application.js, application.css, and all non-JS/CSS in app/assets folder are already added.
# Rails.application.config.assets.precompile += %w( search.js )

View file

@ -0,0 +1,5 @@
# Be sure to restart your server when you modify this file.
# Specify a serializer for the signed and encrypted cookie jars.
# Valid options are :json, :marshal, and :hybrid.
Rails.application.config.action_dispatch.cookies_serializer = :marshal

View file

@ -0,0 +1,4 @@
# Be sure to restart your server when you modify this file.
# Configure sensitive parameters which will be filtered from the log file.
Rails.application.config.filter_parameters += [:password]

View file

@ -1,15 +1,16 @@
# Be sure to restart your server when you modify this file. # Be sure to restart your server when you modify this file.
# Add new inflection rules using the following format # Add new inflection rules using the following format. Inflections
# (all these examples are active by default): # are locale specific, and you may define rules for as many different
# ActiveSupport::Inflector.inflections do |inflect| # locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en' # inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1' # inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people' # inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep ) # inflect.uncountable %w( fish sheep )
# end # end
#
# These inflection rules are supported but not enabled by default: # These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections do |inflect| # ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful' # inflect.acronym 'RESTful'
# end # end

View file

@ -2,4 +2,3 @@
# Add new mime types for use in respond_to blocks: # Add new mime types for use in respond_to blocks:
# Mime::Type.register "text/richtext", :rtf # Mime::Type.register "text/richtext", :rtf
# Mime::Type.register_alias "text/html", :iphone

View file

@ -0,0 +1,25 @@
# Be sure to restart your server when you modify this file.
#
# This file contains migration options to ease your Rails 5.0 upgrade.
#
# Once upgraded flip defaults one by one to migrate to the new default.
#
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
Rails.application.config.action_controller.raise_on_unfiltered_parameters = true
# Enable per-form CSRF tokens. Previous versions had false.
Rails.application.config.action_controller.per_form_csrf_tokens = false
# Enable origin-checking CSRF mitigation. Previous versions had false.
Rails.application.config.action_controller.forgery_protection_origin_check = false
# Make Ruby 2.4 preserve the timezone of the receiver when calling `to_time`.
# Previous versions had false.
ActiveSupport.to_time_preserves_timezone = false
# Require `belongs_to` associations by default. Previous versions had false.
Rails.application.config.active_record.belongs_to_required_by_default = false
# Do not halt callback chains when a callback returns false. Previous versions had true.
ActiveSupport.halt_callback_chains_on_return_false = true

47
config/puma.rb Normal file
View file

@ -0,0 +1,47 @@
# Puma can serve each request in a thread from an internal thread pool.
# The `threads` method setting takes two numbers a minimum and maximum.
# Any libraries that use thread pools should be configured to match
# the maximum value specified for Puma. Default is set to 5 threads for minimum
# and maximum, this matches the default thread size of Active Record.
#
threads_count = ENV.fetch("RAILS_MAX_THREADS") { 5 }.to_i
threads threads_count, threads_count
# Specifies the `port` that Puma will listen on to receive requests, default is 3000.
#
port ENV.fetch("PORT") { 3000 }
# Specifies the `environment` that Puma will run in.
#
environment ENV.fetch("RAILS_ENV") { "development" }
# Specifies the number of `workers` to boot in clustered mode.
# Workers are forked webserver processes. If using threads and workers together
# the concurrency of the application would be max `threads` * `workers`.
# Workers do not work on JRuby or Windows (both of which do not support
# processes).
#
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory. If you use this option
# you need to make sure to reconnect any threads in the `on_worker_boot`
# block.
#
preload_app!
# The code in the `on_worker_boot` will be called if you are using
# clustered mode by specifying a number of `workers`. After each worker
# process is booted this block will be run, if you are using `preload_app!`
# option you will want to use this block to reconnect to any threads
# or connections that may have been created at application boot, Ruby
# cannot share connections between processes.
#
on_worker_boot do
ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end
# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart

6
config/spring.rb Normal file
View file

@ -0,0 +1,6 @@
%w(
.ruby-version
.rbenv-vars
tmp/restart.txt
tmp/caching-dev.txt
).each { |path| Spring.watch(path) }

View file

@ -0,0 +1,5 @@
class ChangeVisitIdTypeOfAhoyEventsToInteger < ActiveRecord::Migration[5.0]
def change
change_column :ahoy_events, :visit_id, :integer, limit: nil
end
end

View file

@ -1,4 +1,3 @@
# encoding: UTF-8
# This file is auto-generated from the current state of the database. Instead # This file is auto-generated from the current state of the database. Instead
# of editing this file, please use the migrations feature of Active Record to # of editing this file, please use the migrations feature of Active Record to
# incrementally modify your database, and then regenerate this schema definition. # incrementally modify your database, and then regenerate this schema definition.
@ -11,20 +10,19 @@
# #
# It's strongly recommended that you check this file into your version control system. # It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20170924190528) do ActiveRecord::Schema.define(version: 20171118113113) do
create_table "ahoy_events", force: :cascade do |t| create_table "ahoy_events", force: :cascade do |t|
t.uuid "visit_id", limit: 16 t.integer "visit_id"
t.integer "user_id" t.integer "user_id"
t.string "name" t.string "name"
t.text "properties" t.text "properties"
t.datetime "time" t.datetime "time"
t.index ["time"], name: "index_ahoy_events_on_time"
t.index ["user_id"], name: "index_ahoy_events_on_user_id"
t.index ["visit_id"], name: "index_ahoy_events_on_visit_id"
end end
add_index "ahoy_events", ["time"], name: "index_ahoy_events_on_time"
add_index "ahoy_events", ["user_id"], name: "index_ahoy_events_on_user_id"
add_index "ahoy_events", ["visit_id"], name: "index_ahoy_events_on_visit_id"
create_table "answers", force: :cascade do |t| create_table "answers", force: :cascade do |t|
t.string "title" t.string "title"
t.datetime "created_at" t.datetime "created_at"
@ -37,11 +35,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "role" t.string "role"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.index ["booth_id"], name: "index_booth_requests_on_booth_id"
t.index ["user_id"], name: "index_booth_requests_on_user_id"
end end
add_index "booth_requests", ["booth_id"], name: "index_booth_requests_on_booth_id"
add_index "booth_requests", ["user_id"], name: "index_booth_requests_on_user_id"
create_table "booths", force: :cascade do |t| create_table "booths", force: :cascade do |t|
t.string "title" t.string "title"
t.text "description" t.text "description"
@ -89,12 +86,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.integer "parent_id" t.integer "parent_id"
t.integer "lft" t.integer "lft"
t.integer "rgt" t.integer "rgt"
t.index ["commentable_id"], name: "index_comments_on_commentable_id"
t.index ["commentable_type"], name: "index_comments_on_commentable_type"
t.index ["user_id"], name: "index_comments_on_user_id"
end end
add_index "comments", ["commentable_id"], name: "index_comments_on_commentable_id"
add_index "comments", ["commentable_type"], name: "index_comments_on_commentable_type"
add_index "comments", ["user_id"], name: "index_comments_on_user_id"
create_table "commercials", force: :cascade do |t| create_table "commercials", force: :cascade do |t|
t.string "commercial_id" t.string "commercial_id"
t.string "commercial_type" t.string "commercial_type"
@ -130,10 +126,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.integer "ticket_layout", default: 0 t.integer "ticket_layout", default: 0
t.string "custom_domain" t.string "custom_domain"
t.integer "booth_limit", default: 0 t.integer "booth_limit", default: 0
t.index ["organization_id"], name: "index_conferences_on_organization_id"
end end
add_index "conferences", ["organization_id"], name: "index_conferences_on_organization_id"
create_table "conferences_questions", id: false, force: :cascade do |t| create_table "conferences_questions", id: false, force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "question_id" t.integer "question_id"
@ -164,10 +159,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "queue" t.string "queue"
t.datetime "created_at" t.datetime "created_at"
t.datetime "updated_at" t.datetime "updated_at"
t.index ["priority", "run_at"], name: "delayed_jobs_priority"
end end
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority"
create_table "difficulty_levels", force: :cascade do |t| create_table "difficulty_levels", force: :cascade do |t|
t.string "title" t.string "title"
t.text "description" t.text "description"
@ -223,13 +217,12 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "start_time" t.datetime "start_time"
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.index ["event_id", "schedule_id"], name: "index_event_schedules_on_event_id_and_schedule_id", unique: true
t.index ["event_id"], name: "index_event_schedules_on_event_id"
t.index ["room_id"], name: "index_event_schedules_on_room_id"
t.index ["schedule_id"], name: "index_event_schedules_on_schedule_id"
end end
add_index "event_schedules", ["event_id", "schedule_id"], name: "index_event_schedules_on_event_id_and_schedule_id", unique: true
add_index "event_schedules", ["event_id"], name: "index_event_schedules_on_event_id"
add_index "event_schedules", ["room_id"], name: "index_event_schedules_on_room_id"
add_index "event_schedules", ["schedule_id"], name: "index_event_schedules_on_schedule_id"
create_table "event_types", force: :cascade do |t| create_table "event_types", force: :cascade do |t|
t.string "title", null: false t.string "title", null: false
t.integer "length", default: 30 t.integer "length", default: 30
@ -327,10 +320,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.string "token" t.string "token"
t.index ["token"], name: "index_physical_tickets_on_token", unique: true
end end
add_index "physical_tickets", ["token"], name: "index_physical_tickets_on_token", unique: true
create_table "programs", force: :cascade do |t| create_table "programs", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.integer "rating", default: 0 t.integer "rating", default: 0
@ -344,10 +336,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "voting_end_date" t.datetime "voting_end_date"
t.integer "selected_schedule_id" t.integer "selected_schedule_id"
t.integer "schedule_interval", default: 15, null: false t.integer "schedule_interval", default: 15, null: false
t.index ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
end end
add_index "programs", ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
create_table "qanswers", force: :cascade do |t| create_table "qanswers", force: :cascade do |t|
t.integer "question_id" t.integer "question_id"
t.integer "answer_id" t.integer "answer_id"
@ -416,11 +407,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "description" t.string "description"
t.integer "resource_id" t.integer "resource_id"
t.string "resource_type" t.string "resource_type"
t.index ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
t.index ["name"], name: "index_roles_on_name"
end end
add_index "roles", ["name", "resource_type", "resource_id"], name: "index_roles_on_name_and_resource_type_and_resource_id"
add_index "roles", ["name"], name: "index_roles_on_name"
create_table "rooms", force: :cascade do |t| create_table "rooms", force: :cascade do |t|
t.string "guid", null: false t.string "guid", null: false
t.string "name", null: false t.string "name", null: false
@ -433,11 +423,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "created_at", null: false t.datetime "created_at", null: false
t.datetime "updated_at", null: false t.datetime "updated_at", null: false
t.integer "track_id" t.integer "track_id"
t.index ["program_id"], name: "index_schedules_on_program_id"
t.index ["track_id"], name: "index_schedules_on_track_id"
end end
add_index "schedules", ["program_id"], name: "index_schedules_on_program_id"
add_index "schedules", ["track_id"], name: "index_schedules_on_track_id"
create_table "splashpages", force: :cascade do |t| create_table "splashpages", force: :cascade do |t|
t.integer "conference_id" t.integer "conference_id"
t.boolean "public" t.boolean "public"
@ -540,12 +529,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.date "end_date" t.date "end_date"
t.text "relevance" t.text "relevance"
t.integer "selected_schedule_id" t.integer "selected_schedule_id"
t.index ["room_id"], name: "index_tracks_on_room_id"
t.index ["selected_schedule_id"], name: "index_tracks_on_selected_schedule_id"
t.index ["submitter_id"], name: "index_tracks_on_submitter_id"
end end
add_index "tracks", ["room_id"], name: "index_tracks_on_room_id"
add_index "tracks", ["selected_schedule_id"], name: "index_tracks_on_selected_schedule_id"
add_index "tracks", ["submitter_id"], name: "index_tracks_on_submitter_id"
create_table "users", force: :cascade do |t| create_table "users", force: :cascade do |t|
t.string "email", default: "", null: false t.string "email", default: "", null: false
t.string "encrypted_password", default: "", null: false t.string "encrypted_password", default: "", null: false
@ -579,20 +567,18 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.boolean "is_admin", default: false t.boolean "is_admin", default: false
t.string "username" t.string "username"
t.boolean "is_disabled", default: false t.boolean "is_disabled", default: false
t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
t.index ["email"], name: "index_users_on_email", unique: true
t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
t.index ["username"], name: "index_users_on_username", unique: true
end end
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
add_index "users", ["username"], name: "index_users_on_username", unique: true
create_table "users_roles", force: :cascade do |t| create_table "users_roles", force: :cascade do |t|
t.integer "role_id" t.integer "role_id"
t.integer "user_id" t.integer "user_id"
t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id"
end end
add_index "users_roles", ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id"
create_table "vchoices", force: :cascade do |t| create_table "vchoices", force: :cascade do |t|
t.integer "vday_id" t.integer "vday_id"
t.integer "vposition_id" t.integer "vposition_id"
@ -633,12 +619,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.text "object_changes" t.text "object_changes"
t.datetime "created_at" t.datetime "created_at"
t.integer "conference_id" t.integer "conference_id"
t.index ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
end end
add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
create_table "visits", force: :cascade do |t| create_table "visits", force: :cascade do |t|
t.uuid "visitor_id", limit: 16 t.binary "visitor_id", limit: 16
t.string "ip" t.string "ip"
t.text "user_agent" t.text "user_agent"
t.text "referrer" t.text "referrer"
@ -658,10 +643,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "utm_content" t.string "utm_content"
t.string "utm_campaign" t.string "utm_campaign"
t.datetime "started_at" t.datetime "started_at"
t.index ["user_id"], name: "index_visits_on_user_id"
end end
add_index "visits", ["user_id"], name: "index_visits_on_user_id"
create_table "votes", force: :cascade do |t| create_table "votes", force: :cascade do |t|
t.integer "event_id" t.integer "event_id"
t.integer "rating" t.integer "rating"

View file

@ -19,10 +19,10 @@ DATABASE_PORT=3306
# having to create a .env file: # having to create a .env file:
# https://github.com/openSUSE/osem/blob/master/dotenv.example # https://github.com/openSUSE/osem/blob/master/dotenv.example
OSEM_NAME=Dockerized OSEM OSEM_NAME="Dockerized OSEM"
OSEM_HOSTNAME=http://localhost:9292 OSEM_HOSTNAME="http://localhost:9292"
OSEM_ERRBIT_HOST=localhost OSEM_ERRBIT_HOST="localhost"
SECRET_KEY_BASE=changemechangemechangeme SECRET_KEY_BASE=changemechangemechangeme"
# these settings work for the MailHog server that is enabled by default in # these settings work for the MailHog server that is enabled by default in
# docker-compose.yml # docker-compose.yml
@ -31,9 +31,10 @@ SECRET_KEY_BASE=changemechangemechangeme
# your users are going to see the HTTP status 500 page # your users are going to see the HTTP status 500 page
# you should comment out or remove the mailhog service from docker-compose.yml, # you should comment out or remove the mailhog service from docker-compose.yml,
# too # too
OSEM_EMAIL_ADDRESS=osem@mailhog OSEM_EMAIL_ADDRESS="osem@mailhog"
OSEM_SMTP_AUTHENTICATION=login OSEM_SMTP_AUTHENTICATION="login"
OSEM_SMTP_ADDRESS=mailhog OSEM_SMTP_ADDRESS="mailhog"
OSEM_SMTP_PORT=1025 OSEM_SMTP_PORT="1025"
OSEM_SMTP_USERNAME=mailhog OSEM_SMTP_USERNAME="mailhog"
OSEM_SMTP_PASSWORD=mailhog OSEM_SMTP_PASSWORD="mailhog"

View file

@ -70,3 +70,6 @@ OSEM_ICHAIN_ENABLED=false
# ReCAPTCHA keys # ReCAPTCHA keys
RECAPTCHA_SITE_KEY="" RECAPTCHA_SITE_KEY=""
RECAPTCHA_SECRET_KEY="" RECAPTCHA_SECRET_KEY=""
# The url of the redis server
OSEM_REDIS_URL='redis://localhost:6379/1'

Some files were not shown because too many files have changed in this diff Show more