Skip to content

Commit

Permalink
Merge branch 'master' of github.com:AjuntamentdeBarcelona/decidim-bar…
Browse files Browse the repository at this point in the history
…celona into feat/appsignal
  • Loading branch information
fblupi committed Nov 21, 2024
2 parents 5ec4545 + 70a59fb commit e377018
Show file tree
Hide file tree
Showing 3 changed files with 108 additions and 0 deletions.
25 changes: 25 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,31 @@ docker-compose run --rm app bundle exec rake db:create db:schema:load db:seed
docker-compose up
```

## Available tasks

### Notifications removal

You can remove old notifications by running the `notifications:remove_old` task. You can specify the date until you want to preserve notifications and the date from which you will
remove them. By default it will delete all the notifications from 2017-01-01 older than 1 year if no params are provided.

For example, this one will remove all the notifications from 2023-11-12 to 2024-01-01:

```bash
bundle exec rake notifications:destroy_old["2024-01-01","2023-11-12"]
```

### Update 2024 Participatory budget proposals to fix missing translations

The proposals inside the 2024 participatory budget, sometimes, are created without the translations of the `copy_id` generated using the Term Customizer module.

This rake task will update the content of the proposals that have not translated the content and save them with the correct translation.

You can call this tasks for the two languages being used in the participatory process (Catalan and Spanish):

```bash
bundle exec rake proposals_budget_2024_translations:update_ca_translations
```

## License

Code published under AFFERO GPL v3 (see [LICENSE-AGPLv3.txt](LICENSE-AGPLv3.txt))
Expand Down
29 changes: 29 additions & 0 deletions lib/tasks/notifications.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# frozen_string_literal: true

namespace :notifications do
desc "Destroy old notifications"
task :destroy_old, [:to, :from] => :environment do |_task, args|
args.with_defaults(
to: 1.year.ago.strftime("%Y-%m-%d"),
from: "2017-01-01"
)

current_date = Date.parse(args.from).beginning_of_month
end_date = Date.parse(args.to).beginning_of_month
dates = []
while current_date <= end_date
dates << current_date.strftime("%Y-%m-%d")
current_date = current_date.next_month
end

total = 0
dates.each do |date|
notifications = Decidim::Notification.where("created_at < ?", date)
total += notifications.count
puts "Destroying #{notifications.count} notifications older than #{date}..."
notifications.destroy_all
end

puts "You have successfully destroyed #{total} notifications."
end
end
54 changes: 54 additions & 0 deletions lib/tasks/proposals_budget_2024_translations.rake
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# frozen_string_literal: true

namespace :proposals_budget_2024_translations do
desc "[CATALAN] Fix translations in proposals for the 2024 particiatory budget"
task update_ca_translations: :environment do
updated_content = {
"decidim.barcelona.pressupostos.2024.pregunta2.enunciat" => "Estat actual i problemes a resoldre:",
"decidim.barcelona.pressupostos.2024.pregunta3.enunciat" => "Descripció de la proposta i impacte esperat:",
"decidim.barcelona.pressupostos.2024.pregunta4.enunciat" => "Cost aproximat (opcional):",
"decidim.barcelona.pressupostos.2024.pregunta5.enunciat" => "A qui més pot interessar la proposta i estaria bé tenir en compte en el projecte?"
}

update_content_for_lang "ca", updated_content
end

desc "[SPANISH] Fix translations in proposals for the 2024 particiatory budget"
task update_es_translations: :environment do
updated_content = {
"decidim.barcelona.pressupostos.2024.pregunta2.enunciat" => "Estado actual y problemas a resolver:",
"decidim.barcelona.pressupostos.2024.pregunta3.enunciat" => "Descripción de la propuesta e impacto esperado:",
"decidim.barcelona.pressupostos.2024.pregunta4.enunciat" => "Coste aproximado (opcional):",
"decidim.barcelona.pressupostos.2024.pregunta5.enunciat" => "¿A quién más puede interesarle la propuesta y estaría bien tener en cuenta en el proyecto?"
}

update_content_for_lang "es", updated_content
end

def update_content_for_lang(lang, content)
puts "Processing lang #{lang}"

proposals = Decidim::Proposals::Proposal.where(
"body ->> '#{lang}' LIKE ?", "%decidim.barcelona.pressupostos.2024.pregunta2.enunciat%"
)

puts "There are #{proposals.count} proposals to update"

proposals.find_each do |proposal|
puts "Processing Proposal ID: #{proposal.id}"

body = proposal.body[lang]

content.each do |copy_id, new_text|
puts "Updating #{copy_id} for Proposal ID: #{proposal.id}"

body[copy_id] = new_text
end

proposal.body[lang] = body
proposal.save!

puts "Successfully updated #{lang} content for Proposal ID: #{proposal.id}"
end
end
end

0 comments on commit e377018

Please sign in to comment.