Compare commits

..

No commits in common. "master" and "depfu/update/temple-0.10.4" have entirely different histories.

76 changed files with 353 additions and 352 deletions

View file

@ -1 +1 @@
3.4.10 3.4.5

View file

@ -1,28 +1,20 @@
FROM registry.opensuse.org/opensuse/infrastructure/dale/containers/osem/base:latest FROM registry.opensuse.org/opensuse/infrastructure/dale/containers/osem/base:latest
EXPOSE 5000
ENV RAILS_ENV=production ENV RAILS_ENV=production
ENV RAILS_SERVE_STATIC_FILES=true
# Add our files # Add our files
COPY --chown=1000:1000 . /osem/ COPY --chown=1000:1000 . /osem/
# Install foreman # Install bundler & foreman
RUN gem install foreman RUN gem install bundler -v "$(grep -A 1 "BUNDLED WITH" /osem/Gemfile.lock | tail -n 1)"; \
gem install foreman
USER osem USER osem
WORKDIR /osem/ WORKDIR /osem/
RUN rm -rf /osem/public/system/sponsors; mkdir -p /osem/public/system/sponsors; \
rm -rf /osem/public/assets; mkdir -p /osem/public/assets; \
rm -rf /osem/log; mkdir -p /osem/public/assets
# Install our bundle # Install our bundle
RUN bundle config set --local without 'test development'; \ RUN bundle config set --local without 'test development'
bundle config set --local path 'vendor/bundle'; \ RUN bundle install --jobs=3 --retry=3
bundle config build.nokogiri --use-system-libraries; \
bundle install --jobs=4 --retry=3
# Generate assets # Generate assets
RUN bundle exec rake assets:precompile RUN bundle exec rake assets:precompile

View file

@ -183,8 +183,6 @@ gem 'sprockets-rails'
# for multiple speakers select on proposal/event forms # for multiple speakers select on proposal/event forms
gem 'selectize-rails' gem 'selectize-rails'
# Pin to solve https://github.com/mperham/connection_pool/issues/212
gem "connection_pool", "< 3"
# memcached binary connector # memcached binary connector
gem 'dalli' gem 'dalli'
@ -195,7 +193,7 @@ gem 'icalendar'
gem 'lograge' gem 'lograge'
group :development do group :development do
# for static code analysis # for static code analisys
gem 'rubocop', require: false gem 'rubocop', require: false
gem 'rubocop-rspec', require: false gem 'rubocop-rspec', require: false
gem 'rubocop-rails', require: false gem 'rubocop-rails', require: false

View file

