decidim-cdtb 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.rubocop.yml +1 -1
- data/.ruby-version +1 -1
- data/CHANGELOG.md +7 -0
- data/Gemfile +4 -4
- data/Gemfile.lock +454 -451
- data/README.md +16 -1
- data/decidim-cdtb.gemspec +1 -2
- data/lib/decidim/cdtb/fixes/nickname_fixer.rb +6 -3
- data/lib/decidim/cdtb/fixes/you_tube_embeds_fixer.rb +1 -1
- data/lib/decidim/cdtb/participatory_spaces/add_content_blocks.rb +1 -1
- data/lib/decidim/cdtb/participatory_spaces/manages_content_blocks.rb +2 -2
- data/lib/decidim/cdtb/participatory_spaces/move_images_to_content_block.rb +1 -1
- data/lib/decidim/cdtb/spam/user_spam_detector.rb +1 -1
- data/lib/decidim/cdtb/storage/local_sharding.rb +1 -1
- data/lib/decidim/cdtb/task.rb +1 -1
- data/lib/decidim/cdtb/upgrades/upgrade_modules_task.rb +1 -1
- data/lib/decidim/cdtb/upgrades/validate_migrations_task.rb +1 -1
- data/lib/decidim/cdtb/users/remover.rb +1 -1
- data/lib/decidim/cdtb/version.rb +2 -2
- data/lib/decidim/cdtb.rb +2 -0
- data/lib/tasks/anonymize.rake +3 -3
- data/lib/tasks/census.rake +1 -1
- data/lib/tasks/fix_youtube_embeds.rake +1 -1
- data/lib/tasks/multitenants.rake +1 -1
- data/lib/tasks/participatory_spaces.rake +2 -2
- data/lib/tasks/spam.rake +1 -1
- data/lib/tasks/storage.rake +1 -1
- data/lib/tasks/upgrade.rake +2 -2
- data/lib/tasks/users.rake +33 -2
- metadata +8 -22
data/README.md
CHANGED
@@ -221,11 +221,26 @@ bundle exec rake cdtb:participatory_spaces:add_content_blocks[['extra_data relat
|
|
221
221
|
|
222
222
|
```
|
223
223
|
|
224
|
+
##### Usually executed when upgrading to Decidim 0.28
|
225
|
+
|
226
|
+
To add extra_data and related_documents to content blocks in participatory spaces
|
227
|
+
|
228
|
+
```
|
229
|
+
bundle exec rake cdtb:participatory_spaces:add_content_blocks[extra_data]
|
230
|
+
bundle exec rake cdtb:participatory_spaces:add_content_blocks[related_documents]
|
231
|
+
```
|
232
|
+
|
233
|
+
To move images to a new content block in participatory spaces
|
234
|
+
|
235
|
+
```
|
236
|
+
bundle exec rake cdtb:participatory_spaces:move_images_to_content_block
|
237
|
+
```
|
238
|
+
|
224
239
|
#### Move banner images to hero content block
|
225
240
|
|
226
241
|
In previous versions of Decidim (0.27 and previous) banner images are in participatory space configuration. Now, this image is in a content block but for old spaces are in configuration yet.
|
227
242
|
|
228
|
-
This task
|
243
|
+
This task moves the banner image to a hero content block.
|
229
244
|
|
230
245
|
Spaces supported:
|
231
246
|
|
data/decidim-cdtb.gemspec
CHANGED
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
|
|
12
12
|
spec.description = "A gem to help managing Decidim applications."
|
13
13
|
spec.homepage = "https://github.com/CodiTramuntana/decidim-module-cdtb"
|
14
14
|
spec.license = "MIT"
|
15
|
-
spec.required_ruby_version = ">= 3.
|
15
|
+
spec.required_ruby_version = ">= 3.1.7"
|
16
16
|
|
17
17
|
spec.metadata["homepage_uri"] = spec.homepage
|
18
18
|
spec.metadata["source_code_uri"] = spec.homepage
|
@@ -34,6 +34,5 @@ Gem::Specification.new do |spec|
|
|
34
34
|
spec.add_dependency "ruby-progressbar"
|
35
35
|
|
36
36
|
spec.add_development_dependency "decidim-dev", Decidim::Cdtb::DECIDIM_MIN_VERSION
|
37
|
-
spec.add_development_dependency "faker"
|
38
37
|
spec.metadata["rubygems_mfa_required"] = "true"
|
39
38
|
end
|
@@ -7,12 +7,15 @@ module Decidim
|
|
7
7
|
#
|
8
8
|
class NicknameFixer < ::Decidim::Cdtb::Task
|
9
9
|
def initialize
|
10
|
+
regex= Decidim::UserBaseEntity::REGEXP_NICKNAME.source.gsub("\\z", "\\Z")
|
11
|
+
@query= Decidim::User.where.not("nickname ~ ?", regex)
|
12
|
+
|
10
13
|
progress_bar= { title: "Decidim::User" }
|
11
|
-
super("FIX NICKNAMES", progress_bar:
|
14
|
+
super("FIX NICKNAMES", progress_bar:)
|
12
15
|
end
|
13
16
|
|
14
17
|
def prepare_execution(_ctx)
|
15
|
-
@num_users=
|
18
|
+
@num_users= @query.count
|
16
19
|
log_task_info("Checking #{@num_users} users...")
|
17
20
|
end
|
18
21
|
|
@@ -23,7 +26,7 @@ module Decidim
|
|
23
26
|
def do_execution(context)
|
24
27
|
progress_bar= context[:progress_bar]
|
25
28
|
|
26
|
-
|
29
|
+
@query.find_each do |user|
|
27
30
|
Decidim::User.validators_on(:nickname).each do |validator|
|
28
31
|
validator.validate_each(user, :nickname, user.nickname)
|
29
32
|
end
|
@@ -13,7 +13,7 @@ module Decidim
|
|
13
13
|
progress_bar= { title: self.class.name }
|
14
14
|
@processed_models = processed_models
|
15
15
|
@content_block_names = content_block_names
|
16
|
-
super("ADD CONTENT BLOCKS", progress_bar:
|
16
|
+
super("ADD CONTENT BLOCKS", progress_bar:)
|
17
17
|
end
|
18
18
|
|
19
19
|
attr_reader :num_added
|
@@ -18,7 +18,7 @@ module Decidim
|
|
18
18
|
log_task_step("Adding #{content_block_name} to #{space.slug}[#{space.id}]")
|
19
19
|
Decidim::ContentBlock.create(
|
20
20
|
decidim_organization_id: space.organization.id,
|
21
|
-
weight
|
21
|
+
weight:,
|
22
22
|
scope_name: scope_name(space),
|
23
23
|
scoped_resource_id: space.id,
|
24
24
|
manifest_name: content_block_name,
|
@@ -39,7 +39,7 @@ module Decidim
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def current_space_content_blocks(scope_name, organization, scoped_resource_id)
|
42
|
-
Decidim::ContentBlock.for_scope(scope_name, organization:
|
42
|
+
Decidim::ContentBlock.for_scope(scope_name, organization:).where(scoped_resource_id:)
|
43
43
|
end
|
44
44
|
|
45
45
|
def manifest_for(resource)
|
@@ -12,7 +12,7 @@ module Decidim
|
|
12
12
|
def initialize(processed_models)
|
13
13
|
progress_bar= { title: self.class.name }
|
14
14
|
@processed_models = processed_models
|
15
|
-
super("MOVING IMAGES...", progress_bar:
|
15
|
+
super("MOVING IMAGES...", progress_bar:)
|
16
16
|
end
|
17
17
|
|
18
18
|
attr_reader :num_added
|
@@ -17,7 +17,7 @@ module Decidim
|
|
17
17
|
def initialize(organization = nil)
|
18
18
|
@organization = organization
|
19
19
|
progress_bar = { title: "Decidim::User" }
|
20
|
-
super("SPAM DETECTOR", progress_bar:
|
20
|
+
super("SPAM DETECTOR", progress_bar:)
|
21
21
|
end
|
22
22
|
|
23
23
|
def prepare_execution(_ctx)
|
@@ -11,7 +11,7 @@ module Decidim
|
|
11
11
|
class LocalSharding < ::Decidim::Cdtb::Task
|
12
12
|
def initialize
|
13
13
|
progress_bar= { title: "ActiveStorage::Blob" }
|
14
|
-
super("S3 to local: DO SHARDING", progress_bar:
|
14
|
+
super("S3 to local: DO SHARDING", progress_bar:)
|
15
15
|
end
|
16
16
|
|
17
17
|
def prepare_execution(_ctx)
|
data/lib/decidim/cdtb/task.rb
CHANGED
@@ -29,7 +29,7 @@ module Decidim
|
|
29
29
|
init
|
30
30
|
ctx= {}
|
31
31
|
prepare_execution(ctx)
|
32
|
-
ctx[:progress_bar]= ProgressBar.create(total: total_items, title:
|
32
|
+
ctx[:progress_bar]= ProgressBar.create(total: total_items, title:) if has_progress?
|
33
33
|
do_execution(ctx)
|
34
34
|
end_execution(ctx)
|
35
35
|
finish
|
@@ -11,7 +11,7 @@ module Decidim
|
|
11
11
|
@csv_path = csv_path
|
12
12
|
@reporter_user_email = reporter_user_email
|
13
13
|
progress_bar = { title: "Decidim::User" }
|
14
|
-
super("USER REMOVER", progress_bar:
|
14
|
+
super("USER REMOVER", progress_bar:)
|
15
15
|
end
|
16
16
|
|
17
17
|
def prepare_execution(_ctx); end
|
data/lib/decidim/cdtb/version.rb
CHANGED
data/lib/decidim/cdtb.rb
CHANGED
data/lib/tasks/anonymize.rake
CHANGED
@@ -12,7 +12,7 @@ namespace :cdtb do
|
|
12
12
|
|
13
13
|
def with_progress(collection, name:)
|
14
14
|
total = collection.count
|
15
|
-
progressbar = create_progress_bar(total:
|
15
|
+
progressbar = create_progress_bar(total:)
|
16
16
|
|
17
17
|
puts "Anonymizing #{total} #{name}...\n"
|
18
18
|
skip_logs do
|
@@ -27,7 +27,7 @@ namespace :cdtb do
|
|
27
27
|
ProgressBar.create(
|
28
28
|
progress_mark: " ",
|
29
29
|
remainder_mark: "\u{FF65}",
|
30
|
-
total
|
30
|
+
total:,
|
31
31
|
format: "%a %e %b\u{15E7}%i %p%% %t"
|
32
32
|
)
|
33
33
|
end
|
@@ -73,7 +73,7 @@ namespace :cdtb do
|
|
73
73
|
identity.update_columns(uid: "anonymized-identity-#{identity.id}")
|
74
74
|
end
|
75
75
|
|
76
|
-
Decidim::Authorization.where(user:
|
76
|
+
Decidim::Authorization.where(user:).find_each do |authorization|
|
77
77
|
authorization.update_columns(unique_id: authorization.id)
|
78
78
|
end
|
79
79
|
end
|
data/lib/tasks/census.rake
CHANGED
@@ -51,7 +51,7 @@ namespace :cdtb do
|
|
51
51
|
else
|
52
52
|
Decidim::Organization.find(arguments.first)
|
53
53
|
end
|
54
|
-
handler.with_context(current_organization:
|
54
|
+
handler.with_context(current_organization:)
|
55
55
|
|
56
56
|
credentials= arguments.map { |arg| arg.split(":") }
|
57
57
|
puts "Setting credentials: #{credentials}"
|
data/lib/tasks/multitenants.rake
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
#
|
6
6
|
namespace :cdtb do
|
7
7
|
require "decidim/cdtb/tasks_utils"
|
8
|
-
include
|
8
|
+
include Decidim::Cdtb::TasksUtils
|
9
9
|
|
10
10
|
desc <<~EODESC
|
11
11
|
Finds information about the Organization, or Organizations, searching by the :host_term argument ignorecase.
|
@@ -42,7 +42,7 @@ namespace :cdtb do
|
|
42
42
|
return "Please, select an option"
|
43
43
|
end
|
44
44
|
|
45
|
-
adder =
|
45
|
+
adder = Decidim::Cdtb::ParticipatorySpaces::AddContentBlocks.new(processed_models, content_block_names)
|
46
46
|
adder.execute!
|
47
47
|
end
|
48
48
|
|
@@ -81,7 +81,7 @@ namespace :cdtb do
|
|
81
81
|
return "Please, select an option"
|
82
82
|
end
|
83
83
|
|
84
|
-
adder =
|
84
|
+
adder = Decidim::Cdtb::ParticipatorySpaces::MoveImagesToContentBlock.new(processed_models)
|
85
85
|
adder.execute!
|
86
86
|
end
|
87
87
|
end
|
data/lib/tasks/spam.rake
CHANGED
@@ -6,7 +6,7 @@ namespace :cdtb do
|
|
6
6
|
task :users, %i[org_id] => :environment do |_task, args|
|
7
7
|
organization = args.org_id.present? ? Decidim::Organization.find(args.org_id) : nil
|
8
8
|
|
9
|
-
detector =
|
9
|
+
detector = Decidim::Cdtb::Spam::UserSpamDetector.new(organization)
|
10
10
|
detector.execute!
|
11
11
|
end
|
12
12
|
end
|
data/lib/tasks/storage.rake
CHANGED
data/lib/tasks/upgrade.rake
CHANGED
@@ -6,13 +6,13 @@
|
|
6
6
|
namespace :cdtb do
|
7
7
|
namespace :upgrades do
|
8
8
|
require "decidim/cdtb/tasks_utils"
|
9
|
-
include
|
9
|
+
include Decidim::Cdtb::TasksUtils
|
10
10
|
|
11
11
|
desc <<~EODESC
|
12
12
|
Validates that migrations from all gems in the Gemfile have been installed.
|
13
13
|
EODESC
|
14
14
|
task validate_migrations: [:environment] do
|
15
|
-
task=
|
15
|
+
task= Decidim::Cdtb::Upgrades::ValidateMigrationsTask.new
|
16
16
|
task.execute!
|
17
17
|
raise("There are pending migrations") if task.pending_migrations?
|
18
18
|
end
|
data/lib/tasks/users.rake
CHANGED
@@ -8,7 +8,7 @@ namespace :cdtb do
|
|
8
8
|
Fix Decidim::User's nicknames.
|
9
9
|
EODESC
|
10
10
|
task fix_nicknames: [:environment] do
|
11
|
-
fixer=
|
11
|
+
fixer= Decidim::Cdtb::Fixes::NicknameFixer.new
|
12
12
|
fixer.execute!
|
13
13
|
end
|
14
14
|
|
@@ -16,8 +16,39 @@ namespace :cdtb do
|
|
16
16
|
Remove Decidim::User's by IDs in a CSV.
|
17
17
|
EODESC
|
18
18
|
task :remove, %i[csv_path reporter_user_email] => [:environment] do |_taks, args|
|
19
|
-
service =
|
19
|
+
service = Decidim::Cdtb::Users::Remover.new(args.csv_path, args.reporter_user_email)
|
20
20
|
service.execute!
|
21
21
|
end
|
22
|
+
|
23
|
+
desc <<~EODESC
|
24
|
+
Exports the list of admins to a CSV file. If +org_id+ is set, filters by that organization.
|
25
|
+
EODESC
|
26
|
+
task :list_admins, %i[org_id] => [:environment] do |_taks, args|
|
27
|
+
organization_id= args.org_id
|
28
|
+
|
29
|
+
query= Decidim::User.includes(:organization).where(admin: true)
|
30
|
+
filename= "admins"
|
31
|
+
|
32
|
+
if organization_id.present?
|
33
|
+
query= query.where(organization_id:)
|
34
|
+
filename+= "-org#{organization_id}"
|
35
|
+
end
|
36
|
+
|
37
|
+
CSV.open("#{filename}.csv", "wb") do |csv|
|
38
|
+
csv << ["ID", "Organization ID", "Organization", "Name", "Email", "Created at", "Last sign in at"]
|
39
|
+
|
40
|
+
query.find_each do |admin|
|
41
|
+
csv << [
|
42
|
+
admin.id,
|
43
|
+
admin.organization.id,
|
44
|
+
admin.organization.name,
|
45
|
+
admin.name,
|
46
|
+
admin.email,
|
47
|
+
admin.created_at.strftime(Decidim::Cdtb::STRFTIME_FORMAT),
|
48
|
+
admin.last_sign_in_at&.strftime(Decidim::Cdtb::STRFTIME_FORMAT)
|
49
|
+
]
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
22
53
|
end
|
23
54
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-cdtb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Oliver Valls
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-04-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.28.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.28.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rails
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,28 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.28.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: 0.
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: faker
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :development
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - ">="
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version: 0.28.0
|
83
69
|
description: A gem to help managing Decidim applications.
|
84
70
|
email:
|
85
71
|
- 199462+tramuntanal@users.noreply.github.com
|
@@ -151,14 +137,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
151
137
|
requirements:
|
152
138
|
- - ">="
|
153
139
|
- !ruby/object:Gem::Version
|
154
|
-
version: 3.
|
140
|
+
version: 3.1.7
|
155
141
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - ">="
|
158
144
|
- !ruby/object:Gem::Version
|
159
145
|
version: '0'
|
160
146
|
requirements: []
|
161
|
-
rubygems_version: 3.
|
147
|
+
rubygems_version: 3.3.27
|
162
148
|
signing_key:
|
163
149
|
specification_version: 4
|
164
150
|
summary: CodiTramuntana's Decidim Toolbelt (cdtb).
|