Merge branch 'master' into fix_bootstrap_dbsetup_user

This commit is contained in:
James Mason 2017-12-11 17:13:25 -08:00 committed by GitHub
commit aa5a7b2781
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
102 changed files with 450 additions and 267 deletions

View file

@ -6,14 +6,6 @@
# Note that changes in the inspected code, or installation of new
# 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
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, IndentationWidth.
@ -646,16 +638,6 @@ Style/RedundantParentheses:
Exclude:
- '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
# Cop supports --auto-correct.
# Configuration parameters: EnforcedStyle, SupportedStyles, AllowInnerSlashes.
@ -740,10 +722,3 @@ Style/TrailingCommaInLiteral:
- 'Guardfile'
- 'db/migrate/20140701123203_add_events_per_week_to_conference.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'

40
Gemfile
View file

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

View file

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

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.
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.
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
| STRIPE_PUBLISHABLE_KEY | *string* | Publishable 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
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-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-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-end-datepicker').data("DateTimePicker").setMinDate(e.date);
});

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -101,17 +101,17 @@ module FormatHelper
def icon_for_todo(bool)
if bool
return 'fa fa-check'
'fa fa-check'
else
return 'fa fa-times'
'fa fa-times'
end
end
def class_for_todo(bool)
if bool
return 'todolist-ok'
'todolist-ok'
else
return 'todolist-missing'
'todolist-missing'
end
end
@ -122,7 +122,7 @@ module FormatHelper
plural || singular.pluralize
end
"#{word}"
word
end
# 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)
if current_page?(link)
return 'active'
'active'
else
return ''
''
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?
end
return providers.uniq
providers.uniq
end
# 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
def perform(conference)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
class Answer < ActiveRecord::Base
class Answer < ApplicationRecord
has_many :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
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 :user

View file

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

View file

@ -1,6 +1,6 @@
# cannot delete program if there are events submitted
class Cfp < ActiveRecord::Base
class Cfp < ApplicationRecord
TYPES = %w(events booths tracks).freeze
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)
validates :body, presence: true
validates :user, presence: true

View file

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

View file

@ -1,4 +1,4 @@
class Conference < ActiveRecord::Base
class Conference < ApplicationRecord
include RevisionCount
require 'uri'
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 }
belongs_to :conference

View file

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

View file

@ -1,4 +1,4 @@
class EmailSettings < ActiveRecord::Base
class EmailSettings < ApplicationRecord
belongs_to :conference
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 RevisionCount
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 :event
belongs_to :room

View file

@ -1,4 +1,4 @@
class EventType < ActiveRecord::Base
class EventType < ApplicationRecord
belongs_to :program
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?
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 :event

View file

@ -1,4 +1,4 @@
class Lodging < ActiveRecord::Base
class Lodging < ApplicationRecord
belongs_to :conference
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
validates :provider, :uid, presence: true

View file

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

View file

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

View file

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

View file

@ -1,6 +1,6 @@
# 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 }
belongs_to :conference

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
class RegistrationPeriod < ActiveRecord::Base
class RegistrationPeriod < ApplicationRecord
belongs_to :conference
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
validates :name, :used, :quantity, presence: 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
has_many :users_roles
has_many :users, through: :users_roles

View file

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

View file

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

View file

@ -1,4 +1,4 @@
class Splashpage < ActiveRecord::Base
class Splashpage < ApplicationRecord
belongs_to :conference
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 :conference

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
class Ticket < ActiveRecord::Base
class Ticket < ApplicationRecord
belongs_to :conference
has_many :ticket_purchases, dependent: :destroy
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 :user
belongs_to :conference

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,4 +1,4 @@
class Venue < ActiveRecord::Base
class Venue < ApplicationRecord
belongs_to :conference
has_one :commercial, as: :commercialable, 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'
belongs_to :user
end

View file

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

View file

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

View file

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

View file

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

View file

@ -9,7 +9,7 @@
.row
.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|
= f.input :name
= f.input :name, input_html: { autofocus: true}
= f.input :website_link
= f.input :description, input_html: { rows: 5, cols: 20, data: { provide: 'markdown-editable' } }, hint: markdown_hint
- if @lodging.picture?

View file

@ -3,7 +3,7 @@
= f.input :name, as: :string, required: true
= 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?
- if @organization.picture
- if @organization.picture?
= image_tag(@organization.picture.thumb.url, width: '20%')
= f.input :picture
%p.text-right

View file

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

View file

@ -1,4 +1,3 @@
# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../Gemfile', __dir__)
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
# 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
config.assets.compress = true

View file