@ -2,73 +2,71 @@ GEM
remote: https://rubygems.org/ remote: https://rubygems.org/
specs: specs:
Ascii85 (2.0.1) Ascii85 (2.0.1)
actioncable (7.2.3) actioncable (7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
nio4r (~> 2.0) nio4r (~> 2.0)
websocket-driver (>= 0.6.1) websocket-driver (>= 0.6.1)
zeitwerk (~> 2.6) zeitwerk (~> 2.6)
actionmailbox (7.2.3) actionmailbox (7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
activejob (= 7.2.3) activejob (= 7.2.2.1)
activerecord (= 7.2.3) activerecord (= 7.2.2.1)
activestorage (= 7.2.3) activestorage (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
mail (>= 2.8.0) mail (>= 2.8.0)
actionmailer (7.2.3) actionmailer (7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
actionview (= 7.2.3) actionview (= 7.2.2.1)
activejob (= 7.2.3) activejob (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
mail (>= 2.8.0) mail (>= 2.8.0)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
actionpack (7.2.3) actionpack (7.2.2.1)
actionview (= 7.2.3) actionview (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
cgi
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
racc racc
rack (>= 2.2.4, < 3.3) rack (>= 2.2.4, < 3.2)
rack-session (>= 1.0.1) rack-session (>= 1.0.1)
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6) rails-html-sanitizer (~> 1.6)
useragent (~> 0.16) useragent (~> 0.16)
actiontext (7.2.3) actiontext (7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
activerecord (= 7.2.3) activerecord (= 7.2.2.1)
activestorage (= 7.2.3) activestorage (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
globalid (>= 0.6.0) globalid (>= 0.6.0)
nokogiri (>= 1.8.5) nokogiri (>= 1.8.5)
actionview (7.2.3) actionview (7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
builder (~> 3.1) builder (~> 3.1)
cgi
erubi (~> 1.11) erubi (~> 1.11)
rails-dom-testing (~> 2.2) rails-dom-testing (~> 2.2)
rails-html-sanitizer (~> 1.6) rails-html-sanitizer (~> 1.6)
active_model_serializers (0.10.16) active_model_serializers (0.10.15)
actionpack (>= 4.1) actionpack (>= 4.1)
activemodel (>= 4.1) activemodel (>= 4.1)
case_transform (>= 0.2) case_transform (>= 0.2)
jsonapi-renderer (>= 0.1.1.beta1, < 0.3) jsonapi-renderer (>= 0.1.1.beta1, < 0.3)
activejob (7.2.3) activejob (7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
globalid (>= 0.3.6) globalid (>= 0.3.6)
activemodel (7.2.3) activemodel (7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
activerecord (7.2.3) activerecord (7.2.2.1)
activemodel (= 7.2.3) activemodel (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
timeout (>= 0.4.0) timeout (>= 0.4.0)
activestorage (7.2.3) activestorage (7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
activejob (= 7.2.3) activejob (= 7.2.2.1)
activerecord (= 7.2.3) activerecord (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
marcel (~> 1.0) marcel (~> 1.0)
activesupport (7.2.3) activesupport (7.2.2.1)
base64 base64
benchmark (>= 0.3) benchmark (>= 0.3)
bigdecimal bigdecimal
@ -84,37 +82,32 @@ GEM
activerecord (>= 3.0) activerecord (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
awesome_nested_set (>= 2.0) awesome_nested_set (>= 2.0)
acts_as_list (1.2.6) acts_as_list (1.0.4)
activerecord (>= 6.1) activerecord (>= 4.2)
activesupport (>= 6.1) addressable (2.8.7)
addressable (2.9.0) public_suffix (>= 2.0.2, < 7.0)
public_suffix (>= 2.0.2, < 8.0) afm (0.2.2)
afm (1.0.0)
ajax-datatables-rails (1.3.1) ajax-datatables-rails (1.3.1)
zeitwerk zeitwerk
anonymous_loader (0.1.3) archive-zip (0.12.0)
version_gem (~> 1.1, >= 1.1.14) io-like (~> 0.3.0)
archive-zip (0.13.1)
io-like (~> 0.4.0)
ast (2.4.3) ast (2.4.3)
auth-sanitizer (0.2.3)
version_gem (~> 1.1, >= 1.1.14)
autoprefixer-rails (10.3.1.0) autoprefixer-rails (10.3.1.0)
execjs (~> 2) execjs (~> 2)
awesome_nested_set (3.8.0) awesome_nested_set (3.8.0)
activerecord (>= 4.0.0, < 8.1) activerecord (>= 4.0.0, < 8.1)
base64 (0.3.0) base64 (0.3.0)
bcrypt (3.1.22) bcrypt (3.1.20)
benchmark (0.5.0) benchmark (0.4.1)
bigdecimal (3.3.1) bigdecimal (3.2.2)
bindex (0.8.1) bindex (0.8.1)
bootstrap-sass (3.4.1) bootstrap-sass (3.4.1)
autoprefixer-rails (>= 5.2.1) autoprefixer-rails (>= 5.2.1)
sassc (>= 2.0.0) sassc (>= 2.0.0)
bootstrap-switch-rails (3.3.3) bootstrap-switch-rails (3.3.3)
builder (3.3.0) builder (3.3.0)
byebug (12.0.0) byebug (11.1.3)
cancancan (3.6.1) cancancan (3.3.0)
capybara (3.40.0) capybara (3.40.0)
addressable addressable
matrix matrix
@ -124,7 +117,7 @@ GEM
rack-test (>= 0.6.3) rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0) regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2) xpath (~> 3.2)
carrierwave (3.1.3) carrierwave (3.1.2)
activemodel (>= 6.0.0) activemodel (>= 6.0.0)
activesupport (>= 6.0.0) activesupport (>= 6.0.0)
addressable (~> 2.6) addressable (~> 2.6)
@ -137,16 +130,15 @@ GEM
fastimage fastimage
case_transform (0.2) case_transform (0.2)
activesupport activesupport
caxlsx (4.3.0) caxlsx (4.2.0)
htmlentities (~> 4.3, >= 4.3.4) htmlentities (~> 4.3, >= 4.3.4)
marcel (~> 1.0) marcel (~> 1.0)
nokogiri (~> 1.10, >= 1.10.4) nokogiri (~> 1.10, >= 1.10.4)
rubyzip (>= 2.4, < 4) rubyzip (>= 1.3.0, < 3)
caxlsx_rails (0.6.2) caxlsx_rails (0.6.2)
actionpack (>= 3.1) actionpack (>= 3.1)
caxlsx (>= 3.0) caxlsx (>= 3.0)
cgi (0.5.1) chartkick (4.1.3)
chartkick (5.2.1)
childprocess (5.1.0) childprocess (5.1.0)
logger (~> 1.5) logger (~> 1.5)
chronic (0.10.2) chronic (0.10.2)
@ -158,13 +150,13 @@ GEM
faraday-multipart (~> 1.0, >= 1.0.4) faraday-multipart (~> 1.0, >= 1.0.4)
ostruct ostruct
cocoon (1.2.15) cocoon (1.2.15)
concurrent-ruby (1.3.7) concurrent-ruby (1.3.5)
connection_pool (2.5.5) connection_pool (2.5.3)
countable-rails (0.0.1) countable-rails (0.0.1)
railties (>= 3.1) railties (>= 3.1)
crack (0.4.5) crack (0.4.5)
rexml rexml
crass (1.0.7) crass (1.0.6)
csv (3.3.5) csv (3.3.5)
daemons (1.4.0) daemons (1.4.0)
dalli (2.7.11) dalli (2.7.11)
@ -175,40 +167,39 @@ GEM
activerecord (>= 5.a) activerecord (>= 5.a)
database_cleaner-core (~> 2.0) database_cleaner-core (~> 2.0)
database_cleaner-core (2.0.1) database_cleaner-core (2.0.1)
date (3.5.1) date (3.4.1)
delayed_job (4.2.0) delayed_job (4.1.13)
activesupport (>= 3.0, < 9.0) activesupport (>= 3.0, < 9.0)
benchmark
logger
delayed_job_active_record (4.1.11) delayed_job_active_record (4.1.11)
activerecord (>= 3.0, < 9.0) activerecord (>= 3.0, < 9.0)
delayed_job (>= 3.0, < 5) delayed_job (>= 3.0, < 5)
devise (5.0.4) devise (4.9.4)
bcrypt (~> 3.0) bcrypt (~> 3.0)
orm_adapter (~> 0.1) orm_adapter (~> 0.1)
railties (>= 7.0) railties (>= 4.1.0)
responders responders
warden (~> 1.2.3) warden (~> 1.2.3)
devise_ichain_authenticatable (0.3.2) devise_ichain_authenticatable (0.3.2)
devise (>= 2.2) devise (>= 2.2)
diff-lcs (1.6.2) diff-lcs (1.6.2)
docile (1.4.1) docile (1.4.1)
dotenv (3.2.0) dotenv (3.1.8)
dotenv-rails (3.2.0) dotenv-rails (3.1.8)
dotenv (= 3.2.0) dotenv (= 3.1.8)
railties (>= 6.1) railties (>= 6.1)
drb (2.2.3) drb (2.2.3)
erb (6.0.6) erb (5.0.2)
erubi (1.13.1) erubi (1.13.1)
erubis (2.7.0)
execjs (2.8.1) execjs (2.8.1)
factory_bot (6.5.6) factory_bot (6.5.4)
activesupport (>= 6.1.0) activesupport (>= 6.1.0)
factory_bot_rails (6.5.1) factory_bot_rails (6.5.0)
factory_bot (~> 6.5) factory_bot (~> 6.5)
railties (>= 6.1.0) railties (>= 6.1.0)
faker (3.5.2) faker (3.5.2)
i18n (>= 1.8.11, < 2) i18n (>= 1.8.11, < 2)
faraday (2.14.3) faraday (2.13.4)
faraday-net_http (>= 2.0, < 3.5) faraday-net_http (>= 2.0, < 3.5)
json json
logger logger
@ -216,42 +207,46 @@ GEM
faraday (>= 1, < 3) faraday (>= 1, < 3)
faraday-multipart (1.1.1) faraday-multipart (1.1.1)
multipart-post (~> 2.0) multipart-post (~> 2.0)
faraday-net_http (3.4.4) faraday-net_http (3.4.1)
net-http (~> 0.5) net-http (>= 0.5.0)
fastimage (2.4.1) fastimage (2.4.0)
feature (1.4.0) feature (1.4.0)
ffi (1.17.4) ffi (1.17.2)
font-awesome-sass (6.7.2) font-awesome-sass (6.7.2)
sassc (~> 2.0) sassc (~> 2.0)
geckodriver-helper (0.24.0) geckodriver-helper (0.24.0)
archive-zip (~> 0.7) archive-zip (~> 0.7)
globalid (1.3.0) globalid (1.2.1)
activesupport (>= 6.1) activesupport (>= 6.1)
gravtastic (3.2.6) gravtastic (3.2.6)
haml (6.3.0) haml (5.2.2)
temple (>= 0.8.2) temple (>= 0.8.0)
thor
tilt tilt
haml-rails (2.1.0) haml-rails (2.0.1)
actionpack (>= 5.1) actionpack (>= 5.1)
activesupport (>= 5.1) activesupport (>= 5.1)
haml (>= 4.0.6) haml (>= 4.0.6, < 6.0)
html2haml (>= 1.0.1)
railties (>= 5.1) railties (>= 5.1)
haml_lint (0.66.0) haml_lint (0.37.1)
haml (>= 5.0) haml (>= 4.0, < 5.3)
parallel (~> 1.10) parallel (~> 1.10)
rainbow rainbow
rubocop (>= 1.0) rubocop (>= 0.50.0)
sysexits (~> 1.1) sysexits (~> 1.1)
hashdiff (1.2.1) hashdiff (1.0.1)
hashery (2.1.2) hashery (2.1.2)
hashie (5.1.0) hashie (5.0.0)
logger html2haml (2.2.0)
htmlentities (4.4.2) erubis (~> 2.7.0)
i18n (1.14.8) haml (>= 4.0, < 6)
nokogiri (>= 1.6.0)
ruby_parser (~> 3.5)
htmlentities (4.3.4)
i18n (1.14.7)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
i18n_data (0.13.0) i18n_data (0.13.0)
icalendar (2.12.4) icalendar (2.11.2)
base64 base64
ice_cube (~> 0.16) ice_cube (~> 0.16)
logger logger
@ -260,11 +255,10 @@ GEM
image_processing (1.14.0) image_processing (1.14.0)
mini_magick (>= 4.9.5, < 6) mini_magick (>= 4.9.5, < 6)
ruby-vips (>= 2.0.17, < 3) ruby-vips (>= 2.0.17, < 3)
io-console (0.8.2) io-console (0.8.1)
io-like (0.4.0) io-like (0.3.1)
irb (1.18.0) irb (1.15.2)
pp (>= 0.6.0) pp (>= 0.6.0)
prism (>= 1.3.0)
rdoc (>= 4.0.0) rdoc (>= 4.0.0)
reline (>= 0.4.2) reline (>= 0.4.2)
iso-639 (0.3.8) iso-639 (0.3.8)
@ -274,20 +268,19 @@ GEM
jquery-rails jquery-rails
railties (>= 3.1) railties (>= 3.1)
sass-rails sass-rails
jquery-rails (4.6.1) jquery-rails (4.4.0)
rails-dom-testing (>= 1, < 3) rails-dom-testing (>= 1, < 3)
railties (>= 4.2.0) railties (>= 4.2.0)
thor (>= 0.14, < 2.0) thor (>= 0.14, < 2.0)
jquery-ui-rails (6.0.1) jquery-ui-rails (6.0.1)
railties (>= 3.2.16) railties (>= 3.2.16)
json (2.21.2) json (2.13.2)
json-schema (6.0.0) json-schema (2.8.1)
addressable (~> 2.8) addressable (>= 2.4)
bigdecimal (~> 3.1)
jsonapi-renderer (0.2.2) jsonapi-renderer (0.2.2)
jwt (3.2.0) jwt (3.1.2)
base64 base64
language_server-protocol (3.17.0.6) language_server-protocol (3.17.0.5)
launchy (3.1.1) launchy (3.1.1)
addressable (~> 2.8) addressable (~> 2.8)
childprocess (~> 5.0) childprocess (~> 5.0)
@ -309,26 +302,24 @@ GEM
activesupport (>= 4) activesupport (>= 4)
railties (>= 4) railties (>= 4)
request_store (~> 1.0) request_store (~> 1.0)
loofah (2.25.2) loofah (2.24.1)
crass (~> 1.0.2) crass (~> 1.0.2)
nokogiri (>= 1.12.0) nokogiri (>= 1.12.0)
mail (2.9.1) mail (2.8.1)
logger
mini_mime (>= 0.1.1) mini_mime (>= 0.1.1)
net-imap net-imap
net-pop net-pop
net-smtp net-smtp
marcel (1.0.4) marcel (1.0.4)
matrix (0.4.3) matrix (0.4.2)
mina (1.2.5) mina (1.2.4)
open4 (~> 1.3.4)
rake rake
mini_magick (5.3.2) mini_magick (5.3.0)
logger logger
mini_mime (1.1.5) mini_mime (1.1.5)
mini_portile2 (2.8.9) mini_portile2 (2.8.9)
minitest (6.0.6) minitest (5.25.5)
drb (~> 2.0)
prism (~> 1.5)
monetize (1.9.4) monetize (1.9.4)
money (~> 6.12) money (~> 6.12)
money (6.13.8) money (6.13.8)
@ -339,12 +330,12 @@ GEM
money (~> 6.13.2) money (~> 6.13.2)
railties (>= 3.0) railties (>= 3.0)
multi_json (1.17.0) multi_json (1.17.0)
multi_xml (0.9.1) multi_xml (0.7.2)
bigdecimal (>= 3.1, < 5) bigdecimal (~> 3.1)
multipart-post (2.4.1) multipart-post (2.4.1)
net-http (0.9.1) net-http (0.6.0)
uri (>= 0.11.1) uri
net-imap (0.6.6) net-imap (0.5.9)
date date
net-protocol net-protocol
net-pop (0.1.2) net-pop (0.1.2)
@ -353,25 +344,22 @@ GEM
timeout timeout
net-smtp (0.5.1) net-smtp (0.5.1)
net-protocol net-protocol
next_rails (1.4.8) next_rails (1.4.6)
rainbow (>= 3) rainbow (>= 3)
nio4r (2.7.5) nio4r (2.7.4)
nokogiri (1.19.4) nokogiri (1.18.9)
mini_portile2 (~> 2.8.2) mini_portile2 (~> 2.8.2)
racc (~> 1.4) racc (~> 1.4)
oauth2 (2.0.25) oauth2 (2.0.12)
anonymous_loader (~> 0.1, >= 0.1.3)
auth-sanitizer (~> 0.2, >= 0.2.3)
faraday (>= 0.17.3, < 4.0) faraday (>= 0.17.3, < 4.0)
jwt (>= 1.0, < 4.0) jwt (>= 1.0, < 4.0)
logger (~> 1.2) logger (~> 1.2)
multi_xml (~> 0.5) multi_xml (~> 0.5)
rack (>= 1.2, < 4) rack (>= 1.2, < 4)
snaky_hash (~> 2.0, >= 2.0.7) snaky_hash (~> 2.0, >= 2.0.3)
version_gem (~> 1.1, >= 1.1.14) version_gem (>= 1.1.8, < 3)
omniauth (2.1.4) omniauth (2.1.3)
hashie (>= 3.4.6) hashie (>= 3.4.6)
logger
rack (>= 2.2.3) rack (>= 2.2.3)
rack-protection rack-protection
omniauth-facebook (8.0.0) omniauth-facebook (8.0.0)
@ -379,13 +367,13 @@ GEM
omniauth-github (2.0.1) omniauth-github (2.0.1)
omniauth (~> 2.0) omniauth (~> 2.0)
omniauth-oauth2 (~> 1.8) omniauth-oauth2 (~> 1.8)
omniauth-google-oauth2 (1.2.2) omniauth-google-oauth2 (1.2.1)
jwt (>= 2.9.2) jwt (>= 2.9.2)
oauth2 (~> 2.0) oauth2 (~> 2.0)
omniauth (~> 2.0) omniauth (~> 2.0)
omniauth-oauth2 (~> 1.8) omniauth-oauth2 (~> 1.8)
omniauth-oauth2 (1.9.0) omniauth-oauth2 (1.8.0)
oauth2 (>= 2.0.2, < 3) oauth2 (>= 1.4, < 3)
omniauth (~> 2.0) omniauth (~> 2.0)
omniauth-openid (2.0.2) omniauth-openid (2.0.2)
omniauth (>= 1.1) omniauth (>= 1.1)
@ -395,26 +383,27 @@ GEM
omniauth-rails_csrf_protection (1.0.0) omniauth-rails_csrf_protection (1.0.0)
actionpack (>= 4.2) actionpack (>= 4.2)
omniauth (~> 2.0) omniauth (~> 2.0)
open4 (1.3.4)
orm_adapter (0.5.0) orm_adapter (0.5.0)
ostruct (0.6.3) ostruct (0.6.3)
paper_trail (16.0.0) paper_trail (16.0.0)
activerecord (>= 6.1) activerecord (>= 6.1)
request_store (~> 1.4) request_store (~> 1.4)
parallel (1.27.0) parallel (1.27.0)
parser (3.3.12.0) parser (3.3.9.0)
ast (~> 2.4.1) ast (~> 2.4.1)
racc racc
pdf-core (0.10.0) pdf-core (0.10.0)
pdf-inspector (1.3.0) pdf-inspector (1.3.0)
pdf-reader (>= 1.0, < 3.0.a) pdf-reader (>= 1.0, < 3.0.a)
pdf-reader (2.15.1) pdf-reader (2.14.1)
Ascii85 (>= 1.0, < 3.0, != 2.0.0) Ascii85 (>= 1.0, < 3.0, != 2.0.0)
afm (>= 0.2.1, < 2) afm (~> 0.2.1)
hashery (~> 2.0) hashery (~> 2.0)
ruby-rc4 ruby-rc4
ttfunk ttfunk
pg (1.6.3) pg (1.6.1)
pp (0.6.3) pp (0.6.2)
prettyprint prettyprint
prawn (2.5.0) prawn (2.5.0)
matrix (~> 0.4) matrix (~> 0.4)
@ -431,43 +420,43 @@ GEM
prawn-table (0.2.2) prawn-table (0.2.2)
prawn (>= 1.3.0, < 3.0.0) prawn (>= 1.3.0, < 3.0.0)
prettyprint (0.2.0) prettyprint (0.2.0)
prism (1.9.0) prism (1.4.0)
psych (5.3.1) psych (5.2.6)
date date
stringio stringio
public_suffix (7.0.5) public_suffix (6.0.2)
puma (8.0.2) puma (6.6.1)
nio4r (~> 2.0) nio4r (~> 2.0)
racc (1.8.1) racc (1.8.1)
rack (3.2.6) rack (3.1.16)
rack-openid (1.4.2) rack-openid (1.4.2)
rack (>= 1.1.0) rack (>= 1.1.0)
ruby-openid (>= 2.1.8) ruby-openid (>= 2.1.8)
rack-protection (4.2.1) rack-protection (4.1.1)
base64 (>= 0.1.0) base64 (>= 0.1.0)
logger (>= 1.6.0) logger (>= 1.6.0)
rack (>= 3.0.0, < 4) rack (>= 3.0.0, < 4)
rack-session (2.1.2) rack-session (2.1.1)
base64 (>= 0.1.0) base64 (>= 0.1.0)
rack (>= 3.0.0) rack (>= 3.0.0)
rack-test (2.2.0) rack-test (2.2.0)
rack (>= 1.3) rack (>= 1.3)
rackup (2.3.1) rackup (2.2.1)
rack (>= 3) rack (>= 3)
rails (7.2.3) rails (7.2.2.1)
actioncable (= 7.2.3) actioncable (= 7.2.2.1)
actionmailbox (= 7.2.3) actionmailbox (= 7.2.2.1)
actionmailer (= 7.2.3) actionmailer (= 7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
actiontext (= 7.2.3) actiontext (= 7.2.2.1)
actionview (= 7.2.3) actionview (= 7.2.2.1)
activejob (= 7.2.3) activejob (= 7.2.2.1)
activemodel (= 7.2.3) activemodel (= 7.2.2.1)
activerecord (= 7.2.3) activerecord (= 7.2.2.1)
activestorage (= 7.2.3) activestorage (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
bundler (>= 1.15.0) bundler (>= 1.15.0)
railties (= 7.2.3) railties (= 7.2.2.1)
rails-controller-testing (1.0.5) rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1) actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1) actionview (>= 5.0.1.rc1)
@ -476,65 +465,63 @@ GEM
activesupport (>= 5.0.0) activesupport (>= 5.0.0)
minitest minitest
nokogiri (>= 1.6) nokogiri (>= 1.6)
rails-html-sanitizer (1.7.1) rails-html-sanitizer (1.6.2)
loofah (~> 2.25, >= 2.25.2) loofah (~> 2.21)
nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0) nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
rails-i18n (7.0.1) rails-i18n (7.0.1)
i18n (>= 0.7, < 2) i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 8) railties (>= 6.0.0, < 8)
railties (7.2.3) railties (7.2.2.1)
actionpack (= 7.2.3) actionpack (= 7.2.2.1)
activesupport (= 7.2.3) activesupport (= 7.2.2.1)
cgi
irb (~> 1.13) irb (~> 1.13)
rackup (>= 1.0.0) rackup (>= 1.0.0)
rake (>= 12.2) rake (>= 12.2)
thor (~> 1.0, >= 1.2.2) thor (~> 1.0, >= 1.2.2)
tsort (>= 0.2)
zeitwerk (~> 2.6) zeitwerk (~> 2.6)
rainbow (3.1.1) rainbow (3.1.1)
rake (13.4.2) rake (13.3.0)
rdoc (7.2.0) rdoc (6.14.2)
erb erb
psych (>= 4.0.0) psych (>= 4.0.0)
tsort recaptcha (5.8.1)
recaptcha (5.21.2) json
redcarpet (3.6.1) redcarpet (3.6.1)
regexp_parser (2.11.3) regexp_parser (2.11.1)
reline (0.6.3) reline (0.6.2)
io-console (~> 0.5) io-console (~> 0.5)
request_store (1.7.0) request_store (1.7.0)
rack (>= 1.4) rack (>= 1.4)
responders (3.2.0) responders (3.1.1)
actionpack (>= 7.0) actionpack (>= 5.2)
railties (>= 7.0) railties (>= 5.2)
rexml (3.4.4) rexml (3.4.1)
rolify (6.0.0) rolify (6.0.0)
rqrcode (3.1.0) rqrcode (2.0.0)
chunky_png (~> 1.0) chunky_png (~> 1.0)
rqrcode_core (~> 2.0) rqrcode_core (~> 1.0)
rqrcode_core (2.0.0) rqrcode_core (1.1.0)
rspec-activemodel-mocks (1.3.0) rspec-activemodel-mocks (1.1.0)
activemodel (>= 3.0) activemodel (>= 3.0)
activesupport (>= 3.0) activesupport (>= 3.0)
rspec-mocks (>= 2.99, < 4.0) rspec-mocks (>= 2.99, < 4.0)
rspec-core (3.13.6) rspec-core (3.13.5)
rspec-support (~> 3.13.0) rspec-support (~> 3.13.0)
rspec-expectations (3.13.5) rspec-expectations (3.13.5)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0) rspec-support (~> 3.13.0)
rspec-mocks (3.13.8) rspec-mocks (3.13.5)
diff-lcs (>= 1.2.0, < 2.0) diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.13.0) rspec-support (~> 3.13.0)
rspec-rails (8.0.4) rspec-rails (8.0.2)
actionpack (>= 7.2) actionpack (>= 7.2)
activesupport (>= 7.2) activesupport (>= 7.2)
railties (>= 7.2) railties (>= 7.2)
rspec-core (>= 3.13.0, < 5.0.0) rspec-core (~> 3.13)
rspec-expectations (>= 3.13.0, < 5.0.0) rspec-expectations (~> 3.13)
rspec-mocks (>= 3.13.0, < 5.0.0) rspec-mocks (~> 3.13)
rspec-support (>= 3.13.0, < 5.0.0) rspec-support (~> 3.13)
rspec-support (3.13.7) rspec-support (3.13.4)
rubocop (1.79.2) rubocop (1.79.2)
json (~> 2.3) json (~> 2.3)
language_server-protocol (~> 3.17.0.2) language_server-protocol (~> 3.17.0.2)
@ -559,7 +546,7 @@ GEM
lint_roller (~> 1.1) lint_roller (~> 1.1)
rubocop (>= 1.75.0, < 2.0) rubocop (>= 1.75.0, < 2.0)
rubocop-ast (>= 1.38.0, < 2.0) rubocop-ast (>= 1.38.0, < 2.0)
rubocop-rails (2.33.3) rubocop-rails (2.33.1)
activesupport (>= 4.2.0) activesupport (>= 4.2.0)
lint_roller (~> 1.1) lint_roller (~> 1.1)
rack (>= 1.1) rack (>= 1.1)
@ -576,9 +563,11 @@ GEM
ruby-openid (2.9.2) ruby-openid (2.9.2)
ruby-progressbar (1.13.0) ruby-progressbar (1.13.0)
ruby-rc4 (0.1.5) ruby-rc4 (0.1.5)
ruby-vips (2.3.0) ruby-vips (2.2.4)
ffi (~> 1.12) ffi (~> 1.12)
logger logger
ruby_parser (3.17.0)
sexp_processor (~> 4.15, >= 4.15.1)
rubyzip (2.4.1) rubyzip (2.4.1)
sass-rails (6.0.0) sass-rails (6.0.0)
sassc-rails (~> 2.1, >= 2.1.1) sassc-rails (~> 2.1, >= 2.1.1)
@ -602,20 +591,21 @@ GEM
sentry-ruby (5.26.0) sentry-ruby (5.26.0)
bigdecimal bigdecimal
concurrent-ruby (~> 1.0, >= 1.0.2) concurrent-ruby (~> 1.0, >= 1.0.2)
sexp_processor (4.15.3)
shoulda-matchers (6.5.0) shoulda-matchers (6.5.0)
activesupport (>= 5.2.0) activesupport (>= 5.2.0)
simplecov (0.22.0) simplecov (0.22.0)
docile (~> 1.1) docile (~> 1.1)
simplecov-html (~> 0.11) simplecov-html (~> 0.11)
simplecov_json_formatter (~> 0.1) simplecov_json_formatter (~> 0.1)
simplecov-cobertura (3.1.0) simplecov-cobertura (3.0.0)
rexml rexml
simplecov (~> 0.19) simplecov (~> 0.19)
simplecov-html (0.13.2) simplecov-html (0.13.2)
simplecov_json_formatter (0.1.4) simplecov_json_formatter (0.1.4)
snaky_hash (2.0.7) snaky_hash (2.0.3)
hashie (>= 0.1.0, < 6) hashie (>= 0.1.0, < 6)
version_gem (~> 1.1, >= 1.1.14) version_gem (>= 1.1.8, < 3)
sprockets (4.2.2) sprockets (4.2.2)
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
logger logger
@ -624,8 +614,8 @@ GEM
actionpack (>= 4.0) actionpack (>= 4.0)
activesupport (>= 4.0) activesupport (>= 4.0)
sprockets (>= 3.0.0) sprockets (>= 3.0.0)
ssrf_filter (1.5.0) ssrf_filter (1.3.0)
stringio (3.2.0) stringio (3.1.7)
stripe (5.43.0) stripe (5.43.0)
stripe-ruby-mock (3.1.0.rc3) stripe-ruby-mock (3.1.0.rc3)
dante (>= 0.2.0) dante (>= 0.2.0)
@ -633,12 +623,11 @@ GEM
stripe (> 5, < 6) stripe (> 5, < 6)
sysexits (1.2.0) sysexits (1.2.0)
temple (0.10.4) temple (0.10.4)
thor (1.5.0) thor (1.4.0)
tilt (2.6.1) tilt (2.0.10)
timecop (0.9.4) timecop (0.9.4)
timeout (0.6.1) timeout (0.4.3)
transitions (1.2.1) transitions (1.2.1)
tsort (0.2.0)
ttfunk (1.8.0) ttfunk (1.8.0)
bigdecimal (~> 3.1) bigdecimal (~> 3.1)
turbolinks (5.2.1) turbolinks (5.2.1)
@ -648,14 +637,14 @@ GEM
concurrent-ruby (~> 1.0) concurrent-ruby (~> 1.0)
uglifier (4.2.0) uglifier (4.2.0)
execjs (>= 0.3.0, < 3) execjs (>= 0.3.0, < 3)
unicode-display_width (3.2.0) unicode-display_width (3.1.4)
unicode-emoji (~> 4.1) unicode-emoji (~> 4.0, >= 4.0.4)
unicode-emoji (4.2.0) unicode-emoji (4.0.4)
unobtrusive_flash (3.3.1) unobtrusive_flash (3.3.1)
railties railties
uri (1.1.1) uri (1.0.3)
useragent (0.16.11) useragent (0.16.11)
version_gem (1.1.14) version_gem (1.1.8)
warden (1.2.9) warden (1.2.9)
rack (>= 2.0.9) rack (>= 2.0.9)
web-console (4.1.0) web-console (4.1.0)
@ -672,7 +661,7 @@ GEM
crack (>= 0.3.2) crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0) hashdiff (>= 0.4.0, < 2.0.0)
websocket (1.2.11) websocket (1.2.11)
websocket-driver (0.8.2) websocket-driver (0.8.0)
base64 base64
websocket-extensions (>= 0.1.0) websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5) websocket-extensions (0.1.5)
@ -680,7 +669,7 @@ GEM
chronic (>= 0.6.3) chronic (>= 0.6.3)
xpath (3.2.0) xpath (3.2.0)
nokogiri (~> 1.8) nokogiri (~> 1.8)
zeitwerk (2.7.5) zeitwerk (2.7.3)
PLATFORMS PLATFORMS
ruby ruby
@ -704,7 +693,6 @@ DEPENDENCIES
climate_control climate_control
cloudinary cloudinary
cocoon cocoon
connection_pool (< 3)
countable-rails countable-rails
daemons daemons
dalli dalli
@ -787,7 +775,7 @@ DEPENDENCIES
whenever whenever
RUBY VERSION RUBY VERSION
ruby 3.4.10 ruby 3.4.5
BUNDLED WITH BUNDLED WITH
2.6.9 2.6.9

View file

@ -1 +0,0 @@
Gemfile

1
Gemfile.next Symbolic link
View file

@ -0,0 +1 @@
Gemfile

View file

@ -26,22 +26,21 @@ You can find the latest OSEM releases on our [release page](https://github.com/o
## Deploy to the cloud ## Deploy to the cloud
The easiest way to deploy OSEM is to use one of the many platform as a service (PaaS) providers that support Ruby on Rails. The easiest way to deploy OSEM is to use one of the many platform as a service providers that support ruby on rails. We have prepared OSEM to be used with [heroku](https://heroku.com). So if you have an account there, you can deploy OSEM by pressing this button:
There are too many to list, here are a few we have seen OSEM deployed to:
- https://heroku.com <a href="https://heroku.com/deploy?template=https://github.com/openSUSE/osem/tree/v1.0">
- https://render.com <img src="https://www.herokucdn.com/deploy/button.svg" alt="Deploy">
- https://fly.io </a>
## Deploy to your own server ## Deploy to your own server
We recommend to run OSEM in production with [mod\_passenger](https://www.phusionpassenger.com/download/#open_source) We recommend to run OSEM in production with [mod\_passenger](https://www.phusionpassenger.com/download/#open_source)
and the [apache web-server](https://www.apache.org/). There are tons of guides on how to deploy rails apps on various and the [apache web-server](https://www.apache.org/). There are tons of guides on how to deploy rails apps on various
base operating systems, [check DuckDuckGo](https://duckduckgo.com/?t=h_&q=ruby+on+rails+apache+passenger). Of course there are also other options for the application server and reverse proxy, pick your poison. base operating systems. [Check Google](https://encrypted.google.com/search?hl=en&q=ruby%20on%20rails%20apache%20passenger). Of course there are also other options for the application server and reverse proxy, pick your poison.
## Deploy via docker/docker-compose ## Deploy via docker/docker-compose
There is a rudimentary docker-compose configuration for production usage (`docker-compose.yml.production-example`). It brings OSEM up on port 80. It uses persistent storage volumes for all the data your users might create. You can start it with There is a rudimentary docker-compose configuration for production usage (`docker-compose.yml.production-example`). It brings [OSEM up](http://0.0.0.0:8080) on port 8080. It uses persistent storage volumes for all the data users might create. You can start it with
1. Configure OSEM (at least `SECRET_KEY_BASE`) 1. Configure OSEM (at least `SECRET_KEY_BASE`)
``` ```
@ -54,13 +53,12 @@ There is a rudimentary docker-compose configuration for production usage (`docke
``` ```
1. Setup the database (only once) 1. Setup the database (only once)
``` ```
docker-compose -f docker-compose.yml.production-example run --rm osem bundle exec rake db:setup docker-compose -f docker-compose.yml.production-example run --rm production_web bundle exec rake db:bootstrap
``` ```
1. Start the services 1. Start the services
``` ```
docker-compose -f docker-compose.yml.production-example up docker-compose -f docker-compose.yml.production-example up
``` ```
1. Visit http://0.0.0.0
## Configuration ## Configuration
OSEM is configured through environment variables and falls back to sensible defaults. See the [dotenv.example](https://github.com/openSUSE/osem/blob/master/dotenv.example) for all possible configuration options. However here is a list of things you most likely want to configure because otherwise things will not work as expected. OSEM is configured through environment variables and falls back to sensible defaults. See the [dotenv.example](https://github.com/openSUSE/osem/blob/master/dotenv.example) for all possible configuration options. However here is a list of things you most likely want to configure because otherwise things will not work as expected.

View file

@ -8,10 +8,6 @@
An event management tool tailored to Free and Open Source Software conferences. An event management tool tailored to Free and Open Source Software conferences.
## Trial
Check out our demo at https://osem.copyleft.dev
## Installation ## Installation
Please refer to our [installation guide](INSTALL.md). Please refer to our [installation guide](INSTALL.md).
@ -19,7 +15,4 @@ Please refer to our [installation guide](INSTALL.md).
Please refer to our [contributing guide](CONTRIBUTING.md). Please refer to our [contributing guide](CONTRIBUTING.md).
## Contact ## Contact
GitHub issues are the primary way for communicating about specific proposed changes to this project. If you have other questions feel free chat us up in the #osem channel on [libera.chat IRC](https://libera.chat). GitHub issues are the primary way for communicating about specific proposed changes to this project. If you have other questions feel free to subscribe to the [opensuse-web@opensuse.org](http://lists.opensuse.org/opensuse-web/) mailinglist, all OSEM contributors are on that list! Additionally you can use #osem channel on [libera.chat IRC](https://libera.chat).
https://web.libera.chat/#osem

37
app.json Normal file
View file

@ -0,0 +1,37 @@
{
"name": "osem",
"description": "Open Source Event Manager",
"repository": "https://github.com/openSUSE/osem",
"env": {
"CLOUDINARY_URL": {
"description": "Create a https://cloudinary.com account and set the cloud url here. It starts with cloudinary://",
"required": false
},
"SECRET_KEY_BASE": {
"description": "A key to verify sessions. At least 40 characters. For instance: https://www.randomlists.com/string?base=16&length=64&qty=1",
"generator": "secret"
},
"NOKOGIRI_USE_SYSTEM_LIBRARIES": "1",
"RAILS_ENV": "production",
"RACK_ENV": "production"
},
"scripts": {
"postdeploy": "bundle exec rake db:schema:load db:seed"
},
"formation": {
"web": {
"quantity": 1
},
"worker": {
"quantity": 1
}
},
"addons": [
{
"plan": "heroku-postgresql"
},
{
"plan": "sendgrid"
}
]
}

View file

@ -1,4 +1,4 @@
$navbar-default-bg: #005cb3; $navbar-default-bg: #299a0b;
$navbar-default-link-active-bg: #DFE0DF; $navbar-default-link-active-bg: #DFE0DF;
$navbar-default-border: 1px solid #d4d4d4; $navbar-default-border: 1px solid #d4d4d4;
$navbar-default-color: #ffffff; $navbar-default-color: #ffffff;

View file

@ -130,7 +130,8 @@ module Admin
end end
def booth_params def booth_params
params.require(:booth).permit(:title, :description, :reasoning, :picture, :website_url, :submitter_relationship, responsible_ids: []) params.require(:booth).permit(:title, :description, :reasoning, :state, :picture, :conference_id,
:created_at, :updated_at, :submitter_relationship, :website_url, responsible_ids: [])
end end
end end
end end

View file

@ -51,7 +51,7 @@ module Admin
private private
def difficulty_level_params def difficulty_level_params
params.require(:difficulty_level).permit(:title, :description, :color) params.require(:difficulty_level).permit(:title, :description, :color, :conference_id)
end end
end end
end end

View file

@ -49,7 +49,7 @@ module Admin
private private
def event_type_params def event_type_params
params.require(:event_type).permit(:title, :length, :minimum_abstract_length, :maximum_abstract_length, :color, :description) params.require(:event_type).permit(:title, :length, :minimum_abstract_length, :maximum_abstract_length, :color, :conference_id, :description)
end end
end end
end end

View file

@ -178,7 +178,7 @@ module Admin
end end
def comment_params def comment_params
params.require(:comment).permit(:body) params.require(:comment).permit(:commentable, :body, :user_id)
end end
def update_state(transition, notice, mail = false, subject = false, send_mail = false) def update_state(transition, notice, mail = false, subject = false, send_mail = false)

View file

@ -49,7 +49,7 @@ module Admin
private private
def lodging_params def lodging_params
params.require(:lodging).permit(:name, :description, :picture, :picture_cache, :website_link) params.require(:lodging).permit(:name, :description, :picture, :picture_cache, :website_link, :conference_id)
end end
end end
end end

View file

@ -11,7 +11,7 @@ module Admin
def update def update
authorize! :update, @conference.program authorize! :update, @conference.program
@program = @conference.program
params['program']['languages'] = params['program']['languages'].join(',') if params['program']['languages'].present? params['program']['languages'] = params['program']['languages'].join(',') if params['program']['languages'].present?
@program.assign_attributes(program_params) @program.assign_attributes(program_params)
send_mail_on_schedule_public = @program.notify_on_schedule_public? send_mail_on_schedule_public = @program.notify_on_schedule_public?

View file

@ -97,7 +97,7 @@ module Admin
private private
def question_params def question_params
params.require(:question).permit(:title, :global, :answer_ids, :question_type_id, answers_attributes: [:id, :title]) params.require(:question).permit(:title, :global, :answer_ids, :question_type_id, :conference_id, answers_attributes: [:id, :title])
end end
def conference_params def conference_params

View file

@ -82,7 +82,8 @@ module Admin
def registration_params def registration_params
params.require(:registration).permit( params.require(:registration).permit(
:attended, :volunteer, :other_special_needs, :accepted_code_of_conduct, :user_id, :conference_id, :attended,
:volunteer, :other_special_needs, :accepted_code_of_conduct,
vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: [] vchoice_ids: [], qanswer_ids: [], qanswers_attributes: [], event_ids: []
) )
end end

View file

@ -48,7 +48,7 @@ module Admin
private private
def resource_params def resource_params
params.require(:resource).permit(:name, :description, :quantity, :used) params.require(:resource).permit(:name, :description, :quantity, :used, :conference_id)
end end
end end
end end

View file

@ -94,7 +94,7 @@ module Admin
elsif user.add_role @role.name, role_resource elsif user.add_role @role.name, role_resource
flash[:notice] = "Successfully added role #{@role.name} to user #{user.email}" flash[:notice] = "Successfully added role #{@role.name} to user #{user.email}"
else else
flash[:error] = "Could not add role #{@role.name} to #{user.email}" flash[:error] = "Coud not add role #{@role.name} to #{user.email}"
end end
respond_to do |format| respond_to do |format|

View file

@ -52,14 +52,14 @@ module Admin
private private
def sponsor_params def sponsor_params
params.require(:sponsor).permit(:name, :description, :website_url, :picture, :picture_cache, :sponsorship_level_id) params.require(:sponsor).permit(:name, :description, :website_url, :picture, :picture_cache, :sponsorship_level_id, :conference_id)
end end
def sponsorship_level_required def sponsorship_level_required
return unless @conference.sponsorship_levels.empty? return unless @conference.sponsorship_levels.empty?
redirect_to admin_conference_sponsorship_levels_path(conference_id: @conference.short_title), redirect_to admin_conference_sponsorship_levels_path(conference_id: @conference.short_title),
alert: 'You need to create at least one sponsorship level to add a sponsor' alert: 'You need to create atleast one sponsorship level to add a sponsor'
end end
end end
end end

View file

@ -61,7 +61,7 @@ module Admin
private private
def sponsorship_level_params def sponsorship_level_params
params.require(:sponsorship_level).permit(:title) params.require(:sponsorship_level).permit(:title, :conference_id)
end end
end end
end end

View file

@ -52,7 +52,7 @@ module Admin
private private
def ticket_params def ticket_params
params.require(:ticket).permit(:title, :url, :description, :price_cents, :price_currency, :price, :registration_ticket) params.require(:ticket).permit(:conference, :title, :url, :description, :conference_id, :price_cents, :price_currency, :price, :registration_ticket)
end end
end end
end end

View file

@ -46,7 +46,7 @@ module Admin
private private
def venue_params def venue_params
params.require(:venue).permit(:name, :street, :postalcode, :city, :country, :longitude, :latitude, :description, :website, :picture, :picture_cache, :lodgings_attributes) params.require(:venue).permit(:name, :street, :postalcode, :city, :country, :longitude, :latitude, :description, :website, :picture, :picture_cache, :lodgings_attributes, :conference_id)
end end
end end
end end

View file

@ -45,7 +45,7 @@ module Admin
end end
elsif @version.event == 'create' && @version.item elsif @version.event == 'create' && @version.item
# if @version represents a create event and is not currently deleted # if @version represets a create event and is not currently deleted
@version.item.destroy @version.item.destroy
flash[:notice] = 'The selected change was successfully reverted' flash[:notice] = 'The selected change was successfully reverted'

View file

@ -94,6 +94,7 @@ class BoothsController < ApplicationController
private private
def booth_params def booth_params
params.require(:booth).permit(:title, :description, :reasoning, :picture, :website_url, :submitter_relationship, responsible_ids: []) params.require(:booth).permit(:title, :description, :reasoning, :state, :picture, :conference_id,
:created_at, :updated_at, :submitter_relationship, :website_url, responsible_ids: [])
end end
end end

View file

@ -110,6 +110,7 @@ class ConferenceRegistrationsController < ApplicationController
def registration_params def registration_params
params.require(:registration) params.require(:registration)
.permit( .permit(
:conference_id,
:volunteer, :accepted_code_of_conduct, :volunteer, :accepted_code_of_conduct,
vchoice_ids: [], qanswer_ids: [], vchoice_ids: [], qanswer_ids: [],
qanswers_attributes: [], qanswers_attributes: [],

View file

@ -39,7 +39,7 @@ class SchedulesController < ApplicationController
@current_day = @conference.current_conference_day @current_day = @conference.current_conference_day
@day = @current_day.present? ? @current_day : @dates.first @day = @current_day.present? ? @current_day : @dates.first
if @current_day if @current_day
# the schedule takes you to the current time if it is between the start and the end time. # the schedule takes you to the current time if it is beetween the start and the end time.
@hour_column = @conference.hours_from_start_time(@conf_start, @conference.end_hour) @hour_column = @conference.hours_from_start_time(@conf_start, @conference.end_hour)
end end
# Ids of the @event_schedules of confrmed self_organized tracks along with the selected_schedule_id # Ids of the @event_schedules of confrmed self_organized tracks along with the selected_schedule_id

View file

@ -31,4 +31,10 @@ class TicketPurchasesController < ApplicationController
def index def index
@unpaid_ticket_purchases = current_user.ticket_purchases.by_conference(@conference).unpaid @unpaid_ticket_purchases = current_user.ticket_purchases.by_conference(@conference).unpaid
end end
private
def ticket_purchase_params
params.require(:ticket_purchase).permit(:ticket_id, :user_id, :conference_id, :quantity)
end
end end

View file

@ -45,7 +45,7 @@ module ConferenceHelper
location += "#{v.country_name}, " if v.country_name location += "#{v.country_name}, " if v.country_name
e.location = location e.location = location
end end
e.categories = conference.title, "Audience: #{proposal.difficulty_level.title}", "Track: #{proposal.track.name}" e.categories = conference.title, "Difficulty: #{proposal.difficulty_level.title}", "Track: #{proposal.track.name}"
end end
end end
calendar calendar

View file

@ -17,7 +17,7 @@ module DateTimeHelper
## ##
# Gets a datetime object # Gets a datetime object
# ====Returns # ====Returns
# * +String+ -> formatted datetime object # * +String+ -> formated datetime object
def format_datetime(obj) def format_datetime(obj)
return unless obj return unless obj

View file

@ -21,7 +21,6 @@ class Ability
can [:show], Conference do |conference| can [:show], Conference do |conference|
conference.splashpage&.public == true conference.splashpage&.public == true
end end
can :code_of_conduct, Conference
# Can view the schedule # Can view the schedule
can [:schedule, :events], Conference do |conference| can [:schedule, :events], Conference do |conference|
conference.program.cfp && conference.program.schedule_public conference.program.cfp && conference.program.schedule_public
@ -152,8 +151,6 @@ class Ability
can :manage, Registration, conference_id: conf_ids_for_organizer can :manage, Registration, conference_id: conf_ids_for_organizer
# To access conference/proposals # To access conference/proposals
can :manage, Event, program: { conference_id: conf_ids_for_organizer } can :manage, Event, program: { conference_id: conf_ids_for_organizer }
can :manage, Commercial, commercialable_type: 'Event',
commercialable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_organizer).pluck(:id)).pluck(:id)
# To access comment link in menu bar # To access comment link in menu bar
can :index, Comment, commentable_type: 'Event', can :index, Comment, commentable_type: 'Event',
commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_organizer).pluck(:id)).pluck(:id) commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_organizer).pluck(:id)).pluck(:id)
@ -165,8 +162,6 @@ class Ability
commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_cfp).pluck(:id)).pluck(:id) commentable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_cfp).pluck(:id)).pluck(:id)
# To access conference/proposals # To access conference/proposals
can :manage, Event, program: { conference_id: conf_ids_for_cfp } can :manage, Event, program: { conference_id: conf_ids_for_cfp }
can :manage, Commercial, commercialable_type: 'Event',
commercialable_id: Event.where(program_id: Program.where(conference_id: conf_ids_for_cfp).pluck(:id)).pluck(:id)
end end
if conf_ids_for_info_desk if conf_ids_for_info_desk

View file

@ -422,7 +422,7 @@ class Conference < ApplicationRecord
## ##
# Returns a hash with affiliation => # Returns a hash with affiliation =>
# {value: count of registration whose user has that affiliation, color: color} # {value: count of registration whose user has that affilation, color: color}
# In case that the affiliation is blank, it groups them in None and # In case that the affiliation is blank, it groups them in None and
# if the number of persons that have an affiliation are less than the 2% of # if the number of persons that have an affiliation are less than the 2% of
# the total number of registered people, they are grouped in others. # the total number of registered people, they are grouped in others.
@ -696,7 +696,7 @@ class Conference < ApplicationRecord
end end
# Returns the number of hours since the conference start hour (9) to the # Returns the number of hours since the conference start hour (9) to the
# current hour, in case that the current hour is between the start and the # current hour, in case that the current hour is beetween the start and the
# end hour (20). Otherwise, returns 0 # end hour (20). Otherwise, returns 0
def hours_from_start_time(start_hour, end_hour) def hours_from_start_time(start_hour, end_hour)
current_time = Time.find_zone(timezone).now current_time = Time.find_zone(timezone).now
@ -744,7 +744,7 @@ class Conference < ApplicationRecord
'#' + next_color_component(:r, i) + next_color_component(:g, i) + next_color_component(:b, i) '#' + next_color_component(:r, i) + next_color_component(:g, i) + next_color_component(:b, i)
end end
# Auxiliary function which is used in next_color and returns each component of # Auxiliar function which is used in next_color and returns each component of
# the color. We make use of big prime numbers to avoid repetition and to make # the color. We make use of big prime numbers to avoid repetition and to make
# consecutive colors clearly different. # consecutive colors clearly different.
def next_color_component(component, i) def next_color_component(component, i)
@ -787,7 +787,7 @@ class Conference < ApplicationRecord
## ##
# Checks if start hour of the conference is greater or equal than the end hour # Checks if start hour of the conference is greater or equal than the end hour
# and that both hours are between 0 and 24 # and that both hours are beetween 0 and 24
# #
# Reports an error when such a condition is found # Reports an error when such a condition is found
def valid_times_range? def valid_times_range?
@ -922,7 +922,7 @@ class Conference < ApplicationRecord
# #
# ====Returns # ====Returns
# * +True+ -> One difficulty level or more # * +True+ -> One difficulty level or more
# * +False+ -> No difficulty level # * +False+ -> No diffculty level
def difficulty_levels_set? def difficulty_levels_set?
program.difficulty_levels.any? program.difficulty_levels.any?
end end
@ -932,7 +932,7 @@ class Conference < ApplicationRecord
# #
# ====Returns # ====Returns
# * +True+ -> One difficulty level or more # * +True+ -> One difficulty level or more
# * +False+ -> No difficulty level # * +False+ -> No diffculty level
def event_types_set? def event_types_set?
program.event_types.any? program.event_types.any?
end end

View file

@ -94,7 +94,7 @@ class Event < ApplicationRecord
}.freeze }.freeze
## ##
# Checks if the event has a start_time and a room for the selected schedule if there is any # Checkes if the event has a start_time and a room for the selected schedule if there is any
# ====Returns # ====Returns
# * +true+ or +false+ # * +true+ or +false+
def scheduled? def scheduled?

View file

@ -133,7 +133,7 @@ class Program < ApplicationRecord
end end
## ##
# Checks if the program has rating enabled # Checcks if the program has rating enabled
# #
# ====Returns # ====Returns
# * +false+ -> If rating is not enabled # * +false+ -> If rating is not enabled

View file

@ -13,7 +13,7 @@ class Ticket < ApplicationRecord
scope :for_registration, -> { where(registration_ticket: true) } scope :for_registration, -> { where(registration_ticket: true) }
# This validation is for the sake of simplicity. # This validation is for the sake of simplicity.
# If we would allow different currencies per conference we also have to handle conversions between currencies! # If we would allow different currencies per conference we also have to handle convertions between currencies!
validate :tickets_of_conference_have_same_currency validate :tickets_of_conference_have_same_currency
validates :price_cents, :price_currency, :title, presence: true validates :price_cents, :price_currency, :title, presence: true

View file

@ -111,7 +111,7 @@ class User < ApplicationRecord
}.freeze }.freeze
## ##
# Checks if the user attended the event # Checkes if the user attended the event
# This is used for events that require registration # This is used for events that require registration
# The user must have registered to attend the event # The user must have registered to attend the event
# Gets an event # Gets an event

View file

@ -2,7 +2,7 @@
.col-md-12 .col-md-12
.page-header .page-header
%h1 %h1
Edit Audience Edit Difficulty Level
= @difficulty_level.title = @difficulty_level.title
.row .row
.col-md-8 .col-md-8

View file

@ -1,7 +1,7 @@
.row .row
.col-md-12 .col-md-12
.page-header .page-header
%h1 Audiences %h1 Difficulty Levels
%p.text-muted %p.text-muted
Classify your conference.program.events by difficulty Classify your conference.program.events by difficulty
.row .row
@ -32,4 +32,4 @@
data: { confirm: "Do you really want to delete #{difficulty_level.title}? Attention: This difficulty level will be removed from all Events that have it set" } data: { confirm: "Do you really want to delete #{difficulty_level.title}? Attention: This difficulty level will be removed from all Events that have it set" }
.row .row
.col-md-12.text-right .col-md-12.text-right
= link_to 'Add Audience', new_admin_conference_program_difficulty_level_path(@conference.short_title), class: 'btn btn-primary' = link_to 'Add Difficulty Level', new_admin_conference_program_difficulty_level_path(@conference.short_title), class: 'btn btn-primary'

View file

@ -2,7 +2,7 @@
.col-md-12 .col-md-12
.page-header .page-header
%h1 %h1
Create Audience Create Difficulty Level
.row .row
.col-md-8 .col-md-8
= render partial: 'form' = render partial: 'form'

View file

@ -82,7 +82,7 @@
%th %th
%b Track %b Track
%th %th
%b Audience %b Difficulty
%th %th
%b State %b State
%th %th

View file

@ -92,7 +92,7 @@
%td{ 'class' => class_for_todo(progress_status['track']) } %td{ 'class' => class_for_todo(progress_status['track']) }
%span{ 'class' => [icon_for_todo(progress_status['track']), 'fa-lg'] } %span{ 'class' => [icon_for_todo(progress_status['track']), 'fa-lg'] }
%tr %tr
%td= link_to 'Add an Audience level', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event) %td= link_to 'Add a difficulty level', edit_admin_conference_program_event_path(@event.program.conference.short_title, @event)
%td{ 'class' => class_for_todo(progress_status['difficulty_level']) } %td{ 'class' => class_for_todo(progress_status['difficulty_level']) }
%span{ 'class' => [icon_for_todo(progress_status['difficulty_level']), 'fa-lg'] } %span{ 'class' => [icon_for_todo(progress_status['difficulty_level']), 'fa-lg'] }
#proposal-commercials.tab-pane #proposal-commercials.tab-pane

View file

@ -28,7 +28,7 @@
%dd %dd
= tracks(@conference) = tracks(@conference)
%dt %dt
Audiences: Difficulty Levels:
%dd %dd
= difficulty_levels(@conference) = difficulty_levels(@conference)
%dt %dt

View file

@ -1,5 +1,5 @@
%p %p
Setup the time frame in which people can register to your conference Setup the time frame in which people can registrer to your conference
= form_for(@registration_period, url: admin_conference_registration_period_path(@conference.short_title)) do |f| = form_for(@registration_period, url: admin_conference_registration_period_path(@conference.short_title)) do |f|
.form-group .form-group
= f.label :start_date = f.label :start_date

View file

@ -3,7 +3,7 @@
wb = xlsx_package.workbook wb = xlsx_package.workbook
wb.add_worksheet(name: 'registrations') do |sheet| wb.add_worksheet(name: 'registrations') do |sheet|
bold_style = wb.styles.add_style(b: true) bold_style = wb.styles.add_style(b: true)
row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email', 'Ticket Token'] row = ['Attended', 'Name', 'Nickname', 'Affilιation', 'Email']
@conference.questions.each do |question| @conference.questions.each do |question|
row << question.title row << question.title
@ -18,7 +18,6 @@ wb.add_worksheet(name: 'registrations') do |sheet|
row << registration.nickname row << registration.nickname
row << registration.affiliation row << registration.affiliation
row << registration.email row << registration.email
row << registration.user.physical_tickets.by_conference(@conference).first&.token
@conference.questions.each do |question| @conference.questions.each do |question|
qa = registration.qanswers.find_by(question: question) qa = registration.qanswers.find_by(question: question)
answer = ( qa ? qa.answer.title : '' ) answer = ( qa ? qa.answer.title : '' )

View file

@ -17,7 +17,7 @@
url = update_selected_schedule_admin_conference_program_track_path(@conference.short_title, @schedule.track) + '?[track][selected_schedule_id]=' url = update_selected_schedule_admin_conference_program_track_path(@conference.short_title, @schedule.track) + '?[track][selected_schedule_id]='
else else
value = @schedule.id == @selected_schedule.try(:id) value = @schedule.id == @selected_schedule.try(:id)
url = admin_conference_program_path(@conference.short_title) + '?program[selected_schedule_id]=' url = admin_conference_program_path(@conference.short_title) + '?[program][selected_schedule_id]='
end end
= check_box_tag @conference.short_title, @schedule.id, value, url: url, = check_box_tag @conference.short_title, @schedule.id, value, url: url,
class: 'switch-checkbox-schedule' class: 'switch-checkbox-schedule'

View file

@ -2,7 +2,7 @@
.col-md-12 .col-md-12
.page-header .page-header
%h1 %h1
Edit Track Edit Tack
= @track.name = @track.name
.row .row
.col-md-12 .col-md-12

View file

@ -33,7 +33,7 @@
= f.file_field :picture = f.file_field :picture
= f.hidden_field :picture_cache = f.hidden_field :picture_cache
%span.help-block %span.help-block
This will be displayed on the venue area of the splash page. This will be displayed on the venue are of the splash page.
.form-group .form-group
= f.label :street = f.label :street
%abbr{title: 'This field is required'} * %abbr{title: 'This field is required'} *

View file

@ -18,7 +18,7 @@
%abbr{title: 'This field is required'} * %abbr{title: 'This field is required'} *
= f.text_field :submitter_relationship, rows: 5, required: true, class: 'form-control' = f.text_field :submitter_relationship, rows: 5, required: true, class: 'form-control'
%span.help-block %span.help-block
e.g. employee, community manager, etc e.g. employee, comunity manager, etc
.form-group .form-group
= f.label :website_url, 'Website URL' = f.label :website_url, 'Website URL'
%abbr{title: 'This field is required'} * %abbr{title: 'This field is required'} *

View file

@ -80,7 +80,7 @@
= link_to 'Event Types', admin_conference_program_event_types_path(@conference.short_title) = link_to 'Event Types', admin_conference_program_event_types_path(@conference.short_title)
- if can? :update, @conference.program.difficulty_levels.build, conference_id: @conference.id - if can? :update, @conference.program.difficulty_levels.build, conference_id: @conference.id
%li{class: active_nav_li(admin_conference_program_difficulty_levels_path(@conference.short_title))} %li{class: active_nav_li(admin_conference_program_difficulty_levels_path(@conference.short_title))}
= link_to 'Audience', admin_conference_program_difficulty_levels_path(@conference.short_title) = link_to 'Difficulty Levels', admin_conference_program_difficulty_levels_path(@conference.short_title)
- if can? :update, @conference.program.schedules.build - if can? :update, @conference.program.schedules.build
%li{class: active_nav_li(admin_conference_schedules_path(@conference.short_title))} %li{class: active_nav_li(admin_conference_schedules_path(@conference.short_title))}
= link_to 'Schedules', admin_conference_schedules_path(@conference.short_title) = link_to 'Schedules', admin_conference_schedules_path(@conference.short_title)

View file

@ -37,7 +37,7 @@
= f.select :language, @program.languages_list, { include_blank: false}, { class: 'select-help-toggle form-control' } = f.select :language, @program.languages_list, { include_blank: false}, { class: 'select-help-toggle form-control' }
- if display_details - if display_details
- if @conference.program.difficulty_levels.any? - if @conference.program.difficulty_levels.any?
= f.label :difficulty_level, 'Audience' = f.label :difficulty_level
= f.select :difficulty_level_id, @conference.program.difficulty_levels.map{|level| [level.title, level.id ] }, {include_blank: false}, { class: 'select-help-toggle form-control' } = f.select :difficulty_level_id, @conference.program.difficulty_levels.map{|level| [level.title, level.id ] }, {include_blank: false}, { class: 'select-help-toggle form-control' }
= render 'shared/select_help_text', f: f, for: :difficulty_level_id, options: @conference.program.difficulty_levels do |difficulty_level| = render 'shared/select_help_text', f: f, for: :difficulty_level_id, options: @conference.program.difficulty_levels do |difficulty_level|
= difficulty_level.description = difficulty_level.description

View file

@ -27,4 +27,4 @@
= link_to 'Add a track', edit_conference_program_proposal_path(event.program.conference.short_title, event) = link_to 'Add a track', edit_conference_program_proposal_path(event.program.conference.short_title, event)
%li{'class'=>class_for_todo(progress_status['difficulty_level'])} %li{'class'=>class_for_todo(progress_status['difficulty_level'])}
%span{'class'=>icon_for_todo(progress_status['difficulty_level'])} %span{'class'=>icon_for_todo(progress_status['difficulty_level'])}
= link_to 'Add an Audience', edit_conference_program_proposal_path(event.program.conference.short_title, event) = link_to 'Add a difficulty level', edit_conference_program_proposal_path(event.program.conference.short_title, event)

View file

@ -73,7 +73,7 @@
%dl#proposal-info %dl#proposal-info
.col-md-12 .col-md-12
%dt Date: %dt Date:
%dd= @event_schedule.start_time.strftime("%Y %B %e - %-I:%M %p") if @event_schedule %dd= @event_schedule.start_time.strftime("%Y %B %e - %H:%M") if @event_schedule
.col-md-12 .col-md-12
%dt Duration: %dt Duration:
%dd= show_time(@event.event_type.length) %dd= show_time(@event.event_type.length)
@ -95,7 +95,7 @@
%span.label{style: "background-color: #{@event.track.color}; color: #{ contrast_color(@event.track.color) }"} %span.label{style: "background-color: #{@event.track.color}; color: #{ contrast_color(@event.track.color) }"}
= @event.track.name = @event.track.name
.col-md-12 .col-md-12
%dt Audience: %dt Difficulty:
%dd %dd
- if @event.difficulty_level - if @event.difficulty_level
%span.label{style: "background-color: #{@event.difficulty_level.color}; color: #{ contrast_color(@event.difficulty_level.color) };"} %span.label{style: "background-color: #{@event.difficulty_level.color}; color: #{ contrast_color(@event.difficulty_level.color) };"}
@ -118,7 +118,7 @@
%dl %dl
%dt Start Time: %dt Start Time:
%dd %dd
= event.program.selected_event_schedules.find { |es| es.event == event }.start_time.strftime("%Y %B %e %-I:%M %p") = event.program.selected_event_schedules.find { |es| es.event == event }.start_time.strftime("%Y %B %e %H:%M")
%br %br
%dt Room: %dt Room:
%dd %dd

View file

@ -17,7 +17,9 @@
- interval_count.times do - interval_count.times do
%th.date %th.date
%span %span
= (td_start_time).strftime("%-I:%M %p") = (td_start_time).strftime("%H:")
%span
= (td_start_time).strftime("%M")
- td_start_time += @step_minutes - td_start_time += @step_minutes
- start_room_time = start_time - start_room_time = start_time
- @rooms.each do |room| - @rooms.each do |room|

View file

@ -24,9 +24,9 @@
%span.track %span.track
%span.fa-solid.fa-clock %span.fa-solid.fa-clock
%span.label{ style: "background-color: grey" } %span.label{ style: "background-color: grey" }
= event_schedule.start_time.strftime('%-I:%M %p') = event_schedule.start_time.strftime('%H:%M')
\- \-
= event_schedule.end_time.strftime('%-I:%M %p') = event_schedule.end_time.strftime('%H:%M')
%span.track %span.track
%span.fa-solid.fa-location-dot %span.fa-solid.fa-location-dot
%span.label{ style: "background-color: grey" } %span.label{ style: "background-color: grey" }

View file

@ -42,7 +42,7 @@
} }
}); });
// hide the right and left controls when necessary after moving the carousel // hide the right and left controls when neccesary after moving the carousel
$('.carousel').on('slid.bs.carousel', '', $('.carousel').on('slid.bs.carousel', '',
function(){ function(){
$(this).children('.left.carousel-control').show(); $(this).children('.left.carousel-control').show();

View file

@ -21,6 +21,7 @@
/ scheduled events / scheduled events
- date = nil - date = nil
- time = nil
- @events_schedules.each do |event_schedule| - @events_schedules.each do |event_schedule|
- unless event_schedule.start_time.strftime('%Y-%m-%d').eql?(date) - unless event_schedule.start_time.strftime('%Y-%m-%d').eql?(date)
.col-xs-12.col-md-12 .col-xs-12.col-md-12
@ -29,12 +30,16 @@
= date = event_schedule.start_time.strftime('%Y-%m-%d') = date = event_schedule.start_time.strftime('%Y-%m-%d')
%a{ title: "Go up", class: "pull-right", href: "#program" } %a{ title: "Go up", class: "pull-right", href: "#program" }
%i{ class: "fa-solid fa-angles-up fa-lg", 'aria-hidden' => true } %i{ class: "fa-solid fa-angles-up fa-lg", 'aria-hidden' => true }
- unless event_schedule.start_time.strftime('%H:%M').eql?(time)
.col-xs-12.col-md-1 .col-xs-12.col-md-1
.start-time .start-time
= event_schedule.start_time.strftime('%-I:%M %p') = time = event_schedule.start_time.strftime('%H:%M')
.col-xs-12.col-md-11 .col-xs-12.col-md-11
.new-time-event .new-time-event
= render partial: 'event', locals: { event: event_schedule.event, event_schedule: event_schedule } = render partial: 'event', locals: { event: event_schedule.event, event_schedule: event_schedule }
- else
.col-xs-12.col-md-11.col-md-offset-1
= render partial: 'event', locals: { event: event_schedule.event, event_schedule: event_schedule }
/ confirmed events that are not scheduled / confirmed events that are not scheduled
- if @unscheduled_events.any? - if @unscheduled_events.any?

View file

@ -43,7 +43,7 @@
}); });
}); });
// hide the right and left controls when necessary after moving the carousel // hide the right and left controls when neccesary after moving the carousel
$('.carousel').on('slid.bs.carousel', '', $('.carousel').on('slid.bs.carousel', '',
function(){ function(){
$(this).children('.left.carousel-control').show(); $(this).children('.left.carousel-control').show();

View file

@ -12,7 +12,7 @@
%th Updated Attribute %th Updated Attribute
%th{ class: "#{'hidden' if version.event == 'create'}" } %th{ class: "#{'hidden' if version.event == 'create'}" }
Previous Value Prevous Value
%th{ class: "#{'hidden' if version.event == 'destroy'}" } %th{ class: "#{'hidden' if version.event == 'destroy'}" }
New Value New Value

0
bin/bundle Normal file → Executable file
View file

0
bin/bundle_report Normal file → Executable file
View file

0
bin/delayed_job Normal file → Executable file
View file

0
bin/deprecations Normal file → Executable file
View file

0
bin/gem-next-diff Normal file → Executable file
View file

0
bin/next Normal file → Executable file
View file

0
bin/rails Normal file → Executable file
View file

0
bin/rake Normal file → Executable file
View file

0
bin/rspec Normal file → Executable file
View file

View file

@ -1,25 +1,24 @@
services: services:
postgres: production_database:
image: postgres:16-alpine image: postgres:12-alpine
environment: environment:
PGDATA: /var/lib/postgresql/data/pgdata PGDATA: /var/lib/postgresql/data/pgdata
POSTGRES_USER: osem
POSTGRES_PASSWORD: mysecretpassword POSTGRES_PASSWORD: mysecretpassword
volumes: volumes:
- osem_production_database:/var/lib/postgresql/data/pgdata - osem_production_database:/var/lib/postgresql/data/pgdata
osem: production_web:
build: build:
context: . context: .
dockerfile: Dockerfile.production dockerfile: Dockerfile.production
depends_on: depends_on:
- postgres - production_database
ports: ports:
- 80:5000 - 8080:3000
env_file: .env.production # see dotenv.example file env_file: .env.production # see dotenv.example file
environment: environment:
OSEM_DB_HOST: postgres OSEM_DB_HOST: production_database
OSEM_DB_USER: osem RAILS_SERVE_STATIC_FILES: 'true'
OSEM_DB_PASSWORD: mysecretpassword command: foreman start -p 3000
volumes: volumes:
- osem_production_web_data:/osem/public/system - osem_production_web_data:/osem/public/system
- osem_production_web_assets:/osem/public/assets - osem_production_web_assets:/osem/public/assets

View file

@ -12,7 +12,7 @@
# The name of the host the database runs on # The name of the host the database runs on
# OSEM_DB_HOST=database # OSEM_DB_HOST=database
# The port the database runs on # The port the databse runs on
# OSEM_DB_PORT=3306 # OSEM_DB_PORT=3306
# The user to access the database with # The user to access the database with

View file

@ -6,7 +6,7 @@ namespace :data do
task demo: :environment do task demo: :environment do
include FactoryBot::Syntax::Methods include FactoryBot::Syntax::Methods
conference = create(:full_conference, title: 'Open Source Event Manager Demo', short_title: 'osemdemo' ,description: "This is an [Open Source Event Manager](http://osem.io/) demo instance. You can log in as **admin** with the password **password123** or you [sign up](/accounts/sign_up) as a user. We hope you enjoy checking out all the functionality, if you have questions do not hesitate to contact us on [IRC](https://web.libera.chat/#osem) or file an issue on [GitHub](https://github.com/openSUSE/osem).\r\n\r\n## Data will be destroyed every thirty minutes! (next reset: #{29.minutes.after})") conference = create(:full_conference, title: 'Open Source Event Manager Demo', short_title: 'osemdemo' ,description: "This is a [Open Source Event Manager](http://osem.io/) demo instance. You can log in as **admin** with the password **password123** or just you just [sign up](/accounts/sign_up) with your own user. We hope you enjoy checking out all the functionality, if you have questions don't hesitate to [contact us](http://osem.io/#contact)!\r\n\r\n## Data will be destroyed every thirty minutes or whenever someone updates the [OSEM source code on github](https://github.com/openSUSE/osem/commits/master).")
conference.contact.update(email: 'osemdemo@osem.io', sponsor_email: 'osemdemo@osem.io') conference.contact.update(email: 'osemdemo@osem.io', sponsor_email: 'osemdemo@osem.io')
create(:admin, email: 'admin@osem.io', username: 'admin', password: 'password123', password_confirmation: 'password123') create(:admin, email: 'admin@osem.io', username: 'admin', password: 'password123', password_confirmation: 'password123')
end end

View file

@ -7,7 +7,7 @@ namespace :data do
task surveys: :environment do task surveys: :environment do
conference = create(:full_conference, start_date: Date.current, end_date: Date.current + 1.day) conference = create(:full_conference, start_date: Date.current, end_date: Date.current + 1.day)
survey_after_conference_active = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date - 1.day, end_date: conference.end_date + 5.days, description: 'Survey about the conference. You can already see it.') survey_after_conference_active = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date - 1.day, end_date: conference.end_date + 5.days, description: 'Survey about the conference. You can already see it.')
# survey_after_conference_inactive = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date + 1.day, end_date: conference.end_date + 5.days, description: 'Survey about the conference. Not available yet!') # survey_after_conference_inactive = create(:survey, surveyable: conference, target: :after_conference, title: 'Survey about the conference', start_date: conference.start_date + 1.day, end_date: conference.end_date + 5.days, description: 'Survey abou the conference. Not available yet!')
# survey_on_registration = create(:survey, surveyable: conference, target: :during_registration, title: 'Survey during registation', start_date: conference.registration_period.start_date, end_date: conference.registration_period.end_date, description: 'Survey during registration.') # survey_on_registration = create(:survey, surveyable: conference, target: :during_registration, title: 'Survey during registation', start_date: conference.registration_period.start_date, end_date: conference.registration_period.end_date, description: 'Survey during registration.')
create(:boolean_non_mandatory, survey: survey_after_conference_active) create(:boolean_non_mandatory, survey: survey_after_conference_active)

View file

@ -16,7 +16,7 @@ namespace :user do
end end
end end
desc "Set email_public attribute true for all users" desc "Set email_public attrubute true for all users"
task :set_email_public => :environment do task :set_email_public => :environment do
User.update_all email_public: true User.update_all email_public: true
end end

11
railway.json Normal file
View file

@ -0,0 +1,11 @@
{
"$schema": "https://railway.app/railway.schema.json",
"build": {
"builder": "nixpacks"
},
"deploy": {
"startCommand": "foreman start -p 3000",
"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 2
}
}

View file

@ -264,31 +264,5 @@ describe 'User' do
it{ should_not be_able_to(:edit, other_self_organized_track) } it{ should_not be_able_to(:edit, other_self_organized_track) }
it{ should_not be_able_to(:update, other_self_organized_track) } it{ should_not be_able_to(:update, other_self_organized_track) }
end end
context 'when user is organizer of conference' do
let(:conference) { create(:conference) }
let(:user) { create(:organizer, resource: conference) }
let(:event_in_conference) { create(:event, program: conference.program) }
let(:event_in_other_conference) { create(:event) }
let(:commercial_in_conference) { create(:commercial, commercialable: event_in_conference) }
let(:commercial_in_other_conference) { create(:commercial, commercialable: event_in_other_conference) }
it{ should be_able_to(:create, event_in_conference.commercials.new) }
it{ should be_able_to(:manage, commercial_in_conference) }
it{ should_not be_able_to(:manage, commercial_in_other_conference) }
end
context 'when user is on cfp team of conference' do
let(:conference) { create(:conference) }
let(:user) { create(:cfp_user, resource: conference) }
let(:event_in_conference) { create(:event, program: conference.program) }
let(:event_in_other_conference) { create(:event) }
let(:commercial_in_conference) { create(:commercial, commercialable: event_in_conference) }
let(:commercial_in_other_conference) { create(:commercial, commercialable: event_in_other_conference) }
it{ should be_able_to(:create, event_in_conference.commercials.new) }
it{ should be_able_to(:manage, commercial_in_conference) }
it{ should_not be_able_to(:manage, commercial_in_other_conference) }
end
end end
end end

View file

@ -4,7 +4,7 @@
FactoryBot.define do FactoryBot.define do
factory :comment do factory :comment do
body { 'Most interesting comment ever, created by a girl.' } body { 'Most interresting comment ever, created by a girl.' }
user user
association :commentable, factory: :event association :commentable, factory: :event
end end

0
spec/models/conference_spec.rb Normal file → Executable file
View file