Merge pull request #3414 from consul/upgrade_to_rails_5
Upgrade to rails 5
This commit is contained in:
16
Gemfile
16
Gemfile
@@ -1,6 +1,6 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
gem "rails", "4.2.11.1"
|
||||
gem "rails", "5.0.7.2"
|
||||
|
||||
gem "acts-as-taggable-on", "~> 5.0.0"
|
||||
gem "acts_as_votable", "~> 0.11.1"
|
||||
@@ -15,11 +15,13 @@ gem "coffee-rails", "~> 4.2.2"
|
||||
gem "daemons", "~> 1.2.4"
|
||||
gem "dalli", "~> 2.7.6"
|
||||
gem "delayed_job_active_record", "~> 4.1.3"
|
||||
gem "devise", "~> 3.5.7"
|
||||
gem "devise-async", "~> 0.10.2"
|
||||
gem "devise_security_extension", "~> 0.10.0"
|
||||
gem "devise", "~> 4.6.0"
|
||||
gem "devise-async", "~> 1.0.0"
|
||||
gem "devise_security_extension", git: "https://github.com/phatworx/devise_security_extension.git" #, "~> 0.10"
|
||||
gem "foundation-rails", "~> 6.4.3.0"
|
||||
gem "foundation_rails_helper", "~> 2.0.0"
|
||||
gem "globalize", "~> 5.2.0"
|
||||
gem "globalize-accessors", "~> 0.2.1"
|
||||
gem "graphiql-rails", "~> 1.4.1"
|
||||
gem "graphql", "~> 1.7.8"
|
||||
gem "groupdate", "~> 3.2.0"
|
||||
@@ -38,6 +40,7 @@ gem "paperclip", "~> 5.2.1"
|
||||
gem "paranoia", "~> 2.4.1"
|
||||
gem "pg", "~> 0.21.0"
|
||||
gem "pg_search", "~> 2.0.1"
|
||||
gem "record_tag_helper", "~> 1.0"
|
||||
gem "redcarpet", "~> 3.4.0"
|
||||
gem "responders", "~> 2.4.0"
|
||||
gem "rinku", "~> 2.0.2", require: "rails_rinku"
|
||||
@@ -52,8 +55,6 @@ gem "turnout", "~> 2.4.0"
|
||||
gem "uglifier", "~> 4.1.19"
|
||||
gem "unicorn", "~> 5.4.1"
|
||||
gem "whenever", "~> 0.10.0", require: false
|
||||
gem "globalize", "~> 5.0.0"
|
||||
gem "globalize-accessors", "~> 0.2.1"
|
||||
gem "recipient_interceptor", "~> 0.2.0"
|
||||
|
||||
source "https://rails-assets.org" do
|
||||
@@ -70,7 +71,6 @@ group :development, :test do
|
||||
gem "knapsack_pro", "~> 1.1.0"
|
||||
gem "launchy", "~> 2.4.3"
|
||||
gem "letter_opener_web", "~> 1.3.4"
|
||||
gem "quiet_assets", "~> 1.1.0"
|
||||
gem "spring", "~> 2.0.1"
|
||||
gem "spring-commands-rspec", "~> 1.0.4"
|
||||
end
|
||||
@@ -81,7 +81,7 @@ group :test do
|
||||
gem "database_cleaner", "~> 1.7.0"
|
||||
gem "email_spec", "~> 2.1.0"
|
||||
gem "rspec-rails", "~> 3.8"
|
||||
gem "selenium-webdriver", "~> 3.10"
|
||||
gem "selenium-webdriver", "~> 3.141"
|
||||
end
|
||||
|
||||
group :development do
|
||||
|
||||
196
Gemfile.lock
196
Gemfile.lock
@@ -1,40 +1,51 @@
|
||||
GIT
|
||||
remote: https://github.com/phatworx/devise_security_extension.git
|
||||
revision: b2ee978af7d49f0fb0e7271c6ac074dfb4d39353
|
||||
specs:
|
||||
devise_security_extension (0.10.0)
|
||||
devise (>= 3.0.0, < 5.0)
|
||||
railties (>= 3.2.6, < 6.0)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
remote: https://rails-assets.org/
|
||||
specs:
|
||||
actionmailer (4.2.11.1)
|
||||
actionpack (= 4.2.11.1)
|
||||
actionview (= 4.2.11.1)
|
||||
activejob (= 4.2.11.1)
|
||||
actioncable (5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
nio4r (>= 1.2, < 3.0)
|
||||
websocket-driver (~> 0.6.1)
|
||||
actionmailer (5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
actionview (= 5.0.7.2)
|
||||
activejob (= 5.0.7.2)
|
||||
mail (~> 2.5, >= 2.5.4)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
actionpack (4.2.11.1)
|
||||
actionview (= 4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
rack (~> 1.6)
|
||||
rack-test (~> 0.6.2)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
rails-dom-testing (~> 2.0)
|
||||
actionpack (5.0.7.2)
|
||||
actionview (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
rack (~> 2.0)
|
||||
rack-test (~> 0.6.3)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
||||
actionview (4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
actionview (5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
builder (~> 3.1)
|
||||
erubis (~> 2.7.0)
|
||||
rails-dom-testing (~> 1.0, >= 1.0.5)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
||||
activejob (4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
globalid (>= 0.3.0)
|
||||
activemodel (4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
builder (~> 3.1)
|
||||
activerecord (4.2.11.1)
|
||||
activemodel (= 4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
arel (~> 6.0)
|
||||
activesupport (4.2.11.1)
|
||||
i18n (~> 0.7)
|
||||
activejob (5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
globalid (>= 0.3.6)
|
||||
activemodel (5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
activerecord (5.0.7.2)
|
||||
activemodel (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
arel (~> 7.0)
|
||||
activesupport (5.0.7.2)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
i18n (>= 0.7, < 2)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
acts-as-taggable-on (5.0.0)
|
||||
activerecord (>= 4.2.8)
|
||||
@@ -59,7 +70,7 @@ GEM
|
||||
nokogiri
|
||||
ancestry (3.0.2)
|
||||
activerecord (>= 3.2.0)
|
||||
arel (6.0.4)
|
||||
arel (7.1.4)
|
||||
ast (2.4.0)
|
||||
autoprefixer-rails (8.2.0)
|
||||
execjs
|
||||
@@ -67,7 +78,7 @@ GEM
|
||||
babel-transpiler (0.7.0)
|
||||
babel-source (>= 4.0, < 6)
|
||||
execjs (~> 2.0)
|
||||
bcrypt (3.1.11)
|
||||
bcrypt (3.1.12)
|
||||
better_html (1.0.13)
|
||||
actionview (>= 4.0)
|
||||
activesupport (>= 4.0)
|
||||
@@ -104,7 +115,7 @@ GEM
|
||||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
xpath (>= 2.0, < 4.0)
|
||||
childprocess (0.8.0)
|
||||
childprocess (0.9.0)
|
||||
ffi (~> 1.0, >= 1.0.11)
|
||||
chronic (0.10.2)
|
||||
ckeditor (4.2.4)
|
||||
@@ -138,18 +149,15 @@ GEM
|
||||
delayed_job_active_record (4.1.3)
|
||||
activerecord (>= 3.0, < 5.3)
|
||||
delayed_job (>= 3.0, < 5)
|
||||
devise (3.5.10)
|
||||
devise (4.6.2)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 3.2.6, < 5)
|
||||
railties (>= 4.1.0, < 6.0)
|
||||
responders
|
||||
thread_safe (~> 0.1)
|
||||
warden (~> 1.2.3)
|
||||
devise-async (0.10.2)
|
||||
devise (>= 3.2, < 4.0)
|
||||
devise_security_extension (0.10.0)
|
||||
devise (>= 3.0.0, < 4.0)
|
||||
railties (>= 3.2.6, < 5.0)
|
||||
devise-async (1.0.0)
|
||||
activejob (>= 5.0)
|
||||
devise (>= 4.0)
|
||||
diff-lcs (1.3)
|
||||
docile (1.3.1)
|
||||
email_spec (2.1.1)
|
||||
@@ -174,9 +182,9 @@ GEM
|
||||
railties (>= 3.0.0)
|
||||
faker (1.8.7)
|
||||
i18n (>= 0.7)
|
||||
faraday (0.12.1)
|
||||
faraday (0.12.2)
|
||||
multipart-post (>= 1.2, < 3)
|
||||
ffi (1.9.25)
|
||||
ffi (1.10.0)
|
||||
foundation-rails (6.4.3.0)
|
||||
railties (>= 3.1.0)
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
@@ -187,12 +195,13 @@ GEM
|
||||
activesupport (>= 4.1)
|
||||
railties (>= 4.1)
|
||||
tzinfo (~> 1.2, >= 1.2.2)
|
||||
geocoder (1.4.4)
|
||||
geocoder (1.4.5)
|
||||
globalid (0.4.2)
|
||||
activesupport (>= 4.2.0)
|
||||
globalize (5.0.1)
|
||||
activemodel (>= 4.2.0, < 4.3)
|
||||
activerecord (>= 4.2.0, < 4.3)
|
||||
globalize (5.2.0)
|
||||
activemodel (>= 4.2, < 5.3)
|
||||
activerecord (>= 4.2, < 5.3)
|
||||
request_store (~> 1.0)
|
||||
globalize-accessors (0.2.1)
|
||||
globalize (~> 5.0, >= 5.0.0)
|
||||
graphiql-rails (1.4.8)
|
||||
@@ -269,6 +278,7 @@ GEM
|
||||
kramdown (~> 1.12, >= 1.12.0)
|
||||
mixlib-cli (~> 1.7, >= 1.7.0)
|
||||
mixlib-config (~> 2.2, >= 2.2.1)
|
||||
method_source (0.9.2)
|
||||
mime-types (3.1)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2016.0521)
|
||||
@@ -286,10 +296,11 @@ GEM
|
||||
net-ssh (>= 2.6.5)
|
||||
net-ssh (5.0.2)
|
||||
newrelic_rpm (4.1.0.333)
|
||||
nokogiri (1.10.1)
|
||||
nio4r (2.3.1)
|
||||
nokogiri (1.10.2)
|
||||
mini_portile2 (~> 2.4.0)
|
||||
nori (2.6.0)
|
||||
oauth (0.5.3)
|
||||
oauth (0.5.4)
|
||||
oauth2 (1.4.0)
|
||||
faraday (>= 0.8, < 0.13)
|
||||
jwt (~> 1.0)
|
||||
@@ -309,8 +320,8 @@ GEM
|
||||
omniauth-oauth (1.1.0)
|
||||
oauth
|
||||
omniauth (~> 1.0)
|
||||
omniauth-oauth2 (1.4.0)
|
||||
oauth2 (~> 1.0)
|
||||
omniauth-oauth2 (1.5.0)
|
||||
oauth2 (~> 1.1)
|
||||
omniauth (~> 1.2)
|
||||
omniauth-twitter (1.4.0)
|
||||
omniauth-oauth (~> 1.1)
|
||||
@@ -334,39 +345,36 @@ GEM
|
||||
arel (>= 6)
|
||||
powerpack (0.1.2)
|
||||
public_suffix (3.0.3)
|
||||
quiet_assets (1.1.0)
|
||||
railties (>= 3.1, < 5.0)
|
||||
rack (1.6.11)
|
||||
rack (2.0.6)
|
||||
rack-accept (0.4.5)
|
||||
rack (>= 0.4)
|
||||
rack-attack (5.0.1)
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rails (4.2.11.1)
|
||||
actionmailer (= 4.2.11.1)
|
||||
actionpack (= 4.2.11.1)
|
||||
actionview (= 4.2.11.1)
|
||||
activejob (= 4.2.11.1)
|
||||
activemodel (= 4.2.11.1)
|
||||
activerecord (= 4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
bundler (>= 1.3.0, < 2.0)
|
||||
railties (= 4.2.11.1)
|
||||
sprockets-rails
|
||||
rails-assets-leaflet (1.1.0)
|
||||
rails (5.0.7.2)
|
||||
actioncable (= 5.0.7.2)
|
||||
actionmailer (= 5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
actionview (= 5.0.7.2)
|
||||
activejob (= 5.0.7.2)
|
||||
activemodel (= 5.0.7.2)
|
||||
activerecord (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
bundler (>= 1.3.0)
|
||||
railties (= 5.0.7.2)
|
||||
sprockets-rails (>= 2.0.0)
|
||||
rails-assets-leaflet (1.2.0)
|
||||
rails-assets-markdown-it (8.2.2)
|
||||
rails-deprecated_sanitizer (1.0.3)
|
||||
activesupport (>= 4.2.0.alpha)
|
||||
rails-dom-testing (1.0.9)
|
||||
activesupport (>= 4.2.0, < 5.0)
|
||||
nokogiri (~> 1.6)
|
||||
rails-deprecated_sanitizer (>= 1.0.1)
|
||||
rails-dom-testing (2.0.3)
|
||||
activesupport (>= 4.2.0)
|
||||
nokogiri (>= 1.6)
|
||||
rails-html-sanitizer (1.0.4)
|
||||
loofah (~> 2.2, >= 2.2.2)
|
||||
railties (4.2.11.1)
|
||||
actionpack (= 4.2.11.1)
|
||||
activesupport (= 4.2.11.1)
|
||||
railties (5.0.7.2)
|
||||
actionpack (= 5.0.7.2)
|
||||
activesupport (= 5.0.7.2)
|
||||
method_source
|
||||
rake (>= 0.8.7)
|
||||
thor (>= 0.18.1, < 2.0)
|
||||
rainbow (3.0.0)
|
||||
@@ -374,12 +382,15 @@ GEM
|
||||
rake (12.3.2)
|
||||
recipient_interceptor (0.2.0)
|
||||
mail
|
||||
record_tag_helper (1.0.0)
|
||||
actionview (~> 5.x)
|
||||
redcarpet (3.4.0)
|
||||
referer-parser (0.3.0)
|
||||
request_store (1.3.2)
|
||||
responders (2.4.0)
|
||||
actionpack (>= 4.2.0, < 5.3)
|
||||
railties (>= 4.2.0, < 5.3)
|
||||
request_store (1.4.0)
|
||||
rack (>= 1.4)
|
||||
responders (2.4.1)
|
||||
actionpack (>= 4.2.0, < 6.0)
|
||||
railties (>= 4.2.0, < 6.0)
|
||||
rinku (2.0.4)
|
||||
rollbar (2.18.0)
|
||||
multi_json
|
||||
@@ -391,7 +402,7 @@ GEM
|
||||
rspec-mocks (3.8.0)
|
||||
diff-lcs (>= 1.2.0, < 2.0)
|
||||
rspec-support (~> 3.8.0)
|
||||
rspec-rails (3.8.1)
|
||||
rspec-rails (3.8.2)
|
||||
actionpack (>= 3.0)
|
||||
activesupport (>= 3.0)
|
||||
railties (>= 3.0)
|
||||
@@ -434,9 +445,9 @@ GEM
|
||||
scss_lint (0.55.0)
|
||||
rake (>= 0.9, < 13)
|
||||
sass (~> 3.4.20)
|
||||
selenium-webdriver (3.10.0)
|
||||
selenium-webdriver (3.141.0)
|
||||
childprocess (~> 0.5)
|
||||
rubyzip (~> 1.2)
|
||||
rubyzip (~> 1.2, >= 1.2.2)
|
||||
simplecov (0.16.1)
|
||||
docile (~> 1.1)
|
||||
json (>= 1.8, < 3)
|
||||
@@ -475,9 +486,9 @@ GEM
|
||||
tilt (2.0.8)
|
||||
tins (1.16.3)
|
||||
tomlrb (1.2.7)
|
||||
turbolinks (2.5.3)
|
||||
turbolinks (2.5.4)
|
||||
coffee-rails
|
||||
turnout (2.4.0)
|
||||
turnout (2.4.1)
|
||||
i18n (~> 0.7)
|
||||
rack (>= 1.3, < 3)
|
||||
rack-accept (~> 0.4)
|
||||
@@ -491,10 +502,10 @@ GEM
|
||||
kgio (~> 2.6)
|
||||
raindrops (~> 0.7)
|
||||
uniform_notifier (1.11.0)
|
||||
user_agent_parser (2.3.1)
|
||||
user_agent_parser (2.4.1)
|
||||
uuidtools (2.1.5)
|
||||
warden (1.2.7)
|
||||
rack (>= 1.0)
|
||||
warden (1.2.8)
|
||||
rack (>= 2.0.6)
|
||||
wasabi (3.5.0)
|
||||
httpi (~> 2.0)
|
||||
nokogiri (>= 1.4.2)
|
||||
@@ -502,6 +513,9 @@ GEM
|
||||
activemodel (>= 4.2)
|
||||
debug_inspector
|
||||
railties (>= 4.2)
|
||||
websocket-driver (0.6.5)
|
||||
websocket-extensions (>= 0.1.0)
|
||||
websocket-extensions (0.1.3)
|
||||
whenever (0.10.0)
|
||||
chronic (>= 0.6.3)
|
||||
xpath (3.0.0)
|
||||
@@ -533,16 +547,16 @@ DEPENDENCIES
|
||||
dalli (~> 2.7.6)
|
||||
database_cleaner (~> 1.7.0)
|
||||
delayed_job_active_record (~> 4.1.3)
|
||||
devise (~> 3.5.7)
|
||||
devise-async (~> 0.10.2)
|
||||
devise_security_extension (~> 0.10.0)
|
||||
devise (~> 4.6.0)
|
||||
devise-async (~> 1.0.0)
|
||||
devise_security_extension!
|
||||
email_spec (~> 2.1.0)
|
||||
erb_lint
|
||||
factory_bot_rails (~> 4.8.2)
|
||||
faker (~> 1.8.7)
|
||||
foundation-rails (~> 6.4.3.0)
|
||||
foundation_rails_helper (~> 2.0.0)
|
||||
globalize (~> 5.0.0)
|
||||
globalize (~> 5.2.0)
|
||||
globalize-accessors (~> 0.2.1)
|
||||
graphiql-rails (~> 1.4.1)
|
||||
graphql (~> 1.7.8)
|
||||
@@ -567,11 +581,11 @@ DEPENDENCIES
|
||||
paranoia (~> 2.4.1)
|
||||
pg (~> 0.21.0)
|
||||
pg_search (~> 2.0.1)
|
||||
quiet_assets (~> 1.1.0)
|
||||
rails (= 4.2.11.1)
|
||||
rails (= 5.0.7.2)
|
||||
rails-assets-leaflet!
|
||||
rails-assets-markdown-it (~> 8.2.1)!
|
||||
recipient_interceptor (~> 0.2.0)
|
||||
record_tag_helper (~> 1.0)
|
||||
redcarpet (~> 3.4.0)
|
||||
responders (~> 2.4.0)
|
||||
rinku (~> 2.0.2)
|
||||
@@ -583,7 +597,7 @@ DEPENDENCIES
|
||||
sass-rails (~> 5.0, >= 5.0.4)
|
||||
savon (~> 2.12.0)
|
||||
scss_lint (~> 0.55.0)
|
||||
selenium-webdriver (~> 3.10)
|
||||
selenium-webdriver (~> 3.141)
|
||||
sitemap_generator (~> 6.0.1)
|
||||
social-share-button (~> 1.1)
|
||||
spring (~> 2.0.1)
|
||||
|
||||
@@ -39,7 +39,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
if @investment.update(budget_investment_params)
|
||||
redirect_to admin_budget_budget_investment_path(@budget,
|
||||
@investment,
|
||||
Budget::Investment.filter_params(params)),
|
||||
Budget::Investment.filter_params(params).to_h),
|
||||
notice: t("flash.actions.update.budget_investment")
|
||||
else
|
||||
load_admins
|
||||
@@ -69,7 +69,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
end
|
||||
|
||||
def resource_name
|
||||
resource_model.parameterize("_")
|
||||
resource_model.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
def load_investments
|
||||
@@ -107,7 +107,7 @@ class Admin::BudgetInvestmentsController < Admin::BaseController
|
||||
end
|
||||
|
||||
def load_tags
|
||||
@tags = Budget::Investment.tags_on(:valuation).order(:name).uniq
|
||||
@tags = Budget::Investment.tags_on(:valuation).order(:name).distinct
|
||||
end
|
||||
|
||||
def load_ballot
|
||||
|
||||
@@ -9,7 +9,8 @@ class Admin::Legislation::HomepagesController < Admin::Legislation::BaseControll
|
||||
def update
|
||||
if @process.update(process_params)
|
||||
link = legislation_process_path(@process).html_safe
|
||||
redirect_to :back, notice: t("admin.legislation.processes.update.notice", link: link)
|
||||
redirect_back(fallback_location: (request.referrer || root_path),
|
||||
notice: t("admin.legislation.processes.update.notice", link: link))
|
||||
else
|
||||
flash.now[:error] = t("admin.legislation.processes.update.error")
|
||||
render :edit
|
||||
|
||||
@@ -27,7 +27,8 @@ class Admin::Legislation::ProcessesController < Admin::Legislation::BaseControll
|
||||
set_tag_list
|
||||
|
||||
link = legislation_process_path(@process).html_safe
|
||||
redirect_to :back, notice: t("admin.legislation.processes.update.notice", link: link)
|
||||
redirect_back(fallback_location: (request.referrer || root_path),
|
||||
notice: t("admin.legislation.processes.update.notice", link: link))
|
||||
else
|
||||
flash.now[:error] = t("admin.legislation.processes.update.error")
|
||||
render :edit
|
||||
|
||||
@@ -11,9 +11,7 @@ class Admin::Poll::PollsController < Admin::Poll::BaseController
|
||||
end
|
||||
|
||||
def show
|
||||
@poll = Poll.includes(:questions).
|
||||
order("poll_questions.title").
|
||||
find(params[:id])
|
||||
@poll = Poll.find(params[:id])
|
||||
end
|
||||
|
||||
def new
|
||||
@@ -67,6 +65,7 @@ class Admin::Poll::PollsController < Admin::Poll::BaseController
|
||||
end
|
||||
|
||||
def poll_params
|
||||
image_attributes = [:id, :title, :attachment, :cached_attachment, :user_id, :_destroy]
|
||||
attributes = [:name, :starts_at, :ends_at, :geozone_restricted, :results_enabled,
|
||||
:stats_enabled, :budget_id, geozone_ids: [],
|
||||
image_attributes: image_attributes]
|
||||
|
||||
@@ -38,7 +38,7 @@ class Admin::Poll::Questions::Answers::VideosController < Admin::Poll::BaseContr
|
||||
else
|
||||
t("flash.actions.destroy.error")
|
||||
end
|
||||
redirect_to :back, notice: notice
|
||||
redirect_back(fallback_location: (request.referrer || root_path), notice: notice)
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
@@ -46,7 +46,7 @@ class Admin::SiteCustomization::InformationTextsController < Admin::SiteCustomiz
|
||||
.keys
|
||||
|
||||
languages_to_delete.each do |locale|
|
||||
I18nContentTranslation.destroy_all(locale: locale)
|
||||
I18nContentTranslation.where(locale: locale).destroy_all
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
class Admin::SpendingProposalsController < Admin::BaseController
|
||||
include FeatureFlags
|
||||
before_action :load_filter_params
|
||||
feature_flag :spending_proposals
|
||||
|
||||
has_filters %w{valuation_open without_admin managed valuating valuation_finished all}, only: :index
|
||||
@@ -7,7 +8,7 @@ class Admin::SpendingProposalsController < Admin::BaseController
|
||||
load_and_authorize_resource
|
||||
|
||||
def index
|
||||
@spending_proposals = SpendingProposal.scoped_filter(params, @current_filter)
|
||||
@spending_proposals = SpendingProposal.scoped_filter(filter_params, @current_filter)
|
||||
.order(cached_votes_up: :desc, created_at: :desc)
|
||||
.page(params[:page])
|
||||
end
|
||||
@@ -23,7 +24,7 @@ class Admin::SpendingProposalsController < Admin::BaseController
|
||||
|
||||
def update
|
||||
if @spending_proposal.update(spending_proposal_params)
|
||||
redirect_to admin_spending_proposal_path(@spending_proposal, SpendingProposal.filter_params(params)),
|
||||
redirect_to admin_spending_proposal_path(@spending_proposal, filter_params),
|
||||
notice: t("flash.actions.update.spending_proposal")
|
||||
else
|
||||
load_admins
|
||||
@@ -46,6 +47,14 @@ class Admin::SpendingProposalsController < Admin::BaseController
|
||||
:administrator_id, :tag_list, valuator_ids: [])
|
||||
end
|
||||
|
||||
def filter_params
|
||||
params.permit(:geozone_id, :administrator_id, :tag_name, :valuator_id)
|
||||
end
|
||||
|
||||
def load_filter_params
|
||||
@filter_params ||= filter_params
|
||||
end
|
||||
|
||||
def load_admins
|
||||
@admins = Administrator.includes(:user).all
|
||||
end
|
||||
|
||||
@@ -4,7 +4,7 @@ class Admin::Widget::FeedsController < Admin::BaseController
|
||||
@feed = ::Widget::Feed.find(params[:id])
|
||||
@feed.update(feed_params)
|
||||
|
||||
render nothing: true
|
||||
head :ok
|
||||
end
|
||||
|
||||
private
|
||||
@@ -13,4 +13,4 @@ class Admin::Widget::FeedsController < Admin::BaseController
|
||||
params.require(:widget_feed).permit(:limit)
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
@@ -10,6 +10,7 @@ class ApplicationController < ActionController::Base
|
||||
before_action :set_locale
|
||||
before_action :track_email_campaign
|
||||
before_action :set_return_url
|
||||
before_action :set_fallbacks_to_all_available_locales
|
||||
|
||||
check_authorization unless: :devise_controller?
|
||||
self.responder = ApplicationResponder
|
||||
@@ -128,4 +129,8 @@ class ApplicationController < ActionController::Base
|
||||
def current_budget
|
||||
Budget.current
|
||||
end
|
||||
|
||||
def set_fallbacks_to_all_available_locales
|
||||
Globalize.set_fallbacks_to_all_available_locales
|
||||
end
|
||||
end
|
||||
|
||||
@@ -19,7 +19,7 @@ module Budgets
|
||||
.group_by(&:heading)
|
||||
else
|
||||
@budget.investments.winners
|
||||
.joins(:milestones).includes(:milestones)
|
||||
.joins(milestones: :translations)
|
||||
.distinct.group_by(&:heading)
|
||||
end
|
||||
end
|
||||
|
||||
@@ -22,7 +22,7 @@ class FollowsController < ApplicationController
|
||||
end
|
||||
|
||||
def followable_translation_key(followable)
|
||||
followable.class.name.parameterize("_")
|
||||
followable.class.name.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::AnnotationsController < ApplicationController
|
||||
class Legislation::AnnotationsController < Legislation::BaseController
|
||||
skip_before_action :verify_authenticity_token
|
||||
|
||||
before_action :authenticate_user!, only: [:create, :new_comment]
|
||||
|
||||
@@ -16,7 +16,7 @@ class Management::DocumentVerificationsController < Management::BaseController
|
||||
elsif @document_verification.user?
|
||||
render :new
|
||||
elsif @document_verification.in_census?
|
||||
redirect_to new_management_email_verification_path(email_verification: document_verification_params)
|
||||
redirect_to new_management_email_verification_path(email_verification: document_verification_params.to_h)
|
||||
else
|
||||
render :invalid_document
|
||||
end
|
||||
|
||||
@@ -17,7 +17,7 @@ class Management::UsersController < Management::BaseController
|
||||
@user.residence_verified_at = Time.current
|
||||
@user.verified_at = Time.current
|
||||
|
||||
if @user.save then
|
||||
if @user.save
|
||||
render :show
|
||||
else
|
||||
render :new
|
||||
|
||||
@@ -11,7 +11,7 @@ class PollsController < ApplicationController
|
||||
::Poll::Answer # trigger autoload
|
||||
|
||||
def index
|
||||
@polls = @polls.not_budget.send(@current_filter).includes(:geozones).sort_for_list.page(params[:page])
|
||||
@polls = @polls.not_budget.send(@current_filter).sort_for_list.page(params[:page])
|
||||
end
|
||||
|
||||
def show
|
||||
|
||||
@@ -25,7 +25,7 @@ class Users::OmniauthCallbacksController < Devise::OmniauthCallbacksController
|
||||
def sign_in_with(feature, provider)
|
||||
raise ActionController::RoutingError.new("Not Found") unless Setting["feature.#{feature}"]
|
||||
|
||||
auth = env["omniauth.auth"]
|
||||
auth = request.env["omniauth.auth"]
|
||||
|
||||
identity = Identity.first_or_create_from_oauth(auth)
|
||||
@user = current_user || identity.user || User.first_or_initialize_for_oauth(auth)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class Users::RegistrationsController < Devise::RegistrationsController
|
||||
prepend_before_action :authenticate_scope!, only: [:edit, :update, :destroy, :finish_signup, :do_finish_signup]
|
||||
before_filter :configure_permitted_parameters
|
||||
before_action :configure_permitted_parameters
|
||||
|
||||
invisible_captcha only: [:create], honeypot: :address, scope: :user
|
||||
|
||||
@@ -66,7 +66,7 @@ class Users::RegistrationsController < Devise::RegistrationsController
|
||||
end
|
||||
|
||||
def configure_permitted_parameters
|
||||
devise_parameter_sanitizer.for(:account_update).push(:email)
|
||||
devise_parameter_sanitizer.permit(:account_update, keys: [:email])
|
||||
end
|
||||
|
||||
def erase_params
|
||||
|
||||
@@ -61,7 +61,7 @@ class Valuation::BudgetInvestmentsController < Valuation::BaseController
|
||||
end
|
||||
|
||||
def resource_name
|
||||
resource_model.parameterize("_")
|
||||
resource_model.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
def load_budget
|
||||
@@ -97,8 +97,8 @@ class Valuation::BudgetInvestmentsController < Valuation::BaseController
|
||||
end
|
||||
|
||||
def params_for_current_valuator
|
||||
Budget::Investment.filter_params(params).merge(valuator_id: current_user.valuator.id,
|
||||
budget_id: @budget.id)
|
||||
Budget::Investment.filter_params(params).to_h.merge({ valuator_id: current_user.valuator.id,
|
||||
budget_id: @budget.id })
|
||||
end
|
||||
|
||||
def valuation_params
|
||||
|
||||
@@ -12,7 +12,8 @@ module BudgetsHelper
|
||||
end
|
||||
|
||||
def csv_params
|
||||
csv_params = params.clone.merge(format: :csv).symbolize_keys
|
||||
csv_params = params.clone.merge(format: :csv)
|
||||
csv_params = csv_params.to_unsafe_h.map { |k, v| [k.to_sym, v] }.to_h
|
||||
csv_params.delete(:page)
|
||||
csv_params
|
||||
end
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
module DocumentablesHelper
|
||||
|
||||
def documentable_class(documentable)
|
||||
documentable.class.name.parameterize("_")
|
||||
documentable.class.name.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
def max_documents_allowed(documentable)
|
||||
|
||||
@@ -22,7 +22,7 @@ module FollowablesHelper
|
||||
end
|
||||
|
||||
def followable_class_name(followable)
|
||||
followable.class.to_s.parameterize("_")
|
||||
followable.class.to_s.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
def find_or_build_follow(user, followable)
|
||||
|
||||
@@ -12,7 +12,7 @@ module GlobalizeHelper
|
||||
|
||||
def display_translation?(resource, locale)
|
||||
if !resource || resource.translations.blank? ||
|
||||
resource.translations.map(&:locale).include?(I18n.locale)
|
||||
resource.locales_not_marked_for_destruction.include?(I18n.locale)
|
||||
locale == I18n.locale
|
||||
else
|
||||
locale == resource.translations.first.locale
|
||||
|
||||
@@ -5,7 +5,7 @@ module ImageablesHelper
|
||||
end
|
||||
|
||||
def imageable_class(imageable)
|
||||
imageable.class.name.parameterize("_")
|
||||
imageable.class.name.parameterize(separator: "_")
|
||||
end
|
||||
|
||||
def imageable_max_file_size
|
||||
|
||||
@@ -6,7 +6,13 @@ module TranslatableFormHelper
|
||||
end
|
||||
|
||||
class TranslatableFormBuilder < FoundationRailsHelper::FormBuilder
|
||||
attr_accessor :translations
|
||||
|
||||
def translatable_fields(&block)
|
||||
@translations = {}
|
||||
@object.globalize_locales.map do |locale|
|
||||
@translations[locale] = translation_for(locale)
|
||||
end
|
||||
@object.globalize_locales.map do |locale|
|
||||
Globalize.with_locale(locale) { fields_for_locale(locale, &block) }
|
||||
end.join.html_safe
|
||||
@@ -15,7 +21,7 @@ module TranslatableFormHelper
|
||||
private
|
||||
|
||||
def fields_for_locale(locale, &block)
|
||||
fields_for_translation(translation_for(locale)) do |translations_form|
|
||||
fields_for_translation(@translations[locale]) do |translations_form|
|
||||
@template.content_tag :div, translations_options(translations_form.object, locale) do
|
||||
@template.concat translations_form.hidden_field(
|
||||
:_destroy,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class ActivePoll < ActiveRecord::Base
|
||||
class ActivePoll < ApplicationRecord
|
||||
include Measurable
|
||||
|
||||
translates :description, touch: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Activity < ActiveRecord::Base
|
||||
class Activity < ApplicationRecord
|
||||
belongs_to :actionable, -> { with_hidden }, polymorphic: true
|
||||
belongs_to :user, -> { with_hidden }
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class AdminNotification < ActiveRecord::Base
|
||||
class AdminNotification < ApplicationRecord
|
||||
include Notifiable
|
||||
|
||||
translates :title, touch: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Administrator < ActiveRecord::Base
|
||||
class Administrator < ApplicationRecord
|
||||
belongs_to :user, touch: true
|
||||
delegate :name, :email, :name_and_email, to: :user
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
module Ahoy
|
||||
class Event < ActiveRecord::Base
|
||||
class Event < ApplicationRecord
|
||||
self.table_name = "ahoy_events"
|
||||
|
||||
belongs_to :visit
|
||||
|
||||
3
app/models/application_record.rb
Normal file
3
app/models/application_record.rb
Normal file
@@ -0,0 +1,3 @@
|
||||
class ApplicationRecord < ActiveRecord::Base
|
||||
self.abstract_class = true
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
class Banner < ActiveRecord::Base
|
||||
class Banner < ApplicationRecord
|
||||
|
||||
acts_as_paranoid column: :hidden_at
|
||||
include ActsAsParanoidAliases
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Banner::Section < ActiveRecord::Base
|
||||
class Banner::Section < ApplicationRecord
|
||||
belongs_to :banner
|
||||
belongs_to :web_section
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Budget < ActiveRecord::Base
|
||||
class Budget < ApplicationRecord
|
||||
|
||||
include Measurable
|
||||
include Sluggable
|
||||
@@ -6,6 +6,18 @@ class Budget < ActiveRecord::Base
|
||||
translates :name, touch: true
|
||||
include Globalizable
|
||||
|
||||
class Translation
|
||||
validate :name_uniqueness_by_budget
|
||||
|
||||
def name_uniqueness_by_budget
|
||||
if Budget.joins(:translations)
|
||||
.where(name: name)
|
||||
.where.not("budget_translations.budget_id": budget_id).any?
|
||||
errors.add(:name, I18n.t("errors.messages.taken"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
CURRENCY_SYMBOLS = %w(€ $ £ ¥).freeze
|
||||
|
||||
before_validation :assign_model_to_translations
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
class Budget
|
||||
class Ballot < ActiveRecord::Base
|
||||
class Ballot < ApplicationRecord
|
||||
belongs_to :user
|
||||
belongs_to :budget
|
||||
belongs_to :poll_ballot, class_name: "Poll::Ballot"
|
||||
|
||||
has_many :lines, dependent: :destroy
|
||||
has_many :investments, through: :lines
|
||||
has_many :groups, -> { uniq }, through: :lines
|
||||
has_many :headings, -> { uniq }, through: :groups
|
||||
has_many :groups, -> { distinct }, through: :lines
|
||||
has_many :headings, -> { distinct }, through: :groups
|
||||
|
||||
def add_investment(investment)
|
||||
lines.create(investment: investment).persisted?
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
class Budget
|
||||
class Ballot
|
||||
class Line < ActiveRecord::Base
|
||||
class Line < ApplicationRecord
|
||||
belongs_to :ballot
|
||||
belongs_to :investment, counter_cache: :ballot_lines_count
|
||||
belongs_to :heading
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Budget
|
||||
class ContentBlock < ActiveRecord::Base
|
||||
class ContentBlock < ApplicationRecord
|
||||
validates :locale, presence: true, inclusion: { in: I18n.available_locales.map(&:to_s) }
|
||||
validates :heading, presence: true
|
||||
validates_uniqueness_of :heading, scope: :locale
|
||||
|
||||
@@ -1,9 +1,22 @@
|
||||
class Budget
|
||||
class Group < ActiveRecord::Base
|
||||
class Group < ApplicationRecord
|
||||
include Sluggable
|
||||
|
||||
translates :name, touch: true
|
||||
include Globalizable
|
||||
translation_class_delegate :budget
|
||||
|
||||
class Translation
|
||||
validate :name_uniqueness_by_budget
|
||||
|
||||
def name_uniqueness_by_budget
|
||||
if budget.groups.joins(:translations)
|
||||
.where(name: name)
|
||||
.where.not("budget_group_translations.budget_group_id": budget_group_id).any?
|
||||
errors.add(:name, I18n.t("errors.messages.taken"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
belongs_to :budget
|
||||
|
||||
@@ -15,7 +28,7 @@ class Budget
|
||||
validates :budget_id, presence: true
|
||||
validates :slug, presence: true, format: /\A[a-z0-9\-_]+\z/
|
||||
|
||||
scope :sort_by_name, -> { includes(:translations).order(:name) }
|
||||
scope :sort_by_name, -> { joins(:translations).order(:name) }
|
||||
|
||||
def single_heading_group?
|
||||
headings.count == 1
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
class Budget::Group::Translation < Globalize::ActiveRecord::Translation
|
||||
delegate :budget, to: :globalized_model
|
||||
|
||||
validate :name_uniqueness_by_budget
|
||||
|
||||
def name_uniqueness_by_budget
|
||||
if budget.groups.joins(:translations)
|
||||
.where(name: name)
|
||||
.where.not("budget_group_translations.budget_group_id": budget_group_id).any?
|
||||
errors.add(:name, I18n.t("errors.messages.taken"))
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,11 +1,25 @@
|
||||
class Budget
|
||||
class Heading < ActiveRecord::Base
|
||||
class Heading < ApplicationRecord
|
||||
OSM_DISTRICT_LEVEL_ZOOM = 12.freeze
|
||||
|
||||
include Sluggable
|
||||
|
||||
translates :name, touch: true
|
||||
include Globalizable
|
||||
translation_class_delegate :budget
|
||||
|
||||
class Translation
|
||||
validate :name_uniqueness_by_budget
|
||||
|
||||
def name_uniqueness_by_budget
|
||||
if budget.headings
|
||||
.joins(:translations)
|
||||
.where(name: name)
|
||||
.where.not("budget_heading_translations.budget_heading_id": budget_heading_id).any?
|
||||
errors.add(:name, I18n.t("errors.messages.taken"))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
belongs_to :group
|
||||
|
||||
@@ -26,8 +40,8 @@ class Budget
|
||||
|
||||
delegate :budget, :budget_id, to: :group, allow_nil: true
|
||||
|
||||
scope :i18n, -> { includes(:translations) }
|
||||
scope :allow_custom_content, -> { i18n.where(allow_custom_content: true).order(:name) }
|
||||
scope :i18n, -> { joins(:translations) }
|
||||
scope :allow_custom_content, -> { i18n.where(allow_custom_content: true).order("budget_heading_translations.name") }
|
||||
|
||||
def self.sort_by_name
|
||||
all.sort do |heading, other_heading|
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
class Budget::Heading::Translation < Globalize::ActiveRecord::Translation
|
||||
delegate :budget, to: :globalized_model
|
||||
|
||||
validate :name_uniqueness_by_budget
|
||||
|
||||
def name_uniqueness_by_budget
|
||||
if budget.headings
|
||||
.joins(:translations)
|
||||
.where(name: name)
|
||||
.where.not("budget_heading_translations.budget_heading_id": budget_heading_id).any?
|
||||
errors.add(:name, I18n.t("errors.messages.taken"))
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,5 @@
|
||||
class Budget
|
||||
class Investment < ActiveRecord::Base
|
||||
class Investment < ApplicationRecord
|
||||
SORTING_OPTIONS = {id: "id", title: "title", supports: "cached_votes_up"}.freeze
|
||||
|
||||
include Rails.application.routes.url_helpers
|
||||
@@ -109,7 +109,7 @@ class Budget
|
||||
end
|
||||
|
||||
def self.filter_params(params)
|
||||
params.select{ |x, _| %w{heading_id group_id administrator_id tag_name valuator_id}.include?(x.to_s) }
|
||||
params.permit(%i[heading_id group_id administrator_id tag_name valuator_id])
|
||||
end
|
||||
|
||||
def self.scoped_filter(params, current_filter)
|
||||
@@ -368,7 +368,7 @@ class Budget
|
||||
end
|
||||
|
||||
def self.with_milestone_status_id(status_id)
|
||||
joins(:milestones).includes(:milestones).select do |investment|
|
||||
includes(milestones: :translations).select do |investment|
|
||||
investment.milestone_status_id == status_id.to_i
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Budget
|
||||
class Phase < ActiveRecord::Base
|
||||
class Phase < ApplicationRecord
|
||||
PHASE_KINDS = %w(drafting informing accepting reviewing selecting valuating publishing_prices balloting
|
||||
reviewing_ballots finished).freeze
|
||||
PUBLISHED_PRICES_PHASES = %w(publishing_prices balloting reviewing_ballots finished).freeze
|
||||
@@ -9,6 +9,7 @@ class Budget
|
||||
translates :summary, touch: true
|
||||
translates :description, touch: true
|
||||
include Globalizable
|
||||
include Sanitizable
|
||||
|
||||
belongs_to :budget
|
||||
belongs_to :next_phase, class_name: "Budget::Phase", foreign_key: :next_phase_id
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
class Budget::Phase::Translation < Globalize::ActiveRecord::Translation
|
||||
before_validation :sanitize_description
|
||||
|
||||
private
|
||||
|
||||
def sanitize_description
|
||||
self.description = WYSIWYGSanitizer.new.sanitize(description)
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,5 @@
|
||||
class Budget
|
||||
class ReclassifiedVote < ActiveRecord::Base
|
||||
class ReclassifiedVote < ApplicationRecord
|
||||
REASONS = %w(heading_changed unfeasible)
|
||||
|
||||
belongs_to :user
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
class Budget::Translation < Globalize::ActiveRecord::Translation
|
||||
validate :name_uniqueness_by_budget
|
||||
|
||||
def name_uniqueness_by_budget
|
||||
if Budget.joins(:translations)
|
||||
.where(name: name)
|
||||
.where.not("budget_translations.budget_id": budget_id).any?
|
||||
errors.add(:name, I18n.t("errors.messages.taken"))
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,5 +1,5 @@
|
||||
class Budget
|
||||
class ValuatorAssignment < ActiveRecord::Base
|
||||
class ValuatorAssignment < ApplicationRecord
|
||||
belongs_to :valuator, counter_cache: :budget_investments_count
|
||||
belongs_to :investment, counter_cache: true
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Budget
|
||||
class ValuatorGroupAssignment < ActiveRecord::Base
|
||||
class ValuatorGroupAssignment < ApplicationRecord
|
||||
belongs_to :valuator_group, counter_cache: :budget_investments_count
|
||||
belongs_to :investment, counter_cache: true
|
||||
end
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
class Campaign < ActiveRecord::Base
|
||||
class Campaign < ApplicationRecord
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Ckeditor::Asset < ActiveRecord::Base
|
||||
class Ckeditor::Asset < ApplicationRecord
|
||||
include Ckeditor::Orm::ActiveRecord::AssetBase
|
||||
include Ckeditor::Backend::Paperclip
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Comment < ActiveRecord::Base
|
||||
class Comment < ApplicationRecord
|
||||
include Flaggable
|
||||
include HasPublicAuthor
|
||||
include Graphqlable
|
||||
@@ -22,7 +22,7 @@ class Comment < ActiveRecord::Base
|
||||
validate :validate_body_length
|
||||
validate :comment_valuation, if: -> { valuation }
|
||||
|
||||
belongs_to :commentable, -> { with_hidden }, polymorphic: true, counter_cache: true
|
||||
belongs_to :commentable, -> { with_hidden }, polymorphic: true, counter_cache: true, touch: true
|
||||
belongs_to :user, -> { with_hidden }
|
||||
|
||||
before_save :calculate_confidence_score
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Community < ActiveRecord::Base
|
||||
class Community < ApplicationRecord
|
||||
has_one :proposal
|
||||
has_one :investment, class_name: Budget::Investment
|
||||
has_many :topics
|
||||
|
||||
@@ -6,7 +6,7 @@ module Galleryable
|
||||
accepts_nested_attributes_for :images, allow_destroy: true, update_only: true
|
||||
|
||||
def image_url(style)
|
||||
image.attachment.url(style) if image && image.attachment.exists?
|
||||
image&.attachment&.url(style) || ""
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -12,6 +12,10 @@ module Globalizable
|
||||
def assign_model_to_translations
|
||||
translations.each { |translation| translation.globalized_model = self }
|
||||
end
|
||||
|
||||
def description
|
||||
self.read_attribute(:description).try :html_safe
|
||||
end
|
||||
end
|
||||
|
||||
class_methods do
|
||||
@@ -19,5 +23,9 @@ module Globalizable
|
||||
validates(method, options.merge(if: lambda { |resource| resource.translations.blank? }))
|
||||
translation_class.instance_eval { validates method, options }
|
||||
end
|
||||
|
||||
def translation_class_delegate(method)
|
||||
translation_class.instance_eval { delegate method, to: :globalized_model }
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -6,7 +6,7 @@ module Imageable
|
||||
accepts_nested_attributes_for :image, allow_destroy: true, update_only: true
|
||||
|
||||
def image_url(style)
|
||||
image.attachment.url(style) if image && image.attachment.exists?
|
||||
image&.attachment&.url(style) || ""
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -4,20 +4,47 @@ module Sanitizable
|
||||
included do
|
||||
before_validation :sanitize_description
|
||||
before_validation :sanitize_tag_list
|
||||
end
|
||||
|
||||
def description
|
||||
super.try :html_safe
|
||||
unless included_modules.include? Globalizable
|
||||
def description
|
||||
super.try :html_safe
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
protected
|
||||
|
||||
def sanitize_description
|
||||
self.description = WYSIWYGSanitizer.new.sanitize(description)
|
||||
if translatable_description?
|
||||
sanitize_description_translations
|
||||
else
|
||||
self.description = WYSIWYGSanitizer.new.sanitize(description)
|
||||
end
|
||||
end
|
||||
|
||||
def sanitize_tag_list
|
||||
self.tag_list = TagSanitizer.new.sanitize_tag_list(tag_list) if self.class.taggable?
|
||||
end
|
||||
|
||||
def translatable_description?
|
||||
self.class.included_modules.include?(Globalizable) &&
|
||||
self.class.translated_attribute_names.include?(:description)
|
||||
end
|
||||
|
||||
def sanitize_description_translations
|
||||
# Sanitize description when using attribute accessor in place of nested translations.
|
||||
# This is because Globalize gem create translations on after save callback
|
||||
# https://github.com/globalize/globalize/blob/e37c471775d196cd4318e61954572c300c015467/lib/globalize/active_record/act_macro.rb#L105
|
||||
if translations.empty?
|
||||
Globalize.with_locale(I18n.locale) do
|
||||
self.description = WYSIWYGSanitizer.new.sanitize(description)
|
||||
end
|
||||
end
|
||||
|
||||
translations.reject(&:_destroy).each do |translation|
|
||||
Globalize.with_locale(translation.locale) do
|
||||
self.description = WYSIWYGSanitizer.new.sanitize(description)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
require "numeric"
|
||||
class Debate < ActiveRecord::Base
|
||||
class Debate < ApplicationRecord
|
||||
include Rails.application.routes.url_helpers
|
||||
include Flaggable
|
||||
include Taggable
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class DirectMessage < ActiveRecord::Base
|
||||
class DirectMessage < ApplicationRecord
|
||||
belongs_to :sender, class_name: "User", foreign_key: "sender_id"
|
||||
belongs_to :receiver, class_name: "User", foreign_key: "receiver_id"
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ class DirectUpload
|
||||
@relation.valid?
|
||||
|
||||
if @relation.errors.key? :attachment
|
||||
errors[:attachment] = @relation.errors[:attachment]
|
||||
errors.add(:attachment, @relation.errors.full_messages_for(:attachment))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Document < ActiveRecord::Base
|
||||
class Document < ApplicationRecord
|
||||
include DocumentsHelper
|
||||
include DocumentablesHelper
|
||||
has_attached_file :attachment, url: "/system/:class/:prefix/:style/:hash.:extension",
|
||||
@@ -80,24 +80,26 @@ class Document < ActiveRecord::Base
|
||||
def validate_attachment_size
|
||||
if documentable_class.present? &&
|
||||
attachment_file_size > documentable_class.max_file_size
|
||||
errors[:attachment] = I18n.t("documents.errors.messages.in_between",
|
||||
errors.add(:attachment, I18n.t("documents.errors.messages.in_between",
|
||||
min: "0 Bytes",
|
||||
max: "#{max_file_size(documentable_class)} MB")
|
||||
max: "#{max_file_size(documentable_class)} MB"))
|
||||
end
|
||||
end
|
||||
|
||||
def validate_attachment_content_type
|
||||
if documentable_class &&
|
||||
!accepted_content_types(documentable_class).include?(attachment_content_type)
|
||||
errors[:attachment] = I18n.t("documents.errors.messages.wrong_content_type",
|
||||
content_type: attachment_content_type,
|
||||
accepted_content_types: documentable_humanized_accepted_content_types(documentable_class))
|
||||
accepted_content_types = documentable_humanized_accepted_content_types(documentable_class)
|
||||
message = I18n.t("documents.errors.messages.wrong_content_type",
|
||||
content_type: attachment_content_type,
|
||||
accepted_content_types: accepted_content_types)
|
||||
errors.add(:attachment, message)
|
||||
end
|
||||
end
|
||||
|
||||
def attachment_presence
|
||||
if attachment.blank? && cached_attachment.blank?
|
||||
errors[:attachment] = I18n.t("errors.messages.blank")
|
||||
errors.add(:attachment, I18n.t("errors.messages.blank"))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class FailedCensusCall < ActiveRecord::Base
|
||||
class FailedCensusCall < ApplicationRecord
|
||||
belongs_to :user, counter_cache: true
|
||||
belongs_to :poll_officer, class_name: "Poll::Officer", counter_cache: true
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Flag < ActiveRecord::Base
|
||||
class Flag < ApplicationRecord
|
||||
belongs_to :user
|
||||
belongs_to :flaggable, polymorphic: true, counter_cache: true, touch: true
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Follow < ActiveRecord::Base
|
||||
class Follow < ApplicationRecord
|
||||
belongs_to :user
|
||||
belongs_to :followable, polymorphic: true
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Geozone < ActiveRecord::Base
|
||||
class Geozone < ApplicationRecord
|
||||
|
||||
include Graphqlable
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class I18nContent < ActiveRecord::Base
|
||||
class I18nContent < ApplicationRecord
|
||||
|
||||
scope :by_key, ->(key) { where(key: key) }
|
||||
scope :begins_with_key, ->(key) { where("key ILIKE ?", "#{key}%") }
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class I18nContentTranslation < ActiveRecord::Base
|
||||
class I18nContentTranslation < ApplicationRecord
|
||||
def self.existing_languages
|
||||
self.select(:locale).uniq.map{ |l| l.locale.to_sym }.to_a
|
||||
self.select(:locale).distinct.map { |l| l.locale.to_sym }.to_a
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Identity < ActiveRecord::Base
|
||||
class Identity < ApplicationRecord
|
||||
belongs_to :user
|
||||
|
||||
validates :provider, presence: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Image < ActiveRecord::Base
|
||||
class Image < ApplicationRecord
|
||||
include ImagesHelper
|
||||
include ImageablesHelper
|
||||
|
||||
@@ -79,23 +79,24 @@ class Image < ActiveRecord::Base
|
||||
def validate_attachment_size
|
||||
if imageable_class &&
|
||||
attachment_file_size > 1.megabytes
|
||||
errors[:attachment] = I18n.t("images.errors.messages.in_between",
|
||||
min: "0 Bytes",
|
||||
max: "#{imageable_max_file_size} MB")
|
||||
errors.add(:attachment, I18n.t("images.errors.messages.in_between",
|
||||
min: "0 Bytes",
|
||||
max: "#{imageable_max_file_size} MB"))
|
||||
end
|
||||
end
|
||||
|
||||
def validate_attachment_content_type
|
||||
if imageable_class && !attachment_of_valid_content_type?
|
||||
errors[:attachment] = I18n.t("images.errors.messages.wrong_content_type",
|
||||
content_type: attachment_content_type,
|
||||
accepted_content_types: imageable_humanized_accepted_content_types)
|
||||
message = I18n.t("images.errors.messages.wrong_content_type",
|
||||
content_type: attachment_content_type,
|
||||
accepted_content_types: imageable_humanized_accepted_content_types)
|
||||
errors.add(:attachment, message)
|
||||
end
|
||||
end
|
||||
|
||||
def attachment_presence
|
||||
if attachment.blank? && cached_attachment.blank?
|
||||
errors[:attachment] = I18n.t("errors.messages.blank")
|
||||
errors.add(:attachment, I18n.t("errors.messages.blank"))
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::Annotation < ActiveRecord::Base
|
||||
class Legislation::Annotation < ApplicationRecord
|
||||
COMMENTS_PAGE_SIZE = 5
|
||||
acts_as_paranoid column: :hidden_at
|
||||
include ActsAsParanoidAliases
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::Answer < ActiveRecord::Base
|
||||
class Legislation::Answer < ApplicationRecord
|
||||
acts_as_paranoid column: :hidden_at
|
||||
include ActsAsParanoidAliases
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::DraftVersion < ActiveRecord::Base
|
||||
class Legislation::DraftVersion < ApplicationRecord
|
||||
VALID_STATUSES = %w(draft published)
|
||||
|
||||
acts_as_paranoid column: :hidden_at
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::Process < ActiveRecord::Base
|
||||
class Legislation::Process < ApplicationRecord
|
||||
include ActsAsParanoidAliases
|
||||
include Taggable
|
||||
include Milestoneable
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::Proposal < ActiveRecord::Base
|
||||
class Legislation::Proposal < ApplicationRecord
|
||||
include ActsAsParanoidAliases
|
||||
include Flaggable
|
||||
include Taggable
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::Question < ActiveRecord::Base
|
||||
class Legislation::Question < ApplicationRecord
|
||||
acts_as_paranoid column: :hidden_at
|
||||
include ActsAsParanoidAliases
|
||||
include Notifiable
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Legislation::QuestionOption < ActiveRecord::Base
|
||||
class Legislation::QuestionOption < ApplicationRecord
|
||||
acts_as_paranoid column: :hidden_at
|
||||
include ActsAsParanoidAliases
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class LocalCensusRecord < ActiveRecord::Base
|
||||
class LocalCensusRecord < ApplicationRecord
|
||||
validates :document_number, presence: true
|
||||
validates :document_type, presence: true
|
||||
validates :date_of_birth, presence: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Lock < ActiveRecord::Base
|
||||
class Lock < ApplicationRecord
|
||||
belongs_to :user
|
||||
|
||||
before_save :set_locked_until
|
||||
@@ -21,7 +21,7 @@ class Lock < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def self.increase_tries(user)
|
||||
Lock.find_or_create_by(user: user).increment!(:tries)
|
||||
Lock.find_or_create_by(user: user).increment!(:tries).save
|
||||
end
|
||||
|
||||
def self.max_tries
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Manager < ActiveRecord::Base
|
||||
class Manager < ApplicationRecord
|
||||
belongs_to :user, touch: true
|
||||
delegate :name, :email, :name_and_email, to: :user
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class MapLocation < ActiveRecord::Base
|
||||
class MapLocation < ApplicationRecord
|
||||
|
||||
belongs_to :proposal, touch: true
|
||||
belongs_to :investment, class_name: Budget::Investment, touch: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Milestone < ActiveRecord::Base
|
||||
class Milestone < ApplicationRecord
|
||||
include Imageable
|
||||
include Documentable
|
||||
documentable max_documents_allowed: 3,
|
||||
@@ -7,6 +7,7 @@ class Milestone < ActiveRecord::Base
|
||||
|
||||
translates :title, :description, touch: true
|
||||
include Globalizable
|
||||
translation_class_delegate :status_id
|
||||
|
||||
belongs_to :milestoneable, polymorphic: true
|
||||
belongs_to :status
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Milestone::Status < ActiveRecord::Base
|
||||
class Milestone::Status < ApplicationRecord
|
||||
acts_as_paranoid column: :hidden_at
|
||||
|
||||
has_many :milestones
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
class Milestone::Translation < Globalize::ActiveRecord::Translation
|
||||
delegate :status_id, to: :globalized_model
|
||||
end
|
||||
@@ -1,4 +1,4 @@
|
||||
class Moderator < ActiveRecord::Base
|
||||
class Moderator < ApplicationRecord
|
||||
belongs_to :user, touch: true
|
||||
delegate :name, :email, to: :user
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Newsletter < ActiveRecord::Base
|
||||
class Newsletter < ApplicationRecord
|
||||
has_many :activities, as: :actionable
|
||||
|
||||
validates :subject, presence: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Notification < ActiveRecord::Base
|
||||
class Notification < ApplicationRecord
|
||||
|
||||
belongs_to :user, counter_cache: true
|
||||
belongs_to :notifiable, polymorphic: true
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Organization < ActiveRecord::Base
|
||||
class Organization < ApplicationRecord
|
||||
|
||||
include Graphqlable
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll < ActiveRecord::Base
|
||||
class Poll < ApplicationRecord
|
||||
include Imageable
|
||||
acts_as_paranoid column: :hidden_at
|
||||
include ActsAsParanoidAliases
|
||||
@@ -37,7 +37,7 @@ class Poll < ActiveRecord::Base
|
||||
scope :public_for_api, -> { all }
|
||||
scope :not_budget, -> { where(budget_id: nil) }
|
||||
|
||||
scope :sort_for_list, -> { order(:geozone_restricted, :starts_at, :name) }
|
||||
scope :sort_for_list, -> { joins(:translations).order(:geozone_restricted, :starts_at, "poll_translations.name") }
|
||||
|
||||
def title
|
||||
name
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll::Answer < ActiveRecord::Base
|
||||
class Poll::Answer < ApplicationRecord
|
||||
|
||||
belongs_to :question, -> { with_hidden }
|
||||
belongs_to :author, -> { with_hidden }, class_name: "User", foreign_key: "author_id"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Poll
|
||||
class Booth < ActiveRecord::Base
|
||||
class Booth < ApplicationRecord
|
||||
has_many :booth_assignments, class_name: "Poll::BoothAssignment"
|
||||
has_many :polls, through: :booth_assignments
|
||||
has_many :shifts
|
||||
@@ -12,7 +12,7 @@ class Poll
|
||||
end
|
||||
|
||||
def self.available
|
||||
where(polls: { id: Poll.current_or_recounting }).includes(:polls)
|
||||
where(polls: { id: Poll.current_or_recounting }).joins(polls: :translations)
|
||||
end
|
||||
|
||||
def assignment_on_poll(poll)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Poll
|
||||
class BoothAssignment < ActiveRecord::Base
|
||||
class BoothAssignment < ApplicationRecord
|
||||
belongs_to :booth
|
||||
belongs_to :poll
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Poll
|
||||
class Officer < ActiveRecord::Base
|
||||
class Officer < ApplicationRecord
|
||||
belongs_to :user
|
||||
has_many :officer_assignments, class_name: "Poll::OfficerAssignment"
|
||||
has_many :shifts, class_name: "Poll::Shift"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Poll
|
||||
class OfficerAssignment < ActiveRecord::Base
|
||||
class OfficerAssignment < ApplicationRecord
|
||||
belongs_to :officer
|
||||
belongs_to :booth_assignment
|
||||
has_many :ballot_sheets
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll::PartialResult < ActiveRecord::Base
|
||||
class Poll::PartialResult < ApplicationRecord
|
||||
|
||||
VALID_ORIGINS = %w{web booth}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll::Question < ActiveRecord::Base
|
||||
class Poll::Question < ApplicationRecord
|
||||
include Measurable
|
||||
include Searchable
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll::Question::Answer < ActiveRecord::Base
|
||||
class Poll::Question::Answer < ApplicationRecord
|
||||
include Galleryable
|
||||
include Documentable
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll::Question::Answer::Video < ActiveRecord::Base
|
||||
class Poll::Question::Answer::Video < ApplicationRecord
|
||||
belongs_to :answer, class_name: "Poll::Question::Answer", foreign_key: "answer_id"
|
||||
|
||||
VIMEO_REGEX = /vimeo.*(staffpicks\/|channels\/|videos\/|video\/|\/)([^#\&\?]*).*/
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
class Poll::Recount < ActiveRecord::Base
|
||||
class Poll::Recount < ApplicationRecord
|
||||
|
||||
VALID_ORIGINS = %w{web booth letter}.freeze
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Poll
|
||||
class Shift < ActiveRecord::Base
|
||||
class Shift < ApplicationRecord
|
||||
belongs_to :booth
|
||||
belongs_to :officer
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
class Poll
|
||||
class Voter < ActiveRecord::Base
|
||||
class Voter < ApplicationRecord
|
||||
|
||||
VALID_ORIGINS = %w{web booth}.freeze
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user