@ -8,8 +8,8 @@ Osem::Application.configure do
config.cache_classes = true
# Configure static asset server for tests with Cache-Control for performance
config.serve_static_files = true
config.static_cache_control = 'public, max-age=3600'
config.public_file_server.enabled = true
config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
# Do not eager load code on boot.
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.
# Add new inflection rules using the following format
# (all these examples are active by default):
# ActiveSupport::Inflector.inflections do |inflect|
# Add new inflection rules using the following format. Inflections
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.plural /^(ox)$/i, '\1en'
# inflect.singular /^(ox)en/i, '\1'
# inflect.irregular 'person', 'people'
# inflect.uncountable %w( fish sheep )
# end
#
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections do |inflect|
# ActiveSupport::Inflector.inflections(:en) do |inflect|
# inflect.acronym 'RESTful'
# end

View file

@ -2,4 +2,3 @@
# Add new mime types for use in respond_to blocks:
# 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
# of editing this file, please use the migrations feature of Active Record to
# 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.
ActiveRecord::Schema.define(version: 20170924190528) do
ActiveRecord::Schema.define(version: 20171118113113) do
create_table "ahoy_events", force: :cascade do |t|
t.uuid "visit_id", limit: 16
t.integer "visit_id"
t.integer "user_id"
t.string "name"
t.text "properties"
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
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|
t.string "title"
t.datetime "created_at"
@ -37,11 +35,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "role"
t.datetime "created_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
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|
t.string "title"
t.text "description"
@ -89,12 +86,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.integer "parent_id"
t.integer "lft"
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
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|
t.string "commercial_id"
t.string "commercial_type"
@ -130,10 +126,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.integer "ticket_layout", default: 0
t.string "custom_domain"
t.integer "booth_limit", default: 0
t.index ["organization_id"], name: "index_conferences_on_organization_id"
end
add_index "conferences", ["organization_id"], name: "index_conferences_on_organization_id"
create_table "conferences_questions", id: false, force: :cascade do |t|
t.integer "conference_id"
t.integer "question_id"
@ -164,10 +159,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "queue"
t.datetime "created_at"
t.datetime "updated_at"
t.index ["priority", "run_at"], name: "delayed_jobs_priority"
end
add_index "delayed_jobs", ["priority", "run_at"], name: "delayed_jobs_priority"
create_table "difficulty_levels", force: :cascade do |t|
t.string "title"
t.text "description"
@ -223,13 +217,12 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "start_time"
t.datetime "created_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
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|
t.string "title", null: false
t.integer "length", default: 30
@ -327,10 +320,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "token"
t.index ["token"], name: "index_physical_tickets_on_token", unique: true
end
add_index "physical_tickets", ["token"], name: "index_physical_tickets_on_token", unique: true
create_table "programs", force: :cascade do |t|
t.integer "conference_id"
t.integer "rating", default: 0
@ -344,10 +336,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.datetime "voting_end_date"
t.integer "selected_schedule_id"
t.integer "schedule_interval", default: 15, null: false
t.index ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
end
add_index "programs", ["selected_schedule_id"], name: "index_programs_on_selected_schedule_id"
create_table "qanswers", force: :cascade do |t|
t.integer "question_id"
t.integer "answer_id"
@ -416,11 +407,10 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "description"
t.integer "resource_id"
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
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|
t.string "guid", 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 "updated_at", null: false
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
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|
t.integer "conference_id"
t.boolean "public"
@ -540,12 +529,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.date "end_date"
t.text "relevance"
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
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|
t.string "email", 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.string "username"
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
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|
t.integer "role_id"
t.integer "user_id"
t.index ["user_id", "role_id"], name: "index_users_roles_on_user_id_and_role_id"
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|
t.integer "vday_id"
t.integer "vposition_id"
@ -633,12 +619,11 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.text "object_changes"
t.datetime "created_at"
t.integer "conference_id"
t.index ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
end
add_index "versions", ["item_type", "item_id"], name: "index_versions_on_item_type_and_item_id"
create_table "visits", force: :cascade do |t|
t.uuid "visitor_id", limit: 16
t.binary "visitor_id", limit: 16
t.string "ip"
t.text "user_agent"
t.text "referrer"
@ -658,10 +643,9 @@ ActiveRecord::Schema.define(version: 20170924190528) do
t.string "utm_content"
t.string "utm_campaign"
t.datetime "started_at"
t.index ["user_id"], name: "index_visits_on_user_id"
end
add_index "visits", ["user_id"], name: "index_visits_on_user_id"
create_table "votes", force: :cascade do |t|
t.integer "event_id"
t.integer "rating"

View file

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

View file

@ -56,8 +56,8 @@ describe Admin::ConferencesController do
conference.reload
expect(flash[:error])
.to eq("Updating conference failed. Short title can't be blank.")
expect(conference.title).to eq("#{conference.title}")
expect(conference.short_title).to eq("#{conference.short_title}")
expect(conference.title).to eq(conference.title)
expect(conference.short_title).to eq(conference.short_title)
end
it 're-renders the #show template' do

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