decidim-core 0.24.0.rc1 → 0.24.3
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of decidim-core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/javascripts/decidim.js.es6 +1 -0
- data/app/assets/javascripts/decidim/editor/linebreak_module.js.es6 +104 -0
- data/app/assets/javascripts/decidim/editor/modified_enter.js.es6 +15 -10
- data/app/assets/javascripts/decidim/gallery.js.es6 +5 -0
- data/app/assets/javascripts/decidim/map/controller/markers.js.es6 +13 -1
- data/app/cells/decidim/activity/show.erb +1 -1
- data/app/cells/decidim/activity_cell.rb +6 -0
- data/app/cells/decidim/address/details.erb +5 -5
- data/app/cells/decidim/address_cell.rb +21 -0
- data/app/cells/decidim/announcement_cell.rb +22 -7
- data/app/cells/decidim/content_blocks/hero_cell.rb +2 -2
- data/app/cells/decidim/content_blocks/last_activity_cell.rb +1 -1
- data/app/commands/decidim/destroy_account.rb +2 -0
- data/app/controllers/concerns/decidim/devise_controllers.rb +1 -0
- data/app/controllers/concerns/decidim/has_stored_path.rb +40 -0
- data/app/controllers/concerns/decidim/paginable.rb +8 -1
- data/app/controllers/decidim/application_controller.rb +1 -30
- data/app/forms/decidim/account_form.rb +1 -1
- data/app/helpers/decidim/application_helper.rb +1 -0
- data/app/helpers/decidim/cache_helper.rb +14 -0
- data/app/helpers/decidim/filters_helper.rb +0 -9
- data/app/helpers/decidim/map_helper.rb +1 -1
- data/app/mailers/concerns/decidim/localised_mailer.rb +4 -2
- data/app/mailers/decidim/notification_mailer.rb +0 -2
- data/app/models/decidim/follow.rb +1 -1
- data/app/models/decidim/user.rb +7 -1
- data/app/models/decidim/user_base_entity.rb +1 -1
- data/app/models/decidim/user_group.rb +4 -0
- data/app/queries/decidim/user_groups/accepted_memberships.rb +1 -1
- data/app/queries/decidim/user_groups/admin_memberships.rb +1 -1
- data/app/queries/decidim/user_groups/member_memberships.rb +1 -1
- data/app/views/decidim/application/_document.html.erb +1 -1
- data/app/views/decidim/newsletters/show.html.erb +1 -1
- data/app/views/decidim/reported_mailer/report.html.erb +9 -1
- data/app/views/decidim/searches/_filters_small_view.html.erb +1 -1
- data/config/locales/ca.yml +51 -13
- data/config/locales/cs.yml +43 -43
- data/config/locales/de.yml +5 -9
- data/config/locales/el.yml +0 -4
- data/config/locales/en.yml +2 -2
- data/config/locales/es-MX.yml +52 -2
- data/config/locales/es-PY.yml +52 -2
- data/config/locales/es.yml +55 -5
- data/config/locales/eu.yml +3 -3
- data/config/locales/fi-plain.yml +6 -6
- data/config/locales/fi.yml +11 -11
- data/config/locales/fr-CA.yml +0 -4
- data/config/locales/fr.yml +1 -5
- data/config/locales/gl.yml +4 -0
- data/config/locales/is-IS.yml +7 -0
- data/config/locales/it.yml +6 -10
- data/config/locales/ja.yml +0 -3
- data/config/locales/nl.yml +2 -2
- data/config/locales/no.yml +0 -4
- data/config/locales/pl.yml +8 -14
- data/config/locales/pt.yml +0 -4
- data/config/locales/ro-RO.yml +88 -6
- data/config/locales/ru.yml +4 -6
- data/config/locales/sk.yml +1 -1
- data/config/locales/sv.yml +77 -2
- data/config/locales/tr-TR.yml +2 -6
- data/config/locales/uk.yml +4 -6
- data/config/locales/zh-CN.yml +0 -3
- data/db/migrate/20201127114444_encrypt_authorization_metadatas.rb +1 -1
- data/db/migrate/20210302150803_invalidate_all_sessions_for_deleted_users.rb +11 -0
- data/db/migrate/20210310120640_add_followable_counter_cache_to_users.rb +16 -0
- data/lib/decidim/api/interfaces/categorizable_interface.rb +1 -1
- data/lib/decidim/attribute_encryptor.rb +9 -1
- data/lib/decidim/core/test.rb +0 -1
- data/lib/decidim/core/test/shared_examples/categorizable_interface_examples.rb +14 -6
- data/lib/decidim/core/test/shared_examples/controller_render_views.rb +8 -3
- data/lib/decidim/core/test/shared_examples/localised_email.rb +8 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/exporters/csv.rb +1 -1
- data/lib/decidim/followable.rb +6 -1
- data/lib/decidim/geocodable.rb +4 -0
- data/lib/decidim/record_encryptor.rb +20 -2
- data/lib/decidim/reportable.rb +2 -2
- metadata +17 -13
- data/lib/decidim/core/test/shared_examples/user_localised_email_examples.rb +0 -25
@@ -3,9 +3,7 @@
|
|
3
3
|
shared_context "with controller rendering the view" do
|
4
4
|
# Fix "No route matches" errors with the view.
|
5
5
|
before do
|
6
|
-
controller.class_eval do
|
7
|
-
helper_method :polymorphic_path, :url_for
|
8
|
-
|
6
|
+
controller.view_context_class.class_eval do
|
9
7
|
# Needed for the form_for to work (through decidim_form_for)
|
10
8
|
# The path shouldn't matter in the controller specs.
|
11
9
|
def polymorphic_path(_record, _options)
|
@@ -20,6 +18,13 @@ shared_context "with controller rendering the view" do
|
|
20
18
|
end
|
21
19
|
end
|
22
20
|
|
21
|
+
after do
|
22
|
+
# Ensure that the customized view context class is not being kept in the
|
23
|
+
# cache variable. Otherwise we might mess up the following specs using the
|
24
|
+
# same controller in the same run.
|
25
|
+
controller.class.remove_instance_variable(:@view_context_class)
|
26
|
+
end
|
27
|
+
|
23
28
|
# Rendering of the view is necessary to see the view renders correctly
|
24
29
|
# when there are errors on the form. This is hard to test with a
|
25
30
|
# system test because there is some JS blocking us to submit the form
|
@@ -22,4 +22,12 @@ shared_examples "localised email" do
|
|
22
22
|
expect(mail.body.encoded).to match(default_body)
|
23
23
|
end
|
24
24
|
end
|
25
|
+
|
26
|
+
context "when the user doesn't have an email" do
|
27
|
+
let(:user) { create(:user, :deleted) }
|
28
|
+
|
29
|
+
it "does nothing" do
|
30
|
+
expect(mail.deliver_now).to be_nil
|
31
|
+
end
|
32
|
+
end
|
25
33
|
end
|
data/lib/decidim/core/version.rb
CHANGED
data/lib/decidim/followable.rb
CHANGED
@@ -6,7 +6,12 @@ module Decidim
|
|
6
6
|
extend ActiveSupport::Concern
|
7
7
|
|
8
8
|
included do
|
9
|
-
has_many :follows,
|
9
|
+
has_many :follows,
|
10
|
+
as: :followable,
|
11
|
+
foreign_key: "decidim_followable_id",
|
12
|
+
foreign_type: "decidim_followable_type",
|
13
|
+
class_name: "Decidim::Follow",
|
14
|
+
counter_cache: :follows_count
|
10
15
|
has_many :followers, through: :follows, source: :user
|
11
16
|
end
|
12
17
|
|
data/lib/decidim/geocodable.rb
CHANGED
@@ -103,7 +103,7 @@ module Decidim
|
|
103
103
|
|
104
104
|
def decrypt_value(value)
|
105
105
|
Decidim::AttributeEncryptor.decrypt(value)
|
106
|
-
rescue ActiveSupport::MessageEncryptor::InvalidMessage
|
106
|
+
rescue ActiveSupport::MessageEncryptor::InvalidMessage, ActiveSupport::MessageVerifier::InvalidSignature
|
107
107
|
# Support for legacy unencrypted values. This is necessary e.g. when
|
108
108
|
# migrating the original unencrypted values to encrypted values.
|
109
109
|
value
|
@@ -116,7 +116,25 @@ module Decidim
|
|
116
116
|
def decrypt_hash_values(hash)
|
117
117
|
return hash unless hash.is_a?(Hash)
|
118
118
|
|
119
|
-
hash.transform_values
|
119
|
+
hash.transform_values do |value|
|
120
|
+
# If the value is not a String, it is likely a legacy unencrypted hash
|
121
|
+
# value. Also, `ActiveSupport::JSON.decode` expects the value passed to
|
122
|
+
# it to be a String. Otherwise it would raise a TypeError.
|
123
|
+
next value unless value.is_a?(String)
|
124
|
+
|
125
|
+
decrypted_value = decrypt_value(value)
|
126
|
+
|
127
|
+
# When handling legacy unencrypted hash values, the decrypted values
|
128
|
+
# could not be valid JSON strings. They could be normal strings that
|
129
|
+
# cannot be JSON decoded.
|
130
|
+
begin
|
131
|
+
ActiveSupport::JSON.decode(decrypted_value)
|
132
|
+
rescue TypeError
|
133
|
+
""
|
134
|
+
rescue JSON::ParserError
|
135
|
+
decrypted_value
|
136
|
+
end
|
137
|
+
end
|
120
138
|
end
|
121
139
|
|
122
140
|
def encrypt_hash_values(hash)
|
data/lib/decidim/reportable.rb
CHANGED
@@ -26,14 +26,14 @@ module Decidim
|
|
26
26
|
#
|
27
27
|
# Returns Boolean.
|
28
28
|
def hidden?
|
29
|
-
moderation&.hidden_at&.present?
|
29
|
+
moderation&.hidden_at&.present? || false
|
30
30
|
end
|
31
31
|
|
32
32
|
# Public: Checks if the reportable has been reported or not.
|
33
33
|
#
|
34
34
|
# Returns Boolean.
|
35
35
|
def reported?
|
36
|
-
moderation&.report_count&.positive?
|
36
|
+
moderation&.report_count&.positive? || false
|
37
37
|
end
|
38
38
|
|
39
39
|
# Public: The reported content url
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.24.
|
4
|
+
version: 0.24.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-06-01 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: active_link_to
|
@@ -88,14 +88,14 @@ dependencies:
|
|
88
88
|
requirements:
|
89
89
|
- - "~>"
|
90
90
|
- !ruby/object:Gem::Version
|
91
|
-
version: 2.2.
|
91
|
+
version: 2.2.1
|
92
92
|
type: :runtime
|
93
93
|
prerelease: false
|
94
94
|
version_requirements: !ruby/object:Gem::Requirement
|
95
95
|
requirements:
|
96
96
|
- - "~>"
|
97
97
|
- !ruby/object:Gem::Version
|
98
|
-
version: 2.2.
|
98
|
+
version: 2.2.1
|
99
99
|
- !ruby/object:Gem::Dependency
|
100
100
|
name: cells-erb
|
101
101
|
requirement: !ruby/object:Gem::Requirement
|
@@ -608,14 +608,14 @@ dependencies:
|
|
608
608
|
requirements:
|
609
609
|
- - "~>"
|
610
610
|
- !ruby/object:Gem::Version
|
611
|
-
version: 5.2.
|
611
|
+
version: 5.2.6
|
612
612
|
type: :runtime
|
613
613
|
prerelease: false
|
614
614
|
version_requirements: !ruby/object:Gem::Requirement
|
615
615
|
requirements:
|
616
616
|
- - "~>"
|
617
617
|
- !ruby/object:Gem::Version
|
618
|
-
version: 5.2.
|
618
|
+
version: 5.2.6
|
619
619
|
- !ruby/object:Gem::Dependency
|
620
620
|
name: rails-i18n
|
621
621
|
requirement: !ruby/object:Gem::Requirement
|
@@ -858,28 +858,28 @@ dependencies:
|
|
858
858
|
requirements:
|
859
859
|
- - '='
|
860
860
|
- !ruby/object:Gem::Version
|
861
|
-
version: 0.24.
|
861
|
+
version: 0.24.3
|
862
862
|
type: :runtime
|
863
863
|
prerelease: false
|
864
864
|
version_requirements: !ruby/object:Gem::Requirement
|
865
865
|
requirements:
|
866
866
|
- - '='
|
867
867
|
- !ruby/object:Gem::Version
|
868
|
-
version: 0.24.
|
868
|
+
version: 0.24.3
|
869
869
|
- !ruby/object:Gem::Dependency
|
870
870
|
name: decidim-dev
|
871
871
|
requirement: !ruby/object:Gem::Requirement
|
872
872
|
requirements:
|
873
873
|
- - '='
|
874
874
|
- !ruby/object:Gem::Version
|
875
|
-
version: 0.24.
|
875
|
+
version: 0.24.3
|
876
876
|
type: :development
|
877
877
|
prerelease: false
|
878
878
|
version_requirements: !ruby/object:Gem::Requirement
|
879
879
|
requirements:
|
880
880
|
- - '='
|
881
881
|
- !ruby/object:Gem::Version
|
882
|
-
version: 0.24.
|
882
|
+
version: 0.24.3
|
883
883
|
description: Adds core features so other engines can hook into the framework.
|
884
884
|
email:
|
885
885
|
- josepjaume@gmail.com
|
@@ -955,6 +955,7 @@ files:
|
|
955
955
|
- app/assets/javascripts/decidim/form_filter.component.test.js
|
956
956
|
- app/assets/javascripts/decidim/form_validator.es6
|
957
957
|
- app/assets/javascripts/decidim/foundation.js.es6
|
958
|
+
- app/assets/javascripts/decidim/gallery.js.es6
|
958
959
|
- app/assets/javascripts/decidim/geocoding.js.es6
|
959
960
|
- app/assets/javascripts/decidim/geocoding/attach_input.js.es6
|
960
961
|
- app/assets/javascripts/decidim/geocoding/format_address.js.es6
|
@@ -1370,6 +1371,7 @@ files:
|
|
1370
1371
|
- app/controllers/concerns/decidim/flaggable.rb
|
1371
1372
|
- app/controllers/concerns/decidim/force_authentication.rb
|
1372
1373
|
- app/controllers/concerns/decidim/form_factory.rb
|
1374
|
+
- app/controllers/concerns/decidim/has_stored_path.rb
|
1373
1375
|
- app/controllers/concerns/decidim/http_caching_disabler.rb
|
1374
1376
|
- app/controllers/concerns/decidim/impersonate_users.rb
|
1375
1377
|
- app/controllers/concerns/decidim/locale_switcher.rb
|
@@ -1492,6 +1494,7 @@ files:
|
|
1492
1494
|
- app/helpers/decidim/aria_selected_link_to_helper.rb
|
1493
1495
|
- app/helpers/decidim/attachments_helper.rb
|
1494
1496
|
- app/helpers/decidim/authorization_form_helper.rb
|
1497
|
+
- app/helpers/decidim/cache_helper.rb
|
1495
1498
|
- app/helpers/decidim/card_helper.rb
|
1496
1499
|
- app/helpers/decidim/categories_helper.rb
|
1497
1500
|
- app/helpers/decidim/cells_helper.rb
|
@@ -2190,6 +2193,8 @@ files:
|
|
2190
2193
|
- db/migrate/20201218144706_update_table_block_user_functionality.rb
|
2191
2194
|
- db/migrate/20201218145252_rename_decidim_user_fields_for_block_functionality.rb
|
2192
2195
|
- db/migrate/20210208134328_add_email_on_moderations_to_users.rb
|
2196
|
+
- db/migrate/20210302150803_invalidate_all_sessions_for_deleted_users.rb
|
2197
|
+
- db/migrate/20210310120640_add_followable_counter_cache_to_users.rb
|
2193
2198
|
- db/seeds.rb
|
2194
2199
|
- db/seeds/homepage_image.jpg
|
2195
2200
|
- lib/decidim/action_authorization.rb
|
@@ -2373,7 +2378,6 @@ files:
|
|
2373
2378
|
- lib/decidim/core/test/shared_examples/timestamps_interface_examples.rb
|
2374
2379
|
- lib/decidim/core/test/shared_examples/traceable_interface_examples.rb
|
2375
2380
|
- lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb
|
2376
|
-
- lib/decidim/core/test/shared_examples/user_localised_email_examples.rb
|
2377
2381
|
- lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb
|
2378
2382
|
- lib/decidim/core/version.rb
|
2379
2383
|
- lib/decidim/data_portability.rb
|
@@ -2590,9 +2594,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
2590
2594
|
version: '2.7'
|
2591
2595
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
2592
2596
|
requirements:
|
2593
|
-
- - "
|
2597
|
+
- - ">="
|
2594
2598
|
- !ruby/object:Gem::Version
|
2595
|
-
version:
|
2599
|
+
version: '0'
|
2596
2600
|
requirements: []
|
2597
2601
|
rubygems_version: 3.1.2
|
2598
2602
|
signing_key:
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
shared_examples "user localised email" do
|
6
|
-
let(:user) { create(:user, locale: locale, organization: organization) }
|
7
|
-
|
8
|
-
context "when the user has a custom locale" do
|
9
|
-
let(:locale) { "ca" }
|
10
|
-
|
11
|
-
it "uses the user's locale" do
|
12
|
-
expect(mail.subject).to eq(subject)
|
13
|
-
expect(mail.body.encoded).to match(body)
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
context "when the user does not have a custom locale" do
|
18
|
-
let(:locale) { nil }
|
19
|
-
|
20
|
-
it "uses the default locale" do
|
21
|
-
expect(mail.subject).to eq(default_subject)
|
22
|
-
expect(mail.body.encoded).to match(default_body)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|