Merge branch 'snap-cloud-michael/delint' into 176879873-fix-travis-tests
This commit is contained in:
commit
dea073f5b7
158 changed files with 2580 additions and 189 deletions
24
.github/workflows/pronto.yml
vendored
Normal file
24
.github/workflows/pronto.yml
vendored
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
name: Pronto
|
||||
on: [pull_request]
|
||||
|
||||
jobs:
|
||||
pronto:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v2
|
||||
- run: |
|
||||
git fetch --no-tags --prune --depth=150 origin +refs/heads/*:refs/remotes/origin/*
|
||||
- name: Setup Ruby
|
||||
uses: ruby/setup-ruby@v1
|
||||
- name: Setup bundler # Install only the linters group.
|
||||
run: bundle config --global set without default development test staging production
|
||||
- name: Install pronto
|
||||
run: bundle install --without default development test staging production
|
||||
- name: Run Pronto
|
||||
run: pronto run -f github_status github_pr -c origin/${{ github.base_ref }}
|
||||
env:
|
||||
PRONTO_PULL_REQUEST_ID: ${{ github.event.pull_request.number }}
|
||||
PRONTO_GITHUB_ACCESS_TOKEN: "${{ github.token }}"
|
||||
|
|
@ -15,6 +15,14 @@ AllCops:
|
|||
|
||||
#################### Style ###########################
|
||||
|
||||
Style/CommentAnnotation:
|
||||
Keywords:
|
||||
- TODO-SNAPCON
|
||||
- TODO
|
||||
- OPTIMIZE
|
||||
- HACK
|
||||
- REVIEW
|
||||
|
||||
##################### Metrics ##################################
|
||||
|
||||
##################### Rails ##################################
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
2.5.5
|
||||
2.5.8
|
||||
|
|
|
|||
|
|
@ -7,6 +7,8 @@ addons:
|
|||
language: ruby
|
||||
cache: bundler
|
||||
rvm:
|
||||
- 2.5
|
||||
- 2.6
|
||||
branches:
|
||||
except:
|
||||
- /^depfu/.*$/
|
||||
|
|
@ -37,9 +39,8 @@ env:
|
|||
matrix:
|
||||
- TEST_SUITE=ability
|
||||
- TEST_SUITE=features
|
||||
- TEST_SUITE=linters
|
||||
- TEST_SUITE=models
|
||||
- TEST_SUITE=controllers
|
||||
- TEST_SUITE=rest
|
||||
matrix:
|
||||
fast_finish: true
|
||||
fast_finish: false
|
||||
|
|
|
|||
25
Gemfile
25
Gemfile
|
|
@ -2,14 +2,13 @@
|
|||
|
||||
source 'https://rubygems.org'
|
||||
|
||||
ruby '~> 2.5.0'
|
||||
# ruby '~> 2.5.0'
|
||||
|
||||
# rails-assets requires >= 1.8.4
|
||||
if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('1.8.4')
|
||||
abort "Bundler version >= 1.8.4 is required"
|
||||
end
|
||||
|
||||
# as web framework
|
||||
gem 'rails', '~> 5.2'
|
||||
|
||||
# Use Puma as the app server
|
||||
|
|
@ -142,7 +141,9 @@ gem 'rqrcode'
|
|||
gem 'axlsx', git: 'https://github.com/randym/axlsx.git'
|
||||
gem 'axlsx_rails'
|
||||
|
||||
gem 'sentry-raven'
|
||||
gem 'sentry-delayed_job'
|
||||
gem 'sentry-rails'
|
||||
gem 'sentry-ruby'
|
||||
|
||||
# to make links faster
|
||||
gem 'turbolinks'
|
||||
|
|
@ -224,11 +225,7 @@ gem 'dalli'
|
|||
group :development do
|
||||
# to launch specs when files are modified
|
||||
gem 'guard-rspec'
|
||||
gem 'haml_lint'
|
||||
gem 'spring-commands-rspec'
|
||||
# for static code analisys
|
||||
gem 'rubocop', require: false
|
||||
gem 'rubocop-rspec'
|
||||
# to open mails
|
||||
gem 'letter_opener'
|
||||
# view mail at /letter_opener/
|
||||
|
|
@ -239,6 +236,8 @@ group :development do
|
|||
gem 'web-console'
|
||||
# as development database
|
||||
gem 'sqlite3'
|
||||
# prepend models with db schema
|
||||
gem 'annotate'
|
||||
end
|
||||
|
||||
group :test do
|
||||
|
|
@ -270,7 +269,17 @@ group :test do
|
|||
gem 'pdf-inspector', require: "pdf/inspector"
|
||||
end
|
||||
|
||||
group :development, :test do
|
||||
group :development, :test, :linters do
|
||||
# as debugger
|
||||
gem 'byebug'
|
||||
gem 'pry'
|
||||
|
||||
# Linters and static analysis.
|
||||
gem 'pronto', require: false
|
||||
gem 'pronto-flay', require: false
|
||||
gem 'pronto-haml', require: false
|
||||
gem 'pronto-rubocop', require: false
|
||||
gem 'rubocop-rspec', require: false
|
||||
|
||||
gem 'haml-lint', require: false
|
||||
end
|
||||
|
|
|
|||
208
Gemfile.lock
208
Gemfile.lock
|
|
@ -13,25 +13,25 @@ GEM
|
|||
remote: https://rails-assets.org/
|
||||
specs:
|
||||
Ascii85 (1.0.3)
|
||||
actioncable (5.2.4.4)
|
||||
actionpack (= 5.2.4.4)
|
||||
actioncable (5.2.4.5)
|
||||
actionpack (= 5.2.4.5)
|
||||
nio4r (~> 2.0)
|
||||
websocket-driver (>= 0.6.1)
|
||||
actionmailer (5.2.4.4)
|
||||
actionpack (= 5.2.4.4)
|
||||
actionview (= 5.2.4.4)
|
||||
activejob (= 5.2.4.4)
|
||||
actionmailer (5.2.4.5)
|
||||
actionpack (= 5.2.4.5)
|
||||
actionview (= 5.2.4.5)
|
||||
activejob (= 5.2.4.5)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.2.4.4)
|
||||
actionview (= 5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
actionpack (5.2.4.5)
|
||||
actionview (= 5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
rack (~> 2.0, >= 2.0.8)
|
||||
rack-test (>= 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
actionview (5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
builder (~> 3.1)
|
||||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
|
|
@ -41,20 +41,20 @@ GEM
|
|||
activemodel (>= 4.1, < 6.1)
|
||||
case_transform (>= 0.2)
|
||||
jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
|
||||
activejob (5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
activejob (5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
activerecord (5.2.4.4)
|
||||
activemodel (= 5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
activemodel (5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
activerecord (5.2.4.5)
|
||||
activemodel (= 5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
arel (>= 9.0)
|
||||
activestorage (5.2.4.4)
|
||||
actionpack (= 5.2.4.4)
|
||||
activerecord (= 5.2.4.4)
|
||||
activestorage (5.2.4.5)
|
||||
actionpack (= 5.2.4.5)
|
||||
activerecord (= 5.2.4.5)
|
||||
marcel (~> 0.3.1)
|
||||
activesupport (5.2.4.4)
|
||||
activesupport (5.2.4.5)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
|
|
@ -70,6 +70,9 @@ GEM
|
|||
afm (0.2.2)
|
||||
ajax-datatables-rails (0.4.3)
|
||||
railties (>= 4.0)
|
||||
annotate (3.1.1)
|
||||
activerecord (>= 3.2, < 7.0)
|
||||
rake (>= 10.4, < 14.0)
|
||||
archive-zip (0.12.0)
|
||||
io-like (~> 0.3.0)
|
||||
arel (9.0.0)
|
||||
|
|
@ -101,10 +104,11 @@ GEM
|
|||
rack-test (>= 0.6.3)
|
||||
regexp_parser (~> 1.5)
|
||||
xpath (~> 3.2)
|
||||
carrierwave (1.3.1)
|
||||
carrierwave (1.3.2)
|
||||
activemodel (>= 4.0.0)
|
||||
activesupport (>= 4.0.0)
|
||||
mime-types (>= 1.16)
|
||||
ssrf_filter (~> 1.0)
|
||||
carrierwave-bombshelter (0.2.2)
|
||||
activesupport (>= 3.2.0)
|
||||
carrierwave
|
||||
|
|
@ -124,7 +128,7 @@ GEM
|
|||
json
|
||||
simplecov
|
||||
coderay (1.1.1)
|
||||
concurrent-ruby (1.1.7)
|
||||
concurrent-ruby (1.1.8)
|
||||
countable-rails (0.0.1)
|
||||
railties (>= 3.1)
|
||||
countries (3.0.0)
|
||||
|
|
@ -162,7 +166,7 @@ GEM
|
|||
dotenv-rails (2.7.5)
|
||||
dotenv (= 2.7.5)
|
||||
railties (>= 3.2, < 6.1)
|
||||
erubi (1.9.0)
|
||||
erubi (1.10.0)
|
||||
erubis (2.7.0)
|
||||
execjs (2.7.0)
|
||||
factory_bot (4.11.1)
|
||||
|
|
@ -172,11 +176,19 @@ GEM
|
|||
railties (>= 3.0.0)
|
||||
faker (1.9.3)
|
||||
i18n (>= 0.7)
|
||||
faraday (0.15.4)
|
||||
faraday (1.3.0)
|
||||
faraday-net_http (~> 1.0)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ruby2_keywords
|
||||
faraday-net_http (1.0.1)
|
||||
fastimage (2.1.4)
|
||||
feature (1.4.0)
|
||||
ffi (1.10.0)
|
||||
flay (2.12.1)
|
||||
erubis (~> 2.7.0)
|
||||
path_expander (~> 1.0)
|
||||
ruby_parser (~> 3.0)
|
||||
sexp_processor (~> 4.0)
|
||||
font-awesome-rails (4.7.0.5)
|
||||
railties (>= 3.2, < 6.1)
|
||||
formatador (0.2.5)
|
||||
|
|
@ -186,6 +198,9 @@ GEM
|
|||
formtastic (>= 3.0)
|
||||
geckodriver-helper (0.23.0)
|
||||
archive-zip (~> 0.7)
|
||||
gitlab (4.17.0)
|
||||
httparty (~> 0.18)
|
||||
terminal-table (~> 1.5, >= 1.5.1)
|
||||
globalid (0.4.2)
|
||||
activesupport (>= 4.2.0)
|
||||
gravtastic (3.2.6)
|
||||
|
|
@ -206,6 +221,8 @@ GEM
|
|||
haml (5.0.4)
|
||||
temple (>= 0.8.0)
|
||||
tilt
|
||||
haml-lint (0.999.999)
|
||||
haml_lint
|
||||
haml-rails (1.0.0)
|
||||
actionpack (>= 4.0.1)
|
||||
activesupport (>= 4.0.1)
|
||||
|
|
@ -220,7 +237,7 @@ GEM
|
|||
sysexits (~> 1.1)
|
||||
hashdiff (0.3.7)
|
||||
hashery (2.1.2)
|
||||
hashie (3.6.0)
|
||||
hashie (4.1.0)
|
||||
html2haml (2.2.0)
|
||||
erubis (~> 2.7.0)
|
||||
haml (>= 4.0, < 6)
|
||||
|
|
@ -229,7 +246,10 @@ GEM
|
|||
htmlentities (4.3.4)
|
||||
http-cookie (1.0.3)
|
||||
domain_name (~> 0.5)
|
||||
i18n (1.8.5)
|
||||
httparty (0.18.1)
|
||||
mime-types (~> 3.0)
|
||||
multi_xml (>= 0.5.2)
|
||||
i18n (1.8.9)
|
||||
concurrent-ruby (~> 1.0)
|
||||
i18n_data (0.8.0)
|
||||
inversion (1.1.1)
|
||||
|
|
@ -248,7 +268,7 @@ GEM
|
|||
json-schema (2.8.1)
|
||||
addressable (>= 2.4)
|
||||
jsonapi-renderer (0.2.2)
|
||||
jwt (2.1.0)
|
||||
jwt (2.2.2)
|
||||
launchy (2.4.3)
|
||||
addressable (~> 2.3)
|
||||
leaflet-rails (1.5.1)
|
||||
|
|
@ -264,7 +284,7 @@ GEM
|
|||
rb-inotify (~> 0.9, >= 0.9.7)
|
||||
ruby_dep (~> 1.2)
|
||||
loggability (0.14.0)
|
||||
loofah (2.7.0)
|
||||
loofah (2.9.0)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.5.9)
|
||||
lumberjack (1.0.12)
|
||||
|
|
@ -273,9 +293,9 @@ GEM
|
|||
marcel (0.3.3)
|
||||
mimemagic (~> 0.3.2)
|
||||
method_source (0.8.2)
|
||||
mime-types (3.2.2)
|
||||
mime-types (3.3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2018.0812)
|
||||
mime-types-data (3.2020.1104)
|
||||
mimemagic (0.3.5)
|
||||
mina (1.2.3)
|
||||
open4 (~> 1.3.4)
|
||||
|
|
@ -283,7 +303,7 @@ GEM
|
|||
mini_magick (4.9.5)
|
||||
mini_mime (1.0.2)
|
||||
mini_portile2 (2.5.0)
|
||||
minitest (5.14.2)
|
||||
minitest (5.14.3)
|
||||
momentjs-rails (2.20.1)
|
||||
railties (>= 3.1)
|
||||
monetize (1.9.2)
|
||||
|
|
@ -295,41 +315,45 @@ GEM
|
|||
monetize (~> 1.9.0)
|
||||
money (~> 6.13.2)
|
||||
railties (>= 3.0)
|
||||
multi_json (1.14.1)
|
||||
multi_json (1.15.0)
|
||||
multi_xml (0.6.0)
|
||||
multipart-post (2.1.1)
|
||||
nenv (0.3.0)
|
||||
netrc (0.11.0)
|
||||
nio4r (2.5.4)
|
||||
nokogiri (1.11.0)
|
||||
nio4r (2.5.5)
|
||||
nokogiri (1.11.1)
|
||||
mini_portile2 (~> 2.5.0)
|
||||
racc (~> 1.4)
|
||||
notiffany (0.1.1)
|
||||
nenv (~> 0.1)
|
||||
shellany (~> 0.0)
|
||||
oauth2 (1.4.1)
|
||||
faraday (>= 0.8, < 0.16.0)
|
||||
oauth2 (1.4.4)
|
||||
faraday (>= 0.8, < 2.0)
|
||||
jwt (>= 1.0, < 3.0)
|
||||
multi_json (~> 1.3)
|
||||
multi_xml (~> 0.5)
|
||||
rack (>= 1.2, < 3)
|
||||
omniauth (1.9.0)
|
||||
hashie (>= 3.4.6, < 3.7.0)
|
||||
octokit (4.20.0)
|
||||
faraday (>= 0.9)
|
||||
sawyer (~> 0.8.0, >= 0.5.3)
|
||||
omniauth (1.9.1)
|
||||
hashie (>= 3.4.6)
|
||||
rack (>= 1.6.2, < 3)
|
||||
omniauth-discourse (1.0.0)
|
||||
omniauth (~> 1.0)
|
||||
omniauth-facebook (6.0.0)
|
||||
omniauth-facebook (8.0.0)
|
||||
omniauth-oauth2 (~> 1.2)
|
||||
omniauth-github (1.3.0)
|
||||
omniauth-github (1.4.0)
|
||||
omniauth (~> 1.5)
|
||||
omniauth-oauth2 (>= 1.4.0, < 2.0)
|
||||
omniauth-google-oauth2 (0.6.1)
|
||||
omniauth-google-oauth2 (0.8.1)
|
||||
jwt (>= 2.0)
|
||||
omniauth (>= 1.1.1)
|
||||
omniauth-oauth2 (>= 1.5)
|
||||
omniauth-oauth2 (1.6.0)
|
||||
oauth2 (~> 1.1)
|
||||
omniauth (~> 1.9)
|
||||
omniauth (>= 1.1.1)
|
||||
omniauth-oauth2 (>= 1.6)
|
||||
omniauth-oauth2 (1.7.1)
|
||||
oauth2 (~> 1.4)
|
||||
omniauth (>= 1.9, < 3)
|
||||
omniauth-openid (1.0.1)
|
||||
omniauth (~> 1.0)
|
||||
rack-openid (~> 1.3.1)
|
||||
|
|
@ -341,6 +365,7 @@ GEM
|
|||
parallel (1.18.0)
|
||||
parser (2.6.5.0)
|
||||
ast (~> 2.4.0)
|
||||
path_expander (1.1.0)
|
||||
pdf-core (0.7.0)
|
||||
pdf-inspector (1.3.0)
|
||||
pdf-reader (>= 1.0, < 3.0.a)
|
||||
|
|
@ -367,6 +392,24 @@ GEM
|
|||
rails (>= 3.1.0)
|
||||
prawn-table (0.2.2)
|
||||
prawn (>= 1.3.0, < 3.0.0)
|
||||
pronto (0.11.0)
|
||||
gitlab (~> 4.4, >= 4.4.0)
|
||||
httparty (>= 0.13.7)
|
||||
octokit (~> 4.7, >= 4.7.0)
|
||||
rainbow (>= 2.2, < 4.0)
|
||||
rexml (~> 3.2)
|
||||
rugged (>= 0.23.0, < 1.1.0)
|
||||
thor (>= 0.20.3, < 2.0)
|
||||
pronto-flay (0.11.0)
|
||||
flay (~> 2.8)
|
||||
pronto (~> 0.11.0)
|
||||
pronto-haml (0.11.0)
|
||||
haml_lint (~> 0.23)
|
||||
pronto (~> 0.11.0)
|
||||
rubocop (< 1.0)
|
||||
pronto-rubocop (0.11.1)
|
||||
pronto (~> 0.11.0)
|
||||
rubocop (>= 0.63.1, < 2.0)
|
||||
pry (0.10.4)
|
||||
coderay (~> 1.1.0)
|
||||
method_source (~> 0.8.1)
|
||||
|
|
@ -380,18 +423,18 @@ GEM
|
|||
ruby-openid (>= 2.1.8)
|
||||
rack-test (1.1.0)
|
||||
rack (>= 1.0, < 3)
|
||||
rails (5.2.4.4)
|
||||
actioncable (= 5.2.4.4)
|
||||
actionmailer (= 5.2.4.4)
|
||||
actionpack (= 5.2.4.4)
|
||||
actionview (= 5.2.4.4)
|
||||
activejob (= 5.2.4.4)
|
||||
activemodel (= 5.2.4.4)
|
||||
activerecord (= 5.2.4.4)
|
||||
activestorage (= 5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
rails (5.2.4.5)
|
||||
actioncable (= 5.2.4.5)
|
||||
actionmailer (= 5.2.4.5)
|
||||
actionpack (= 5.2.4.5)
|
||||
actionview (= 5.2.4.5)
|
||||
activejob (= 5.2.4.5)
|
||||
activemodel (= 5.2.4.5)
|
||||
activerecord (= 5.2.4.5)
|
||||
activestorage (= 5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 5.2.4.4)
|
||||
railties (= 5.2.4.5)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-assets-bootstrap (3.3.6)
|
||||
rails-assets-jquery (>= 1.9.1, < 3)
|
||||
|
|
@ -425,9 +468,9 @@ GEM
|
|||
rails-i18n (5.1.3)
|
||||
i18n (>= 0.7, < 2)
|
||||
railties (>= 5.0, < 6)
|
||||
railties (5.2.4.4)
|
||||
actionpack (= 5.2.4.4)
|
||||
activesupport (= 5.2.4.4)
|
||||
railties (5.2.4.5)
|
||||
actionpack (= 5.2.4.5)
|
||||
activesupport (= 5.2.4.5)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.19.0, < 2.0)
|
||||
|
|
@ -455,6 +498,7 @@ GEM
|
|||
http-cookie (>= 1.0.2, < 2.0)
|
||||
mime-types (>= 1.16, < 4.0)
|
||||
netrc (~> 0.8)
|
||||
rexml (3.2.4)
|
||||
rolify (5.2.0)
|
||||
rqrcode (0.10.1)
|
||||
chunky_png (~> 1.0)
|
||||
|
|
@ -496,10 +540,12 @@ GEM
|
|||
ruby-openid (2.9.2)
|
||||
ruby-progressbar (1.10.1)
|
||||
ruby-rc4 (0.1.5)
|
||||
ruby2_keywords (0.0.4)
|
||||
ruby_dep (1.5.0)
|
||||
ruby_parser (3.11.0)
|
||||
sexp_processor (~> 4.9)
|
||||
rubyzip (1.3.0)
|
||||
rugged (1.0.1)
|
||||
safe_yaml (1.0.4)
|
||||
sass (3.7.2)
|
||||
sass-listen (~> 4.0.0)
|
||||
|
|
@ -515,12 +561,25 @@ GEM
|
|||
sassc (2.0.1)
|
||||
ffi (~> 1.9)
|
||||
rake
|
||||
sawyer (0.8.2)
|
||||
addressable (>= 2.3.5)
|
||||
faraday (> 0.8, < 2.0)
|
||||
selectize-rails (0.12.6)
|
||||
selenium-webdriver (3.142.6)
|
||||
childprocess (>= 0.5, < 4.0)
|
||||
rubyzip (>= 1.2.2)
|
||||
sentry-raven (2.13.0)
|
||||
faraday (>= 0.7.6, < 1.0)
|
||||
sentry-delayed_job (4.2.1)
|
||||
sentry-ruby-core (~> 4.2.0)
|
||||
sentry-rails (4.2.2)
|
||||
rails (>= 5.0)
|
||||
sentry-ruby-core (~> 4.2.0)
|
||||
sentry-ruby (4.2.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
faraday (>= 1.0)
|
||||
sentry-ruby-core (= 4.2.2)
|
||||
sentry-ruby-core (4.2.2)
|
||||
concurrent-ruby
|
||||
faraday
|
||||
sexp_processor (4.11.0)
|
||||
shellany (0.0.1)
|
||||
shoulda-matchers (4.1.2)
|
||||
|
|
@ -548,6 +607,7 @@ GEM
|
|||
activesupport (>= 4.0)
|
||||
sprockets (>= 3.0.0)
|
||||
sqlite3 (1.4.2)
|
||||
ssrf_filter (1.0.7)
|
||||
stripe (5.14.0)
|
||||
stripe-ruby-mock (3.0.1)
|
||||
dante (>= 0.2.0)
|
||||
|
|
@ -555,7 +615,9 @@ GEM
|
|||
stripe (> 5, < 6)
|
||||
sysexits (1.2.0)
|
||||
temple (0.8.0)
|
||||
thor (1.0.1)
|
||||
terminal-table (1.8.0)
|
||||
unicode-display_width (~> 1.1, >= 1.1.1)
|
||||
thor (1.1.0)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.9)
|
||||
timecop (0.9.1)
|
||||
|
|
@ -564,7 +626,7 @@ GEM
|
|||
turbolinks (5.2.1)
|
||||
turbolinks-source (~> 5.2)
|
||||
turbolinks-source (5.2.0)
|
||||
tzinfo (1.2.7)
|
||||
tzinfo (1.2.9)
|
||||
thread_safe (~> 0.1)
|
||||
uglifier (4.1.20)
|
||||
execjs (>= 0.3.0, < 3)
|
||||
|
|
@ -607,6 +669,7 @@ DEPENDENCIES
|
|||
acts_as_commentable_with_threading
|
||||
acts_as_list
|
||||
ajax-datatables-rails
|
||||
annotate
|
||||
autoprefixer-rails
|
||||
awesome_nested_set
|
||||
axlsx!
|
||||
|
|
@ -642,8 +705,8 @@ DEPENDENCIES
|
|||
geckodriver-helper
|
||||
gravtastic
|
||||
guard-rspec
|
||||
haml-lint
|
||||
haml-rails
|
||||
haml_lint
|
||||
iso-639
|
||||
jquery-datatables
|
||||
jquery-rails
|
||||
|
|
@ -668,6 +731,11 @@ DEPENDENCIES
|
|||
piwik_analytics (~> 1.0.1)
|
||||
prawn-qrcode
|
||||
prawn-rails
|
||||
pronto
|
||||
pronto-flay
|
||||
pronto-haml
|
||||
pronto-rubocop
|
||||
pry
|
||||
puma (~> 3.0)
|
||||
rails (~> 5.2)
|
||||
rails-assets-bootstrap-markdown!
|
||||
|
|
@ -692,12 +760,13 @@ DEPENDENCIES
|
|||
rqrcode
|
||||
rspec-activemodel-mocks
|
||||
rspec-rails
|
||||
rubocop
|
||||
rubocop-rspec
|
||||
ruby-oembed
|
||||
sass-rails (>= 4.0.2)
|
||||
selectize-rails
|
||||
sentry-raven
|
||||
sentry-delayed_job
|
||||
sentry-rails
|
||||
sentry-ruby
|
||||
shoulda-matchers
|
||||
skylight
|
||||
spring-commands-rspec
|
||||
|
|
@ -715,8 +784,5 @@ DEPENDENCIES
|
|||
webmock
|
||||
whenever
|
||||
|
||||
RUBY VERSION
|
||||
ruby 2.5.5p157
|
||||
|
||||
BUNDLED WITH
|
||||
1.17.3
|
||||
|
|
|
|||
|
|
@ -64,6 +64,9 @@ class ConferenceRegistrationsController < ApplicationController
|
|||
redirect_to conference_conference_registration_path(@conference.short_title),
|
||||
notice: 'You are now registered and will be receiving E-Mail notifications.'
|
||||
end
|
||||
elsif @conference.registration_ticket_required? && !current_user.supports?(@conference)
|
||||
redirect_to conference_tickets_path(@conference.short_title),
|
||||
error: 'You must buy a registration ticket before registering.'
|
||||
else
|
||||
flash.now[:error] = "Could not create your registration for #{@conference.title}: "\
|
||||
"#{@registration.errors.full_messages.join('. ')}."
|
||||
|
|
|
|||
|
|
@ -192,7 +192,7 @@ module ApplicationHelper
|
|||
def nav_root_link_for(conference = nil)
|
||||
path = conference&.id.present? ? conference_path(conference) : root_path
|
||||
link_to(
|
||||
image_tag('snapcon_logo.png'),
|
||||
image_tag('snapcon_logo.png', alt: nav_link_text(conference)),
|
||||
path,
|
||||
class: 'navbar-brand',
|
||||
title: nav_link_text(conference)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: answers
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
#
|
||||
class Answer < ApplicationRecord
|
||||
has_many :qanswers
|
||||
has_many :questions, through: :qanswers
|
||||
|
|
|
|||
|
|
@ -1,5 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: booths
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# logo_link :string
|
||||
# reasoning :text
|
||||
# state :string
|
||||
# submitter_relationship :text
|
||||
# title :string
|
||||
# website_url :string
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# conference_id :integer
|
||||
#
|
||||
class Booth < ApplicationRecord
|
||||
include ActiveRecord::Transitions
|
||||
has_paper_trail ignore: [:updated_at], meta: { conference_id: :conference_id }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: booth_requests
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# role :string
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# booth_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_booth_requests_on_booth_id (booth_id)
|
||||
# index_booth_requests_on_user_id (user_id)
|
||||
#
|
||||
class BoothRequest < ApplicationRecord
|
||||
belongs_to :booth
|
||||
belongs_to :user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: cfps
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# cfp_type :string
|
||||
# description :text
|
||||
# enable_registrations :boolean default(FALSE)
|
||||
# end_date :date not null
|
||||
# start_date :date not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
#
|
||||
# cannot delete program if there are events submitted
|
||||
|
||||
class Cfp < ApplicationRecord
|
||||
|
|
|
|||
|
|
@ -1,5 +1,28 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: comments
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# body :text
|
||||
# commentable_type :string
|
||||
# lft :integer
|
||||
# rgt :integer
|
||||
# subject :string
|
||||
# title :string(50) default("")
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# commentable_id :integer
|
||||
# parent_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_comments_on_commentable_id (commentable_id)
|
||||
# index_comments_on_commentable_type (commentable_type)
|
||||
# index_comments_on_user_id (user_id)
|
||||
#
|
||||
class Comment < ApplicationRecord
|
||||
acts_as_nested_set scope: %i(commentable_id commentable_type)
|
||||
validates :body, presence: true
|
||||
|
|
|
|||
|
|
@ -1,5 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: commercials
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# commercial_type :string
|
||||
# commercialable_type :string
|
||||
# url :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# commercial_id :string
|
||||
# commercialable_id :integer
|
||||
#
|
||||
class Commercial < ApplicationRecord
|
||||
require 'oembed'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,40 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: conferences
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# booth_limit :integer default(0)
|
||||
# color :string
|
||||
# custom_css :text
|
||||
# custom_domain :string
|
||||
# description :text
|
||||
# end_date :date not null
|
||||
# end_hour :integer default(20)
|
||||
# events_per_week :text
|
||||
# guid :string not null
|
||||
# logo_file_name :string
|
||||
# picture :string
|
||||
# registration_limit :integer default(0)
|
||||
# revision :integer default(0), not null
|
||||
# short_title :string not null
|
||||
# start_date :date not null
|
||||
# start_hour :integer default(9)
|
||||
# ticket_layout :integer default("portrait")
|
||||
# timezone :string not null
|
||||
# title :string not null
|
||||
# use_vdays :boolean default(FALSE)
|
||||
# use_volunteers :boolean
|
||||
# use_vpositions :boolean default(FALSE)
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# organization_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_conferences_on_organization_id (organization_id)
|
||||
#
|
||||
# rubocop:disable Metrics/ClassLength
|
||||
class Conference < ApplicationRecord
|
||||
include RevisionCount
|
||||
|
|
|
|||
|
|
@ -1,5 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: contacts
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# blog :string
|
||||
# email :string
|
||||
# facebook :string
|
||||
# googleplus :string
|
||||
# instagram :string
|
||||
# mastodon :string
|
||||
# social_tag :string
|
||||
# sponsor_email :string
|
||||
# twitter :string
|
||||
# youtube :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Contact < ApplicationRecord
|
||||
has_paper_trail on: [:update], ignore: [:updated_at], meta: { conference_id: :conference_id }
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: difficulty_levels
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# color :string
|
||||
# description :text
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
#
|
||||
class DifficultyLevel < ApplicationRecord
|
||||
belongs_to :program, touch: true
|
||||
has_many :events, dependent: :nullify
|
||||
|
|
|
|||
|
|
@ -1,5 +1,50 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: email_settings
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# accepted_body :text
|
||||
# accepted_subject :string
|
||||
# booths_acceptance_body :text
|
||||
# booths_acceptance_subject :string
|
||||
# booths_rejection_body :text
|
||||
# booths_rejection_subject :string
|
||||
# cfp_dates_updated_body :text
|
||||
# cfp_dates_updated_subject :string
|
||||
# conference_dates_updated_body :text
|
||||
# conference_dates_updated_subject :string
|
||||
# conference_registration_dates_updated_body :text
|
||||
# conference_registration_dates_updated_subject :string
|
||||
# confirmed_without_registration_body :text
|
||||
# confirmed_without_registration_subject :string
|
||||
# program_schedule_public_body :text
|
||||
# program_schedule_public_subject :string
|
||||
# registration_body :text
|
||||
# registration_subject :string
|
||||
# rejected_body :text
|
||||
# rejected_subject :string
|
||||
# send_on_accepted :boolean default(FALSE)
|
||||
# send_on_booths_acceptance :boolean default(FALSE)
|
||||
# send_on_booths_rejection :boolean default(FALSE)
|
||||
# send_on_cfp_dates_updated :boolean default(FALSE)
|
||||
# send_on_conference_dates_updated :boolean default(FALSE)
|
||||
# send_on_conference_registration_dates_updated :boolean default(FALSE)
|
||||
# send_on_confirmed_without_registration :boolean default(FALSE)
|
||||
# send_on_program_schedule_public :boolean default(FALSE)
|
||||
# send_on_registration :boolean default(FALSE)
|
||||
# send_on_rejected :boolean default(FALSE)
|
||||
# send_on_submitted_proposal :boolean default(FALSE)
|
||||
# send_on_venue_updated :boolean default(FALSE)
|
||||
# submitted_proposal_body :text
|
||||
# submitted_proposal_subject :string
|
||||
# venue_updated_body :text
|
||||
# venue_updated_subject :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class EmailSettings < ApplicationRecord
|
||||
belongs_to :conference
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,34 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: events
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# abstract :text
|
||||
# comments_count :integer default(0), not null
|
||||
# description :text
|
||||
# guid :string not null
|
||||
# is_highlight :boolean default(FALSE)
|
||||
# language :string
|
||||
# max_attendees :integer
|
||||
# progress :string default("new"), not null
|
||||
# proposal_additional_speakers :text
|
||||
# public :boolean default(TRUE)
|
||||
# require_registration :boolean
|
||||
# start_time :datetime
|
||||
# state :string default("new"), not null
|
||||
# subtitle :string
|
||||
# title :string not null
|
||||
# week :integer
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# difficulty_level_id :integer
|
||||
# event_type_id :integer
|
||||
# program_id :integer
|
||||
# room_id :integer
|
||||
# track_id :integer
|
||||
#
|
||||
class Event < ApplicationRecord
|
||||
include ActiveRecord::Transitions
|
||||
include RevisionCount
|
||||
|
|
|
|||
|
|
@ -1,5 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: event_schedules
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# enabled :boolean default(TRUE)
|
||||
# start_time :datetime
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# event_id :integer
|
||||
# room_id :integer
|
||||
# schedule_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_event_schedules_on_event_id (event_id)
|
||||
# index_event_schedules_on_event_id_and_schedule_id (event_id,schedule_id) UNIQUE
|
||||
# index_event_schedules_on_room_id (room_id)
|
||||
# index_event_schedules_on_schedule_id (schedule_id)
|
||||
#
|
||||
class EventSchedule < ApplicationRecord
|
||||
default_scope { where(enabled: true) }
|
||||
belongs_to :schedule
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: event_types
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# color :string
|
||||
# description :string
|
||||
# length :integer default(30)
|
||||
# maximum_abstract_length :integer default(500)
|
||||
# minimum_abstract_length :integer default(0)
|
||||
# title :string not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
#
|
||||
class EventType < ApplicationRecord
|
||||
belongs_to :program, touch: true
|
||||
has_many :events, dependent: :restrict_with_error
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: event_users
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# comment :string
|
||||
# event_role :string default("participant"), not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# event_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class EventUser < ApplicationRecord
|
||||
ROLES = [%w[Speaker speaker], %w[Submitter submitter], %w[Moderator moderator],
|
||||
%w[Volunteer volunteer]]
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: events_registrations
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# attended :boolean default(FALSE), not null
|
||||
# created_at :datetime
|
||||
# event_id :integer
|
||||
# registration_id :integer
|
||||
#
|
||||
class EventsRegistration < ApplicationRecord
|
||||
belongs_to :registration
|
||||
belongs_to :event
|
||||
|
|
|
|||
|
|
@ -1,5 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: lodgings
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# name :string
|
||||
# photo_content_type :string
|
||||
# photo_file_name :string
|
||||
# photo_file_size :integer
|
||||
# photo_updated_at :datetime
|
||||
# picture :string
|
||||
# website_link :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Lodging < ApplicationRecord
|
||||
belongs_to :conference
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: openids
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# email :string
|
||||
# provider :string
|
||||
# uid :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# user_id :integer
|
||||
#
|
||||
class Openid < ApplicationRecord
|
||||
belongs_to :user
|
||||
validates :provider, :uid, :email, presence: true
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: organizations
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# code_of_conduct :text
|
||||
# description :text
|
||||
# name :string not null
|
||||
# picture :string
|
||||
#
|
||||
class Organization < ApplicationRecord
|
||||
resourcify :roles, dependent: :delete_all
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: payments
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# amount :integer
|
||||
# authorization_code :string
|
||||
# last4 :string
|
||||
# status :integer default("unpaid"), not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# conference_id :integer not null
|
||||
# user_id :integer not null
|
||||
#
|
||||
class Payment < ApplicationRecord
|
||||
has_many :ticket_purchases
|
||||
belongs_to :user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: physical_tickets
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# token :string
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# ticket_purchase_id :integer not null
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_physical_tickets_on_token (token) UNIQUE
|
||||
#
|
||||
class PhysicalTicket < ApplicationRecord
|
||||
belongs_to :ticket_purchase
|
||||
has_one :ticket, through: :ticket_purchase
|
||||
|
|
|
|||
|
|
@ -1,5 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: programs
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# blind_voting :boolean default(FALSE)
|
||||
# languages :string
|
||||
# rating :integer default(0)
|
||||
# schedule_fluid :boolean default(FALSE)
|
||||
# schedule_interval :integer default(15), not null
|
||||
# schedule_public :boolean default(FALSE)
|
||||
# voting_end_date :datetime
|
||||
# voting_start_date :datetime
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# selected_schedule_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_programs_on_selected_schedule_id (selected_schedule_id)
|
||||
#
|
||||
# cannot delete program if there are events submitted
|
||||
|
||||
class Program < ApplicationRecord
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: qanswers
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# answer_id :integer
|
||||
# question_id :integer
|
||||
#
|
||||
class Qanswer < ApplicationRecord
|
||||
belongs_to :question
|
||||
belongs_to :answer, dependent: :delete
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: questions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# global :boolean
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# question_type_id :integer
|
||||
#
|
||||
class Question < ApplicationRecord
|
||||
belongs_to :question_type
|
||||
has_and_belongs_to_many :conferences
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: question_types
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
#
|
||||
class QuestionType < ApplicationRecord
|
||||
has_many :questions
|
||||
end
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: registrations
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# accepted_code_of_conduct :boolean
|
||||
# attended :boolean default(FALSE)
|
||||
# other_special_needs :text
|
||||
# volunteer :boolean
|
||||
# week :integer
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class Registration < ApplicationRecord
|
||||
require 'csv'
|
||||
belongs_to :user
|
||||
|
|
@ -69,7 +84,8 @@ class Registration < ApplicationRecord
|
|||
end
|
||||
|
||||
def user_has_registration_ticket
|
||||
return if TicketPurchase.where(user: user, ticket: conference.registration_tickets).paid.any?
|
||||
return if conference.registration_ticket_required? &&
|
||||
TicketPurchase.where(user: user, ticket: conference.registration_tickets).paid.any?
|
||||
|
||||
errors.add(:base, 'You must purchase a registration ticket before registering')
|
||||
if TicketPurchase.where(user: user, ticket: conference.registration_tickets).unpaid.any?
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: registration_periods
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# end_date :date
|
||||
# start_date :date
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class RegistrationPeriod < ApplicationRecord
|
||||
belongs_to :conference
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: resources
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# name :string
|
||||
# quantity :integer
|
||||
# used :integer default(0)
|
||||
# conference_id :integer
|
||||
#
|
||||
class Resource < ApplicationRecord
|
||||
belongs_to :conference
|
||||
validates :name, :used, :quantity, presence: true
|
||||
|
|
|
|||
|
|
@ -1,5 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: roles
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :string
|
||||
# name :string
|
||||
# resource_type :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# resource_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_roles_on_name (name)
|
||||
# index_roles_on_name_and_resource_type_and_resource_id (name,resource_type,resource_id)
|
||||
#
|
||||
class Role < ApplicationRecord
|
||||
belongs_to :resource, polymorphic: true
|
||||
has_many :users_roles
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: rooms
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# guid :string not null
|
||||
# name :string not null
|
||||
# order :integer
|
||||
# size :integer
|
||||
# url :string
|
||||
# venue_id :integer not null
|
||||
#
|
||||
class Room < ApplicationRecord
|
||||
include RevisionCount
|
||||
belongs_to :venue
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: schedules
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# program_id :integer
|
||||
# track_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_schedules_on_program_id (program_id)
|
||||
# index_schedules_on_track_id (track_id)
|
||||
#
|
||||
class Schedule < ApplicationRecord
|
||||
belongs_to :program
|
||||
belongs_to :track
|
||||
|
|
|
|||
|
|
@ -1,5 +1,30 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: splashpages
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# banner_photo_content_type :string
|
||||
# banner_photo_file_name :string
|
||||
# banner_photo_file_size :integer
|
||||
# banner_photo_updated_at :datetime
|
||||
# include_booths :boolean
|
||||
# include_cfp :boolean default(FALSE)
|
||||
# include_lodgings :boolean
|
||||
# include_program :boolean
|
||||
# include_registrations :boolean
|
||||
# include_social_media :boolean
|
||||
# include_sponsors :boolean
|
||||
# include_tickets :boolean
|
||||
# include_tracks :boolean
|
||||
# include_venue :boolean
|
||||
# public :boolean
|
||||
# shuffle_highlights :boolean default(FALSE), not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Splashpage < ApplicationRecord
|
||||
belongs_to :conference
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: sponsors
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# logo_file_name :string
|
||||
# name :string
|
||||
# picture :string
|
||||
# website_url :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# sponsorship_level_id :integer
|
||||
#
|
||||
class Sponsor < ApplicationRecord
|
||||
belongs_to :sponsorship_level
|
||||
belongs_to :conference
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: sponsorship_levels
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# position :integer
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class SponsorshipLevel < ApplicationRecord
|
||||
validates :title, presence: true
|
||||
belongs_to :conference
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: subscriptions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class Subscription < ApplicationRecord
|
||||
belongs_to :conference
|
||||
belongs_to :user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: surveys
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# end_date :datetime
|
||||
# start_date :datetime
|
||||
# surveyable_type :string
|
||||
# target :integer default("after_conference")
|
||||
# title :string
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# surveyable_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_surveys_on_surveyable_type_and_surveyable_id (surveyable_type,surveyable_id)
|
||||
#
|
||||
class Survey < ActiveRecord::Base
|
||||
belongs_to :surveyable, polymorphic: true
|
||||
has_many :survey_questions, dependent: :destroy
|
||||
|
|
|
|||
|
|
@ -1,5 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: survey_questions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# kind :integer default("boolean")
|
||||
# mandatory :boolean default(FALSE)
|
||||
# max_choices :integer
|
||||
# min_choices :integer
|
||||
# possible_answers :text
|
||||
# title :string
|
||||
# survey_id :integer
|
||||
#
|
||||
class SurveyQuestion < ActiveRecord::Base
|
||||
belongs_to :survey
|
||||
has_many :survey_replies, dependent: :destroy
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: survey_replies
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# text :text
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# survey_question_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class SurveyReply < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :survey_question
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: survey_submissions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# survey_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class SurveySubmission < ActiveRecord::Base
|
||||
belongs_to :user
|
||||
belongs_to :survey
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: tickets
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# price_cents :integer default(0), not null
|
||||
# price_currency :string default("USD"), not null
|
||||
# registration_ticket :boolean default(FALSE)
|
||||
# title :string not null
|
||||
# visible :boolean default(TRUE)
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Ticket < ApplicationRecord
|
||||
belongs_to :conference
|
||||
has_many :ticket_purchases, dependent: :destroy
|
||||
|
|
|
|||
|
|
@ -1,5 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: ticket_purchases
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# amount_paid :float default(0.0)
|
||||
# paid :boolean default(FALSE)
|
||||
# quantity :integer default(1)
|
||||
# week :integer
|
||||
# created_at :datetime
|
||||
# conference_id :integer
|
||||
# payment_id :integer
|
||||
# ticket_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class TicketPurchase < ApplicationRecord
|
||||
belongs_to :ticket
|
||||
belongs_to :user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,14 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: ticket_scannings
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# physical_ticket_id :integer not null
|
||||
#
|
||||
class TicketScanning < ApplicationRecord
|
||||
belongs_to :physical_ticket
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,33 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: tracks
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# cfp_active :boolean not null
|
||||
# color :string
|
||||
# description :text
|
||||
# end_date :date
|
||||
# guid :string not null
|
||||
# name :string not null
|
||||
# relevance :text
|
||||
# short_name :string not null
|
||||
# start_date :date
|
||||
# state :string default("new"), not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
# room_id :integer
|
||||
# selected_schedule_id :integer
|
||||
# submitter_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_tracks_on_room_id (room_id)
|
||||
# index_tracks_on_selected_schedule_id (selected_schedule_id)
|
||||
# index_tracks_on_submitter_id (submitter_id)
|
||||
#
|
||||
class Track < ApplicationRecord
|
||||
include ActiveRecord::Transitions
|
||||
include RevisionCount
|
||||
|
|
|
|||
|
|
@ -1,5 +1,51 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: users
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# affiliation :string
|
||||
# avatar_content_type :string
|
||||
# avatar_file_name :string
|
||||
# avatar_file_size :integer
|
||||
# avatar_updated_at :datetime
|
||||
# biography :text
|
||||
# confirmation_sent_at :datetime
|
||||
# confirmation_token :string
|
||||
# confirmed_at :datetime
|
||||
# current_sign_in_at :datetime
|
||||
# current_sign_in_ip :string
|
||||
# email :string default(""), not null
|
||||
# email_public :boolean default(FALSE)
|
||||
# encrypted_password :string default(""), not null
|
||||
# is_admin :boolean default(FALSE)
|
||||
# is_disabled :boolean default(FALSE)
|
||||
# languages :string
|
||||
# last_sign_in_at :datetime
|
||||
# last_sign_in_ip :string
|
||||
# mobile :string
|
||||
# name :string
|
||||
# nickname :string
|
||||
# picture :string
|
||||
# remember_created_at :datetime
|
||||
# reset_password_sent_at :datetime
|
||||
# reset_password_token :string
|
||||
# sign_in_count :integer default(0)
|
||||
# tshirt :string
|
||||
# unconfirmed_email :string
|
||||
# username :string
|
||||
# volunteer_experience :text
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_users_on_confirmation_token (confirmation_token) UNIQUE
|
||||
# index_users_on_email (email) UNIQUE
|
||||
# index_users_on_reset_password_token (reset_password_token) UNIQUE
|
||||
# index_users_on_username (username) UNIQUE
|
||||
#
|
||||
class IChainRecordNotFound < StandardError
|
||||
end
|
||||
|
||||
|
|
@ -55,8 +101,8 @@ class User < ApplicationRecord
|
|||
[:database_authenticatable, :registerable,
|
||||
:recoverable, :rememberable, :trackable, :validatable, :confirmable,
|
||||
:omniauthable,
|
||||
# omniauth_providers: [:suse, :google, :facebook, :github, :discourse]
|
||||
omniauth_providers: [:google, :discourse]]
|
||||
omniauth_providers: [:suse, :google, :facebook, :github, :discourse]]
|
||||
# omniauth_providers: [:google, :discourse]
|
||||
end
|
||||
|
||||
devise(*devise_modules)
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: users_roles
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# role_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_users_roles_on_user_id_and_role_id (user_id,role_id)
|
||||
#
|
||||
class UsersRole < ApplicationRecord
|
||||
belongs_to :role
|
||||
belongs_to :user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,13 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: vchoices
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# vday_id :integer
|
||||
# vposition_id :integer
|
||||
#
|
||||
class Vchoice < ApplicationRecord
|
||||
belongs_to :vday
|
||||
belongs_to :vposition
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: vdays
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# day :date
|
||||
# description :text
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Vday < ApplicationRecord
|
||||
belongs_to :conference
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,26 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: venues
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# city :string
|
||||
# country :string
|
||||
# description :text
|
||||
# guid :string
|
||||
# latitude :string
|
||||
# longitude :string
|
||||
# name :string
|
||||
# photo_file_name :string
|
||||
# picture :string
|
||||
# postalcode :string
|
||||
# street :string
|
||||
# website :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Venue < ApplicationRecord
|
||||
belongs_to :conference
|
||||
has_one :commercial, as: :commercialable, dependent: :destroy
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: votes
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# rating :integer
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# event_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
class Vote < ApplicationRecord
|
||||
belongs_to :user
|
||||
belongs_to :event
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: vpositions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# title :string not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
class Vposition < ApplicationRecord
|
||||
belongs_to :conference
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,40 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: conferences
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# booth_limit :integer default(0)
|
||||
# color :string
|
||||
# custom_css :text
|
||||
# custom_domain :string
|
||||
# description :text
|
||||
# end_date :date not null
|
||||
# end_hour :integer default(20)
|
||||
# events_per_week :text
|
||||
# guid :string not null
|
||||
# logo_file_name :string
|
||||
# picture :string
|
||||
# registration_limit :integer default(0)
|
||||
# revision :integer default(0), not null
|
||||
# short_title :string not null
|
||||
# start_date :date not null
|
||||
# start_hour :integer default(9)
|
||||
# ticket_layout :integer default("portrait")
|
||||
# timezone :string not null
|
||||
# title :string not null
|
||||
# use_vdays :boolean default(FALSE)
|
||||
# use_volunteers :boolean
|
||||
# use_vpositions :boolean default(FALSE)
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# organization_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_conferences_on_organization_id (organization_id)
|
||||
#
|
||||
class ConferenceSerializer < ActiveModel::Serializer
|
||||
include ApplicationHelper
|
||||
attributes :short_title, :title, :description, :start_date, :end_date, :picture_url,
|
||||
|
|
|
|||
|
|
@ -1,5 +1,25 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: event_schedules
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# enabled :boolean default(TRUE)
|
||||
# start_time :datetime
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# event_id :integer
|
||||
# room_id :integer
|
||||
# schedule_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_event_schedules_on_event_id (event_id)
|
||||
# index_event_schedules_on_event_id_and_schedule_id (event_id,schedule_id) UNIQUE
|
||||
# index_event_schedules_on_room_id (room_id)
|
||||
# index_event_schedules_on_schedule_id (schedule_id)
|
||||
#
|
||||
class EventScheduleSerializer < ActiveModel::Serializer
|
||||
include ActionView::Helpers::TextHelper
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,34 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: events
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# abstract :text
|
||||
# comments_count :integer default(0), not null
|
||||
# description :text
|
||||
# guid :string not null
|
||||
# is_highlight :boolean default(FALSE)
|
||||
# language :string
|
||||
# max_attendees :integer
|
||||
# progress :string default("new"), not null
|
||||
# proposal_additional_speakers :text
|
||||
# public :boolean default(TRUE)
|
||||
# require_registration :boolean
|
||||
# start_time :datetime
|
||||
# state :string default("new"), not null
|
||||
# subtitle :string
|
||||
# title :string not null
|
||||
# week :integer
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# difficulty_level_id :integer
|
||||
# event_type_id :integer
|
||||
# program_id :integer
|
||||
# room_id :integer
|
||||
# track_id :integer
|
||||
#
|
||||
class EventSerializer < ActiveModel::Serializer
|
||||
include ActionView::Helpers::TextHelper
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: rooms
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# guid :string not null
|
||||
# name :string not null
|
||||
# order :integer
|
||||
# size :integer
|
||||
# url :string
|
||||
# venue_id :integer not null
|
||||
#
|
||||
class RoomSerializer < ActiveModel::Serializer
|
||||
attributes :guid, :name, :description
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,33 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: tracks
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# cfp_active :boolean not null
|
||||
# color :string
|
||||
# description :text
|
||||
# end_date :date
|
||||
# guid :string not null
|
||||
# name :string not null
|
||||
# relevance :text
|
||||
# short_name :string not null
|
||||
# start_date :date
|
||||
# state :string default("new"), not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
# room_id :integer
|
||||
# selected_schedule_id :integer
|
||||
# submitter_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_tracks_on_room_id (room_id)
|
||||
# index_tracks_on_selected_schedule_id (selected_schedule_id)
|
||||
# index_tracks_on_submitter_id (submitter_id)
|
||||
#
|
||||
class TrackSerializer < ActiveModel::Serializer
|
||||
attributes :guid, :name, :color
|
||||
end
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@
|
|||
= semantic_form_for(@commercial, url: admin_conference_commercials_path(conference_id: @conference.short_title)) do |f|
|
||||
= f.input :url, label: 'URL', as: :string, input_html: { required: 'required', autofocus: true },
|
||||
hint: 'Just paste the url of your video/photo provider. YouTube, Vimeo, SpeakerDeck, SlideShare, Instagram, Flickr.'
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary pull-right', disabled: true }
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary pull-right', disabled: true }, label: 'Save Materials'
|
||||
%hr
|
||||
|
||||
- @commercials.each_slice(3) do |slice|
|
||||
|
|
@ -24,10 +24,10 @@
|
|||
- slice.each do |commercial|
|
||||
- if commercial.persisted?
|
||||
.col-md-4
|
||||
.thumbnail
|
||||
.flexvideo{ id: "resource-content-#{commercial.id}" }
|
||||
.panel
|
||||
%div{ id: "resource-content-#{commercial.id}" }
|
||||
= render partial: 'shared/media_item', locals: { commercial: commercial }
|
||||
.caption
|
||||
.caption.panel-footer
|
||||
- if can? :update, commercial
|
||||
= semantic_form_for commercial, url: admin_conference_commercial_path(conference_id: @conference.short_title, id: commercial) do |f|
|
||||
= f.input :url, label: 'URL', as: :string, input_html: { id: "commercial_url_#{commercial.id}", required: 'required' }, hint: 'Just paste the url of your video/photo provider'
|
||||
|
|
|
|||
|
|
@ -3,11 +3,13 @@
|
|||
/ use smaller cell heights for more compact grids
|
||||
- cell_height = compact_grid ? 32 : 58
|
||||
- date_event_schedules = @event_schedules.select{ |e| e.start_time.to_date.eql? date }
|
||||
/ Dynamically set the column width, but no narrower than 2 (on a BS grid of 12)
|
||||
- col_size = [2, (12 / @rooms.count).to_i ].max
|
||||
.row
|
||||
- @rooms.each do |room|
|
||||
- non_schedulable = room.tracks.self_organized.confirmed.any? do |track|
|
||||
- !track.schedules.include?(@schedule) && (track.start_date..track.end_date).include?(date)
|
||||
.col-md-2.col-xs-6{ class: ('non_schedulable' if non_schedulable) }
|
||||
.col-xs-6{ class: "#{('non_schedulable' if non_schedulable)} col-md-#{col_size}" }
|
||||
.room-name
|
||||
- room_date_event_schedules = date_event_schedules.select{ |e| e.room == room }
|
||||
= room.name
|
||||
|
|
|
|||
|
|
@ -6,14 +6,14 @@
|
|||
.col-md-12
|
||||
.row.row-centered.shuffle-deck
|
||||
- highlights.each do |event|
|
||||
- speaker = event.speakers_ordered.first
|
||||
.col-md-3.col-sm-3.col-centered.col-top.highlights
|
||||
= link_to(conference_program_proposal_path(conference_id,
|
||||
event),
|
||||
class: 'thumbnail') do
|
||||
= image_tag speaker.profile_picture(size: 300),
|
||||
class: ['img-responsive', 'img-circle'],
|
||||
title: speaker.name
|
||||
.caption
|
||||
%h3.text-center= speaker.name
|
||||
%h4.text-center= event.title
|
||||
- event.speakers_ordered.each do |speaker|
|
||||
.col-md-3.col-sm-3.col-centered.col-top.highlights
|
||||
= link_to(conference_program_proposal_path(conference_id,
|
||||
event),
|
||||
class: 'thumbnail') do
|
||||
= image_tag speaker.profile_picture(size: 300),
|
||||
class: ['img-responsive', 'img-circle'],
|
||||
title: speaker.name
|
||||
.caption
|
||||
%h3.text-center= speaker.name
|
||||
%h4.text-center= event.title
|
||||
|
|
|
|||
|
|
@ -22,17 +22,17 @@
|
|||
= semantic_form_for(@event.commercials.build, url: conference_program_proposal_commercials_path(conference_id: @conference.short_title, proposal_id: @event)) do |f|
|
||||
= f.input :url, label: 'URL', as: :string, input_html: { required: 'required', type: 'url' },
|
||||
hint: 'Just paste the url of your video/photo provider. Currently supported: YouTube, Vimeo, SpeakerDeck, SlideShare, Instagram, Flickr.'
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary pull-right', disabled: true }
|
||||
= f.action :submit, as: :button, button_html: { class: 'btn btn-primary pull-right', disabled: true }, label: 'Save Materials'
|
||||
%hr
|
||||
- @event.commercials.each_slice(3) do |slice|
|
||||
.row
|
||||
- slice.each do |commercial|
|
||||
- if commercial.persisted?
|
||||
.col-md-4
|
||||
.thumbnail
|
||||
.flexvideo{ id: "resource-content-#{commercial.id}"}
|
||||
.panel.panel-default
|
||||
%div{ id: "resource-content-#{commercial.id}"}
|
||||
= render partial: 'shared/media_item', locals: { commercial: commercial }
|
||||
.caption
|
||||
.caption.panel-footer
|
||||
- if can? :update, commercial
|
||||
= semantic_form_for commercial, url: conference_program_proposal_commercial_path(conference_id: @conference.short_title, proposal_id: @event, id: commercial) do |f|
|
||||
= f.input :url, label: 'URL', as: :string, input_html: { id: "commercial_url_#{commercial.id}", required: 'required', type: 'url' }
|
||||
|
|
|
|||
|
|
@ -64,7 +64,7 @@
|
|||
|
||||
%p.text-right
|
||||
- if @event.new_record?
|
||||
= f.submit 'Create Proposal', class: 'btn btn-success'
|
||||
= f.submit 'Submit Proposal', class: 'btn btn-success'
|
||||
- else
|
||||
= f.submit 'Update Proposal', class: 'btn btn-success'
|
||||
|
||||
|
|
|
|||
|
|
@ -1,19 +1,18 @@
|
|||
.flexvideo
|
||||
- if commercial.url
|
||||
- if commercial.commercial_type == 'SlideShare'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://www.slideshare.net/slideshow/embed_code/#{commercial.commercial_id}"}
|
||||
- elsif commercial.commercial_type == 'Flickr'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://flic.kr/p/#{commercial.commercial_id}/player/268a054da2"}
|
||||
- elsif commercial.commercial_type == 'Vimeo'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "//player.vimeo.com/video/#{commercial.commercial_id}"}
|
||||
- elsif commercial.commercial_type == 'Speakerdeck'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://speakerdeck.com/player/#{commercial.commercial_id}?"}
|
||||
- elsif commercial.commercial_type == 'Instagram'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', scrolling: 'no', allowtransparency: 'true', src: "//instagram.com/p/#{commercial.commercial_id}/embed/"}
|
||||
- elsif commercial.commercial_type == 'YouTube'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://www.youtube.com/embed/#{commercial.commercial_id}?rel=0"}
|
||||
- elsif commercial.url
|
||||
= Commercial.render_from_url(commercial.url)[:html]
|
||||
- else
|
||||
- if commercial.commercial_type == 'SlideShare'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://www.slideshare.net/slideshow/embed_code/#{commercial.commercial_id}"}
|
||||
- elsif commercial.commercial_type == 'Flickr'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://flic.kr/p/#{commercial.commercial_id}/player/268a054da2"}
|
||||
- elsif commercial.commercial_type == 'Vimeo'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "//player.vimeo.com/video/#{commercial.commercial_id}"}
|
||||
- elsif commercial.commercial_type == 'Speakerdeck'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://speakerdeck.com/player/#{commercial.commercial_id}?"}
|
||||
- elsif commercial.commercial_type == 'Instagram'
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', scrolling: 'no', allowtransparency: 'true', src: "//instagram.com/p/#{commercial.commercial_id}/embed/"}
|
||||
- else
|
||||
%iframe{width: '560', height: '315', frameborder: '0', allowfullscreen: 'true', src: "https://www.youtube.com/embed/#{commercial.commercial_id}?rel=0"}
|
||||
- if commercial.url
|
||||
%br
|
||||
= link_to('Open in a new tab', commercial.url, target: '_blank')
|
||||
= link_to('Open in a new tab', commercial.url, target: '_blank', class: 'btn btn-info')
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
Osem::Application.configure do
|
||||
# Settings specified here will take precedence over those in config/application.rb
|
||||
|
||||
config.action_mailer.delivery_method = :letter_opener
|
||||
config.action_mailer.delivery_method = :letter_opener_web
|
||||
|
||||
# In the development environment your application's code is reloaded on
|
||||
# every request. This slows down response time but is perfect for development
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ Devise.setup do |config|
|
|||
# Define the available openID providers that can be used to log in
|
||||
# Pass each provider to User model in :omniauth_providers (for open_id providers use their name)
|
||||
|
||||
# config.omniauth :open_id, name: 'suse', identifier: 'http://www.opensuse.org/openid/user'
|
||||
config.omniauth :open_id, name: 'suse', identifier: 'http://www.opensuse.org/openid/user'
|
||||
|
||||
config.omniauth :google_oauth2,
|
||||
(ENV['OSEM_GOOGLE_KEY'] || Rails.application.secrets.google_key),
|
||||
|
|
@ -14,6 +14,7 @@ Devise.setup do |config|
|
|||
name: 'google',
|
||||
scope: 'email'
|
||||
|
||||
# TODO-SNAPCON: This ought to be configurable. Use OSEM_DISCOURSE_KEY?
|
||||
config.omniauth :discourse,
|
||||
sso_url: 'https://forum.snap.berkeley.edu/session/sso_provider',
|
||||
sso_secret: ENV['OSEM_DISCOURSE_SECRET']
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
Raven.configure do |config|
|
||||
Sentry.init do |config|
|
||||
config.enabled_environments = %|production staging|
|
||||
config.dsn = ENV['SENTRY_DSN']
|
||||
config.sanitize_fields = Rails.application.config.filter_parameters.map(&:to_s)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ on_worker_boot do
|
|||
end
|
||||
|
||||
lowlevel_error_handler do |ex, env|
|
||||
Raven.capture_exception(
|
||||
Sentry.capture_exception(
|
||||
ex,
|
||||
message: ex.message,
|
||||
extra: { puma: env },
|
||||
|
|
|
|||
59
lib/tasks/auto_annotate_models.rake
Normal file
59
lib/tasks/auto_annotate_models.rake
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
# NOTE: only doing this in development as some production environments (Heroku)
|
||||
# NOTE: are sensitive to local FS writes, and besides -- it's just not proper
|
||||
# NOTE: to have a dev-mode tool do its thing in production.
|
||||
if Rails.env.development?
|
||||
require 'annotate'
|
||||
task :set_annotation_options do
|
||||
# You can override any of these by setting an environment variable of the
|
||||
# same name.
|
||||
Annotate.set_defaults(
|
||||
'active_admin' => 'false',
|
||||
'additional_file_patterns' => [],
|
||||
'routes' => 'false',
|
||||
'models' => 'true',
|
||||
'position_in_routes' => 'before',
|
||||
'position_in_class' => 'before',
|
||||
'position_in_test' => 'before',
|
||||
'position_in_fixture' => 'before',
|
||||
'position_in_factory' => 'before',
|
||||
'position_in_serializer' => 'before',
|
||||
'show_foreign_keys' => 'true',
|
||||
'show_complete_foreign_keys' => 'false',
|
||||
'show_indexes' => 'true',
|
||||
'simple_indexes' => 'false',
|
||||
'model_dir' => 'app/models',
|
||||
'root_dir' => '',
|
||||
'include_version' => 'false',
|
||||
'require' => '',
|
||||
'exclude_tests' => 'false',
|
||||
'exclude_fixtures' => 'false',
|
||||
'exclude_factories' => 'false',
|
||||
'exclude_serializers' => 'false',
|
||||
'exclude_scaffolds' => 'true',
|
||||
'exclude_controllers' => 'true',
|
||||
'exclude_helpers' => 'true',
|
||||
'exclude_sti_subclasses' => 'false',
|
||||
'ignore_model_sub_dir' => 'false',
|
||||
'ignore_columns' => nil,
|
||||
'ignore_routes' => nil,
|
||||
'ignore_unknown_models' => 'false',
|
||||
'hide_limit_column_types' => 'integer,bigint,boolean',
|
||||
'hide_default_column_types' => 'json,jsonb,hstore',
|
||||
'skip_on_db_migrate' => 'false',
|
||||
'format_bare' => 'true',
|
||||
'format_rdoc' => 'false',
|
||||
'format_yard' => 'false',
|
||||
'format_markdown' => 'false',
|
||||
'sort' => 'false',
|
||||
'force' => 'false',
|
||||
'frozen' => 'false',
|
||||
'classified_sort' => 'true',
|
||||
'trace' => 'false',
|
||||
'wrapper_open' => nil,
|
||||
'wrapper_close' => nil,
|
||||
'with_comment' => 'true'
|
||||
)
|
||||
end
|
||||
|
||||
Annotate.load_tasks
|
||||
end
|
||||
|
|
@ -98,7 +98,8 @@ describe Admin::ConferencesController do
|
|||
expect(response).to render_template :show
|
||||
end
|
||||
|
||||
it 'assigns conference withdrawn events distribution to event_type_distribution_withdrawn' do
|
||||
# TODO-SNAPCON: This is currently disabled due to slow performance.
|
||||
skip 'assigns conference withdrawn events distribution to event_type_distribution_withdrawn' do
|
||||
conference
|
||||
create(:event, program: conference.program)
|
||||
workshop = create(:event_type, title: 'Workshop', color: '#000000', program: conference.program)
|
||||
|
|
@ -121,7 +122,8 @@ describe Admin::ConferencesController do
|
|||
expect(assigns(:event_type_distribution_withdrawn)).to eq(result)
|
||||
end
|
||||
|
||||
it 'assigns conference withdrawn difficulty level distribution to difficulty_levels_distribution_withdrawn' do
|
||||
# TODO-SNAPCON: This is currently disabled due to slow performance.
|
||||
skip 'assigns conference withdrawn difficulty level distribution to difficulty_levels_distribution_withdrawn' do
|
||||
conference
|
||||
create(:event, program: conference.program)
|
||||
get :show, params: { id: conference.short_title }
|
||||
|
|
@ -144,7 +146,8 @@ describe Admin::ConferencesController do
|
|||
expect(assigns(:difficulty_levels_distribution_withdrawn)).to eq(result)
|
||||
end
|
||||
|
||||
it 'assigns conference withdrawn track distribution to tracks_distribution_withdrawn' do
|
||||
# TODO-SNAPCON: This is currently disabled due to slow performance.
|
||||
skip 'assigns conference withdrawn track distribution to tracks_distribution_withdrawn' do
|
||||
conference
|
||||
create(:event, program: conference.program)
|
||||
get :show, params: { id: conference.short_title }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,21 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: booths
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# logo_link :string
|
||||
# reasoning :text
|
||||
# state :string
|
||||
# submitter_relationship :text
|
||||
# title :string
|
||||
# website_url :string
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# conference_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :booth do
|
||||
title { Faker::Hipster.sentence }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: cfps
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# cfp_type :string
|
||||
# description :text
|
||||
# enable_registrations :boolean default(FALSE)
|
||||
# end_date :date not null
|
||||
# start_date :date not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :cfp do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,28 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: comments
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# body :text
|
||||
# commentable_type :string
|
||||
# lft :integer
|
||||
# rgt :integer
|
||||
# subject :string
|
||||
# title :string(50) default("")
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# commentable_id :integer
|
||||
# parent_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_comments_on_commentable_id (commentable_id)
|
||||
# index_comments_on_commentable_type (commentable_type)
|
||||
# index_comments_on_user_id (user_id)
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :comment do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: commercials
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# commercial_type :string
|
||||
# commercialable_type :string
|
||||
# url :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# commercial_id :string
|
||||
# commercialable_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :commercial do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,40 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: conferences
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# booth_limit :integer default(0)
|
||||
# color :string
|
||||
# custom_css :text
|
||||
# custom_domain :string
|
||||
# description :text
|
||||
# end_date :date not null
|
||||
# end_hour :integer default(20)
|
||||
# events_per_week :text
|
||||
# guid :string not null
|
||||
# logo_file_name :string
|
||||
# picture :string
|
||||
# registration_limit :integer default(0)
|
||||
# revision :integer default(0), not null
|
||||
# short_title :string not null
|
||||
# start_date :date not null
|
||||
# start_hour :integer default(9)
|
||||
# ticket_layout :integer default("portrait")
|
||||
# timezone :string not null
|
||||
# title :string not null
|
||||
# use_vdays :boolean default(FALSE)
|
||||
# use_volunteers :boolean
|
||||
# use_vpositions :boolean default(FALSE)
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# organization_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_conferences_on_organization_id (organization_id)
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :conference do
|
||||
|
|
|
|||
|
|
@ -1,5 +1,24 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: contacts
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# blog :string
|
||||
# email :string
|
||||
# facebook :string
|
||||
# googleplus :string
|
||||
# instagram :string
|
||||
# mastodon :string
|
||||
# social_tag :string
|
||||
# sponsor_email :string
|
||||
# twitter :string
|
||||
# youtube :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :contact do
|
||||
social_tag { SecureRandom.urlsafe_base64(4) }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: difficulty_levels
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# color :string
|
||||
# description :text
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :difficulty_level do
|
||||
title { 'Example Difficulty Level' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,50 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: email_settings
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# accepted_body :text
|
||||
# accepted_subject :string
|
||||
# booths_acceptance_body :text
|
||||
# booths_acceptance_subject :string
|
||||
# booths_rejection_body :text
|
||||
# booths_rejection_subject :string
|
||||
# cfp_dates_updated_body :text
|
||||
# cfp_dates_updated_subject :string
|
||||
# conference_dates_updated_body :text
|
||||
# conference_dates_updated_subject :string
|
||||
# conference_registration_dates_updated_body :text
|
||||
# conference_registration_dates_updated_subject :string
|
||||
# confirmed_without_registration_body :text
|
||||
# confirmed_without_registration_subject :string
|
||||
# program_schedule_public_body :text
|
||||
# program_schedule_public_subject :string
|
||||
# registration_body :text
|
||||
# registration_subject :string
|
||||
# rejected_body :text
|
||||
# rejected_subject :string
|
||||
# send_on_accepted :boolean default(FALSE)
|
||||
# send_on_booths_acceptance :boolean default(FALSE)
|
||||
# send_on_booths_rejection :boolean default(FALSE)
|
||||
# send_on_cfp_dates_updated :boolean default(FALSE)
|
||||
# send_on_conference_dates_updated :boolean default(FALSE)
|
||||
# send_on_conference_registration_dates_updated :boolean default(FALSE)
|
||||
# send_on_confirmed_without_registration :boolean default(FALSE)
|
||||
# send_on_program_schedule_public :boolean default(FALSE)
|
||||
# send_on_registration :boolean default(FALSE)
|
||||
# send_on_rejected :boolean default(FALSE)
|
||||
# send_on_submitted_proposal :boolean default(FALSE)
|
||||
# send_on_venue_updated :boolean default(FALSE)
|
||||
# submitted_proposal_body :text
|
||||
# submitted_proposal_subject :string
|
||||
# venue_updated_body :text
|
||||
# venue_updated_subject :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :email_settings do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: event_types
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# color :string
|
||||
# description :string
|
||||
# length :integer default(30)
|
||||
# maximum_abstract_length :integer default(500)
|
||||
# minimum_abstract_length :integer default(0)
|
||||
# title :string not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# program_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :event_type do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: event_users
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# comment :string
|
||||
# event_role :string default("participant"), not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# event_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :event_user do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,34 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: events
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# abstract :text
|
||||
# comments_count :integer default(0), not null
|
||||
# description :text
|
||||
# guid :string not null
|
||||
# is_highlight :boolean default(FALSE)
|
||||
# language :string
|
||||
# max_attendees :integer
|
||||
# progress :string default("new"), not null
|
||||
# proposal_additional_speakers :text
|
||||
# public :boolean default(TRUE)
|
||||
# require_registration :boolean
|
||||
# start_time :datetime
|
||||
# state :string default("new"), not null
|
||||
# subtitle :string
|
||||
# title :string not null
|
||||
# week :integer
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# difficulty_level_id :integer
|
||||
# event_type_id :integer
|
||||
# program_id :integer
|
||||
# room_id :integer
|
||||
# track_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :event do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: events_registrations
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# attended :boolean default(FALSE), not null
|
||||
# created_at :datetime
|
||||
# event_id :integer
|
||||
# registration_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :events_registration do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: lodgings
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# name :string
|
||||
# photo_content_type :string
|
||||
# photo_file_name :string
|
||||
# photo_file_size :integer
|
||||
# photo_updated_at :datetime
|
||||
# picture :string
|
||||
# website_link :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :lodging do
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: organizations
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# code_of_conduct :text
|
||||
# description :text
|
||||
# name :string not null
|
||||
# picture :string
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :organization do
|
||||
sequence(:name) { |n| "#{Faker::Company.name} #{n}" }
|
||||
|
|
|
|||
|
|
@ -1,5 +1,19 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: payments
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# amount :integer
|
||||
# authorization_code :string
|
||||
# last4 :string
|
||||
# status :integer default("unpaid"), not null
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# conference_id :integer not null
|
||||
# user_id :integer not null
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :payment do
|
||||
user
|
||||
|
|
|
|||
|
|
@ -1,6 +1,27 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: programs
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# blind_voting :boolean default(FALSE)
|
||||
# languages :string
|
||||
# rating :integer default(0)
|
||||
# schedule_fluid :boolean default(FALSE)
|
||||
# schedule_interval :integer default(15), not null
|
||||
# schedule_public :boolean default(FALSE)
|
||||
# voting_end_date :datetime
|
||||
# voting_start_date :datetime
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# selected_schedule_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_programs_on_selected_schedule_id (selected_schedule_id)
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :program do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: registration_periods
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# end_date :date
|
||||
# start_date :date
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :registration_period do
|
||||
|
|
|
|||
|
|
@ -1,5 +1,22 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: roles
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :string
|
||||
# name :string
|
||||
# resource_type :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# resource_id :integer
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
# index_roles_on_name (name)
|
||||
# index_roles_on_name_and_resource_type_and_resource_id (name,resource_type,resource_id)
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :role do
|
||||
name { 'my role' }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,17 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: rooms
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# guid :string not null
|
||||
# name :string not null
|
||||
# order :integer
|
||||
# size :integer
|
||||
# url :string
|
||||
# venue_id :integer not null
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :room do
|
||||
name { "Room #{Faker::Address.country}" }
|
||||
|
|
|
|||
|
|
@ -1,6 +1,30 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: splashpages
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# banner_photo_content_type :string
|
||||
# banner_photo_file_name :string
|
||||
# banner_photo_file_size :integer
|
||||
# banner_photo_updated_at :datetime
|
||||
# include_booths :boolean
|
||||
# include_cfp :boolean default(FALSE)
|
||||
# include_lodgings :boolean
|
||||
# include_program :boolean
|
||||
# include_registrations :boolean
|
||||
# include_social_media :boolean
|
||||
# include_sponsors :boolean
|
||||
# include_tickets :boolean
|
||||
# include_tracks :boolean
|
||||
# include_venue :boolean
|
||||
# public :boolean
|
||||
# shuffle_highlights :boolean default(FALSE), not null
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :splashpage do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,20 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: sponsors
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# description :text
|
||||
# logo_file_name :string
|
||||
# name :string
|
||||
# picture :string
|
||||
# website_url :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# sponsorship_level_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :sponsor do
|
||||
|
|
|
|||
|
|
@ -1,6 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# Read about factories at https://github.com/thoughtbot/factory_bot
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: sponsorship_levels
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# position :integer
|
||||
# title :string
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
#
|
||||
|
||||
FactoryBot.define do
|
||||
factory :sponsorship_level do
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: subscriptions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime
|
||||
# updated_at :datetime
|
||||
# conference_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :subscription do
|
||||
user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: survey_questions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# kind :integer default("boolean")
|
||||
# mandatory :boolean default(FALSE)
|
||||
# max_choices :integer
|
||||
# min_choices :integer
|
||||
# possible_answers :text
|
||||
# title :string
|
||||
# survey_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :survey_question do
|
||||
survey
|
||||
|
|
|
|||
|
|
@ -1,5 +1,16 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: survey_replies
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# text :text
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# survey_question_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :survey_reply do
|
||||
user
|
||||
|
|
|
|||
|
|
@ -1,5 +1,15 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
# == Schema Information
|
||||
#
|
||||
# Table name: survey_submissions
|
||||
#
|
||||
# id :bigint not null, primary key
|
||||
# created_at :datetime not null
|
||||
# updated_at :datetime not null
|
||||
# survey_id :integer
|
||||
# user_id :integer
|
||||
#
|
||||
FactoryBot.define do
|
||||
factory :survey_submission do
|
||||
user
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue