Merge pull request #3751 from consul/prepare_1.1_tasks

Remove tasks executed in version 1.0.0
This commit is contained in:
Javier Martín
2019-10-08 21:21:36 +02:00
committed by GitHub
14 changed files with 22 additions and 365 deletions

View File

@@ -1,29 +0,0 @@
class Migrations::Reports
def migrate
migrate_polls
migrate_budgets
end
private
def migrate_polls
Poll.find_each do |poll|
next unless poll.report.new_record?
poll.report.update!(
results: poll.read_attribute(:results_enabled),
stats: poll.read_attribute(:stats_enabled),
advanced_stats: poll.read_attribute(:stats_enabled),
)
end
end
def migrate_budgets
Budget.find_each do |budget|
next unless budget.report.new_record?
budget.report.update!(results: true, stats: true, advanced_stats: true)
end
end
end

View File

@@ -1,14 +1,4 @@
namespace :budgets do
desc "Regenerate ballot_lines_count cache"
task calculate_ballot_lines: :environment do
ApplicationLogger.new.info "Calculating ballot lines"
Budget::Ballot.find_each.with_index do |ballot, index|
Budget::Ballot.reset_counters ballot.id, :lines
print "." if (index % 10_000).zero?
end
end
namespace :email do
desc "Sends emails to authors of selected investments"
@@ -25,12 +15,13 @@ namespace :budgets do
desc "Update investments original_heading_id with current heading_id"
task set_original_heading_id: :environment do
puts "Starting"
ApplicationLogger.new.info "Setting original_heading_id to investments"
Budget::Investment.find_each do |investment|
investment.update_column(:original_heading_id, investment.heading_id)
unless investment.original_heading_id.present?
investment.update_column(:original_heading_id, investment.heading_id)
end
print "."
end
puts "Finished"
end
end

View File

@@ -1,15 +1,9 @@
namespace :consul do
desc "Runs tasks needed to upgrade to the latest version"
task execute_release_tasks: "execute_release_1.0.0_tasks"
task execute_release_tasks: ["settings:add_new_settings", "execute_release_1.1.0_tasks"]
desc "Runs tasks needed to upgrade from 1.0.0-beta to 1.0.0"
task "execute_release_1.0.0_tasks": [
"poll:generate_slugs",
"stats_and_results:migrate_to_reports",
"budgets:calculate_ballot_lines",
"settings:remove_deprecated_settings",
"settings:rename_setting_keys",
"settings:add_new_settings",
"stats:generate"
desc "Runs tasks needed to upgrade from 1.0.0 to 1.1.0"
task "execute_release_1.1.0_tasks": [
"budgets:set_original_heading_id"
]
end

View File

@@ -4,9 +4,4 @@ namespace :db do
@avoid_log = args[:print_log] == "avoid_log"
load(Rails.root.join("db", "dev_seeds.rb"))
end
desc "populate the default pages manually"
task pages: :environment do
load(Rails.root.join("db", "pages.rb"))
end
end

View File

@@ -1,10 +0,0 @@
namespace :legislation_proposals do
desc "Calculate cached votes score for existing legislation proposals"
task calculate_cached_votes_score: :environment do
Legislation::Proposal.find_each do |p|
p.update_column(:cached_votes_score, p.cached_votes_up - p.cached_votes_down)
print "."
end
puts "\nTask finished 🎉"
end
end

View File

@@ -1,10 +0,0 @@
namespace :poll do
desc "Generate slugs polls"
task generate_slugs: :environment do
ApplicationLogger.new.info "Generating poll slugs"
Poll.find_each do |poll|
poll.update_columns(slug: poll.generate_slug, updated_at: Time.current) if poll.generate_slug?
end
end
end

View File

@@ -12,29 +12,6 @@ namespace :proposal_actions do
end
end
desc "Initialize proposal settings"
task initialize_settings: :environment do
%w[
proposals.successful_proposal_id
proposals.poll_short_title
proposals.poll_description
proposals.poll_link
proposals.email_short_title
proposals.email_description
proposals.poster_short_title
proposals.poster_description
].each do |key|
Setting[key] = nil if Setting.find_by(key: key).nil?
end
end
desc "Publish all proposals"
task publish_all: :environment do
Proposal.draft.find_each do |proposal|
proposal.update_columns(published_at: proposal.created_at, updated_at: Time.current)
end
end
desc "Simulate successful proposal"
task create_successful_proposal: :environment do
expected_supports = [

View File

@@ -1,27 +0,0 @@
namespace :proposals do
desc "Move external_url to description"
task move_external_url_to_description: :environment do
include ActionView::Helpers::SanitizeHelper
include TextWithLinksHelper
models = [Proposal, Legislation::Proposal]
models.each do |model|
print "Move external_url to description for #{model}s"
model.find_each do |resource|
if resource.external_url.present?
Globalize.with_locale(I18n.default_locale) do
new_description = "#{resource.description} <p>#{sanitize_and_auto_link(resource.external_url)}</p>"
resource.description = new_description
resource.external_url = ""
resource.updated_at = Time.current
resource.save(validate: false)
print "."
end
end
end
puts ""
end
end
end

View File

@@ -1,58 +1,7 @@
namespace :settings do
desc "Remove deprecated settings"
task remove_deprecated_settings: :environment do
ApplicationLogger.new.info "Removing deprecated settings"
deprecated_keys = [
"place_name",
"banner-style.banner-style-one",
"banner-style.banner-style-two",
"banner-style.banner-style-three",
"banner-img.banner-img-one",
"banner-img.banner-img-two",
"banner-img.banner-img-three",
"verification_offices_url",
"feature.spending_proposals",
"feature.spending_proposal_features.phase1",
"feature.spending_proposal_features.phase2",
"feature.spending_proposal_features.phase3",
"feature.spending_proposal_features.voting_allowed",
"feature.spending_proposal_features.final_voting_allowed",
"feature.spending_proposal_features.open_results_page",
"feature.spending_proposal_features.valuation_allowed"
]
deprecated_keys.each do |key|
Setting.where(key: key).first&.destroy
end
end
desc "Rename existing settings"
task rename_setting_keys: :environment do
ApplicationLogger.new.info "Renaming existing settings"
Setting.rename_key from: "map_latitude", to: "map.latitude"
Setting.rename_key from: "map_longitude", to: "map.longitude"
Setting.rename_key from: "map_zoom", to: "map.zoom"
Setting.rename_key from: "feature.debates", to: "process.debates"
Setting.rename_key from: "feature.proposals", to: "process.proposals"
Setting.rename_key from: "feature.polls", to: "process.polls"
Setting.rename_key from: "feature.budgets", to: "process.budgets"
Setting.rename_key from: "feature.legislation", to: "process.legislation"
Setting.rename_key from: "per_page_code_head", to: "html.per_page_code_head"
Setting.rename_key from: "per_page_code_body", to: "html.per_page_code_body"
Setting.rename_key from: "feature.homepage.widgets.feeds.proposals", to: "homepage.widgets.feeds.proposals"
Setting.rename_key from: "feature.homepage.widgets.feeds.debates", to: "homepage.widgets.feeds.debates"
Setting.rename_key from: "feature.homepage.widgets.feeds.processes", to: "homepage.widgets.feeds.processes"
end
desc "Add new settings"
task add_new_settings: :environment do
ApplicationLogger.new.info "Adding new settings"
Setting.add_new_settings
end
end

View File

@@ -1,7 +0,0 @@
namespace :stats_and_results do
desc "Migrates stats_enabled and results_enabled data to enabled reports"
task migrate_to_reports: :environment do
ApplicationLogger.new.info "Migrating stats and results"
Migrations::Reports.new.migrate
end
end

View File

@@ -1,53 +0,0 @@
require "rails_helper"
describe Migrations::Reports do
describe "#migrate" do
it "ignores polls with existing reports" do
create(:poll, results_enabled: true, stats_enabled: true) do |poll|
poll.write_attribute(:results_enabled, false)
poll.write_attribute(:stats_enabled, false)
poll.save
end
Migrations::Reports.new.migrate
expect(Poll.last.results_enabled).to be true
expect(Poll.last.stats_enabled).to be true
expect(Poll.last.advanced_stats_enabled).to be nil
end
it "migrates polls with no reports" do
create(:poll) do |poll|
poll.write_attribute(:results_enabled, true)
poll.write_attribute(:stats_enabled, true)
poll.save
end
Migrations::Reports.new.migrate
expect(Poll.last.results_enabled).to be true
expect(Poll.last.stats_enabled).to be true
expect(Poll.last.advanced_stats_enabled).to be true
end
it "ignores budgets with existing reports" do
create(:budget, results_enabled: false, stats_enabled: false, advanced_stats_enabled: false)
Migrations::Reports.new.migrate
expect(Budget.last.results_enabled).to be false
expect(Budget.last.stats_enabled).to be false
expect(Budget.last.advanced_stats_enabled).to be false
end
it "enables results and stats for every budget" do
create(:budget)
Migrations::Reports.new.migrate
expect(Budget.last.results_enabled).to be true
expect(Budget.last.stats_enabled).to be true
expect(Budget.last.advanced_stats_enabled).to be true
end
end
end

View File

@@ -3,6 +3,7 @@ require "rails_helper"
describe Budget do
let(:run_rake_task) do
Rake::Task["budgets:set_original_heading_id"].reenable
Rake.application.invoke_task("budgets:set_original_heading_id")
end
@@ -19,4 +20,17 @@ describe Budget do
expect(investment.original_heading_id).to equal(heading.id)
end
it "does not overwrite original_heading_id when already present" do
original_heading = create(:budget_heading)
new_heading = create(:budget_heading)
investment = create(:budget_investment, heading: original_heading)
investment.update(heading: new_heading)
expect(investment.original_heading_id).to eq original_heading.id
run_rake_task
investment.reload
expect(investment.original_heading_id).to eq original_heading.id
end
end

View File

@@ -1,15 +0,0 @@
require "rails_helper"
describe "rake db:pages" do
let :run_rake_task do
Rake.application.invoke_task("db:pages")
end
it "seeds the database with the default custom pages" do
SiteCustomization::Page.destroy_all
expect(SiteCustomization::Page.count).to be 0
run_rake_task
expect(SiteCustomization::Page.count).to be 7
end
end

View File

@@ -1,112 +0,0 @@
require "rails_helper"
describe Setting do
context "Remove deprecated settings" do
let :run_remove_deprecated_settings_task do
Rake::Task["settings:remove_deprecated_settings"].reenable
Rake.application.invoke_task "settings:remove_deprecated_settings"
end
before do
Setting.create(key: "place_name", value: "City")
Setting.create(key: "banner-style.banner-style-one", value: "Style one")
Setting.create(key: "banner-style.banner-style-two", value: "Style two")
Setting.create(key: "banner-style.banner-style-three", value: "Style three")
Setting.create(key: "banner-img.banner-img-one", value: "Image 1")
Setting.create(key: "banner-img.banner-img-two", value: "Image 2")
Setting.create(key: "banner-img.banner-img-three", value: "Image 3")
Setting.create(key: "verification_offices_url", value: "http://offices.url")
Setting.create(key: "not_deprecated", value: "Setting not deprecated")
run_remove_deprecated_settings_task
end
it "Rake only removes deprecated settings" do
expect(Setting.where(key: "place_name").count).to eq(0)
expect(Setting.where(key: "banner-style.banner-style-one").count).to eq(0)
expect(Setting.where(key: "banner-style.banner-style-two").count).to eq(0)
expect(Setting.where(key: "banner-style.banner-style-three").count).to eq(0)
expect(Setting.where(key: "banner-img.banner-img-one").count).to eq(0)
expect(Setting.where(key: "banner-img.banner-img-two").count).to eq(0)
expect(Setting.where(key: "banner-img.banner-img-three").count).to eq(0)
expect(Setting.where(key: "verification_offices_url").count).to eq(0)
expect(Setting.where(key: "not_deprecated").count).to eq(1)
end
end
describe "#rename_setting_keys" do
let :run_rake_task do
Rake::Task["settings:rename_setting_keys"].reenable
Rake.application.invoke_task "settings:rename_setting_keys"
end
let :old_keys do
%w[map_latitude map_longitude map_zoom feature.debates feature.proposals feature.polls
feature.budgets feature.legislation per_page_code_head per_page_code_body
feature.homepage.widgets.feeds.proposals feature.homepage.widgets.feeds.debates
feature.homepage.widgets.feeds.processes]
end
let :new_keys do
%w[map.latitude map.longitude map.zoom process.debates process.proposals process.polls
process.budgets process.legislation html.per_page_code_head html.per_page_code_body
homepage.widgets.feeds.proposals homepage.widgets.feeds.debates
homepage.widgets.feeds.processes]
end
context "with existing old settings" do
it "rename all settings keys keeping the same value" do
Setting.destroy_all
old_keys.each { |old_key| Setting[old_key] = "old value" }
run_rake_task
new_keys.each do |new_key|
expect(Setting[new_key]).to eq "old value"
end
old_keys.each do |old_key|
expect(Setting.where(key: old_key)).not_to exist
end
end
end
context "without existing old settings" do
it "initializes all settings with null value" do
Setting.destroy_all
run_rake_task
new_keys.each do |new_key|
expect(Setting[new_key]).to eq nil
end
old_keys.each do |old_key|
expect(Setting.where(key: old_key)).not_to exist
end
end
end
context "with already existing new settings" do
it "does not change the value of the new settings even if the old setting exist" do
Setting.destroy_all
old_keys.each { |old_key| Setting[old_key] = "old value" }
new_keys.each { |new_key| Setting[new_key] = "new value" }
run_rake_task
new_keys.each do |new_key|
expect(Setting[new_key]).to eq "new value"
end
old_keys.each do |old_key|
expect(Setting.where(key: old_key)).not_to exist
end
end
end
end
end