decidim-assemblies 0.17.2 → 0.18.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/app/cells/decidim/assemblies/assembly_m/footer.erb +1 -1
- data/app/cells/decidim/assemblies/assembly_m_cell.rb +24 -1
- data/app/commands/decidim/assemblies/admin/copy_assembly.rb +1 -0
- data/app/controllers/decidim/assemblies/admin/application_controller.rb +5 -4
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +20 -10
- data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +6 -4
- data/app/controllers/decidim/assemblies/application_controller.rb +6 -5
- data/app/controllers/decidim/assemblies/assemblies_controller.rb +18 -22
- data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +1 -1
- data/app/helpers/decidim/assemblies/assemblies_helper.rb +6 -0
- data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +18 -7
- data/app/models/decidim/assembly.rb +36 -10
- data/app/permissions/decidim/assemblies/permissions.rb +1 -1
- data/app/queries/decidim/assemblies/admin/admin_users.rb +8 -1
- data/app/queries/decidim/assemblies/organization_published_assemblies.rb +2 -2
- data/app/queries/decidim/assemblies/visible_assemblies.rb +1 -8
- data/app/services/decidim/assemblies/assembly_search.rb +18 -0
- data/app/views/decidim/assemblies/_filter_by_type.html.erb +13 -12
- data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +133 -73
- data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +29 -10
- data/app/views/decidim/assemblies/assemblies/_count.html.erb +1 -1
- data/app/views/decidim/assemblies/assemblies/_parent_assemblies.html.erb +2 -1
- data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +1 -1
- data/app/views/decidim/assemblies/assemblies/index.html.erb +1 -0
- data/app/views/decidim/assemblies/assemblies/index.js.erb +2 -1
- data/app/views/decidim/assemblies/assemblies/show.html.erb +42 -36
- data/config/locales/ar-SA.yml +9 -2
- data/config/locales/ar.yml +386 -0
- data/config/locales/ca.yml +9 -2
- data/config/locales/cs.yml +8 -2
- data/config/locales/de.yml +8 -2
- data/config/locales/en.yml +9 -2
- data/config/locales/es-MX.yml +9 -2
- data/config/locales/es-PY.yml +9 -2
- data/config/locales/es.yml +9 -2
- data/config/locales/eu.yml +8 -2
- data/config/locales/fi-plain.yml +9 -2
- data/config/locales/fi.yml +9 -2
- data/config/locales/fr.yml +8 -2
- data/config/locales/gl.yml +8 -2
- data/config/locales/hu.yml +9 -2
- data/config/locales/id-ID.yml +8 -2
- data/config/locales/it.yml +9 -2
- data/config/locales/nl.yml +8 -2
- data/config/locales/pl.yml +8 -2
- data/config/locales/pt-BR.yml +8 -2
- data/config/locales/pt.yml +8 -2
- data/config/locales/ru.yml +1 -2
- data/config/locales/sv.yml +8 -2
- data/config/locales/tr-TR.yml +9 -2
- data/config/locales/uk.yml +1 -2
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +9 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99efc61ca1742e63f78a52fa33da8866b60669bbeca04b039814da09cfa148c4
|
4
|
+
data.tar.gz: 7ab6f6d231c564795a4319ddb527824f728108b7ee43f057ed86f68e277d682b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8bfc9691a80e376d750ca2aef2895d8b1eb4aa60fbd5059498676e6c5fcb7815b46dd62ab3e2059e20c38d5ed9fa6b5acd409a07478cd982f43838d7d9c4f26f
|
7
|
+
data.tar.gz: bc458c5c4ef271e1ffa85d988849111d0002d6e362b2c55b0df0da105d88b4bd9ae18d92b480c91c485553fc6c6ba99100f7c5564bd8f4ba31b71569c5e2e385
|
@@ -18,6 +18,10 @@ module Decidim
|
|
18
18
|
true
|
19
19
|
end
|
20
20
|
|
21
|
+
def has_children?
|
22
|
+
model.children.any?
|
23
|
+
end
|
24
|
+
|
21
25
|
def resource_path
|
22
26
|
Decidim::Assemblies::Engine.routes.url_helpers.assembly_path(model)
|
23
27
|
end
|
@@ -27,7 +31,26 @@ module Decidim
|
|
27
31
|
end
|
28
32
|
|
29
33
|
def statuses
|
30
|
-
|
34
|
+
return super unless has_children?
|
35
|
+
[:creation_date, :follow, :children_count]
|
36
|
+
end
|
37
|
+
|
38
|
+
def children_count_status
|
39
|
+
content_tag(
|
40
|
+
:strong,
|
41
|
+
t("layouts.decidim.assemblies.index.children")
|
42
|
+
) + " " + children_assemblies_visible_for_user
|
43
|
+
end
|
44
|
+
|
45
|
+
def children_assemblies_visible_for_user
|
46
|
+
assemblies = model.children.published
|
47
|
+
|
48
|
+
if current_user
|
49
|
+
return assemblies.count.to_s if current_user.admin
|
50
|
+
assemblies.visible_for(current_user).count.to_s
|
51
|
+
else
|
52
|
+
assemblies.public_spaces.count.to_s
|
53
|
+
end
|
31
54
|
end
|
32
55
|
|
33
56
|
def resource_icon
|
@@ -53,6 +53,7 @@ module Decidim
|
|
53
53
|
parent: @assembly.parent,
|
54
54
|
developer_group: @assembly.developer_group,
|
55
55
|
local_area: @assembly.local_area,
|
56
|
+
area: @assembly.area,
|
56
57
|
target: @assembly.target,
|
57
58
|
participatory_scope: @assembly.participatory_scope,
|
58
59
|
participatory_structure: @assembly.participatory_structure,
|
@@ -5,6 +5,10 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# The main admin application controller for assemblies
|
7
7
|
class ApplicationController < Decidim::Admin::ApplicationController
|
8
|
+
register_permissions(::Decidim::Assemblies::Admin::ApplicationController,
|
9
|
+
Decidim::Assemblies::Permissions,
|
10
|
+
Decidim::Admin::Permissions)
|
11
|
+
|
8
12
|
private
|
9
13
|
|
10
14
|
def permissions_context
|
@@ -14,10 +18,7 @@ module Decidim
|
|
14
18
|
end
|
15
19
|
|
16
20
|
def permission_class_chain
|
17
|
-
|
18
|
-
Decidim::Assemblies::Permissions,
|
19
|
-
Decidim::Admin::Permissions
|
20
|
-
]
|
21
|
+
::Decidim.permissions_registry.chain_for(::Decidim::Assemblies::Admin::ApplicationController)
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
@@ -6,7 +6,8 @@ module Decidim
|
|
6
6
|
# Controller that allows managing assemblies.
|
7
7
|
#
|
8
8
|
class AssembliesController < Decidim::Assemblies::Admin::ApplicationController
|
9
|
-
|
9
|
+
include Decidim::Paginable
|
10
|
+
helper_method :current_assembly, :parent_assembly, :parent_assemblies, :current_participatory_space, :query
|
10
11
|
layout "decidim/admin/assemblies"
|
11
12
|
|
12
13
|
before_action :set_all_assemblies, except: [:index]
|
@@ -71,12 +72,26 @@ module Decidim
|
|
71
72
|
|
72
73
|
private
|
73
74
|
|
75
|
+
def organization_assemblies
|
76
|
+
@organization_assemblies ||= OrganizationAssemblies.new(current_user.organization).query
|
77
|
+
end
|
78
|
+
|
79
|
+
def query
|
80
|
+
organization_assemblies
|
81
|
+
.where(parent_id: params[:parent_id])
|
82
|
+
.ransack(params[:q])
|
83
|
+
end
|
84
|
+
|
85
|
+
def collection
|
86
|
+
@collection ||= paginate(query.result)
|
87
|
+
end
|
88
|
+
|
74
89
|
def set_all_assemblies
|
75
|
-
@all_assemblies =
|
90
|
+
@all_assemblies = organization_assemblies
|
76
91
|
end
|
77
92
|
|
78
93
|
def current_assembly
|
79
|
-
scope =
|
94
|
+
scope = organization_assemblies
|
80
95
|
@current_assembly ||= scope.where(slug: params[:slug]).or(
|
81
96
|
scope.where(id: params[:slug])
|
82
97
|
).first
|
@@ -85,16 +100,11 @@ module Decidim
|
|
85
100
|
alias current_participatory_space current_assembly
|
86
101
|
|
87
102
|
def parent_assembly
|
88
|
-
@parent_assembly ||=
|
103
|
+
@parent_assembly ||= organization_assemblies.find_by(id: params[:parent_id])
|
89
104
|
end
|
90
105
|
|
91
106
|
def parent_assemblies
|
92
|
-
@parent_assemblies ||=
|
93
|
-
end
|
94
|
-
|
95
|
-
def collection
|
96
|
-
parent_id = params[:parent_id].presence
|
97
|
-
@collection ||= OrganizationAssemblies.new(current_user.organization).query.where(parent_id: parent_id)
|
107
|
+
@parent_assemblies ||= organization_assemblies.where(parent_id: nil)
|
98
108
|
end
|
99
109
|
|
100
110
|
def assembly_params
|
@@ -12,6 +12,11 @@ module Decidim
|
|
12
12
|
module AssemblyAdmin
|
13
13
|
extend ActiveSupport::Concern
|
14
14
|
|
15
|
+
RegistersPermissions
|
16
|
+
.register_permissions(::Decidim::Assemblies::Admin::Concerns::AssemblyAdmin,
|
17
|
+
Decidim::Assemblies::Permissions,
|
18
|
+
Decidim::Admin::Permissions)
|
19
|
+
|
15
20
|
included do
|
16
21
|
include Decidim::Admin::ParticipatorySpaceAdminContext
|
17
22
|
participatory_space_admin_layout
|
@@ -35,10 +40,7 @@ module Decidim
|
|
35
40
|
end
|
36
41
|
|
37
42
|
def permission_class_chain
|
38
|
-
|
39
|
-
Decidim::Assemblies::Permissions,
|
40
|
-
Decidim::Admin::Permissions
|
41
|
-
]
|
43
|
+
PermissionsRegistry.chain_for(AssemblyAdmin)
|
42
44
|
end
|
43
45
|
end
|
44
46
|
end
|
@@ -8,6 +8,11 @@ module Decidim
|
|
8
8
|
helper Decidim::Assemblies::AssembliesHelper
|
9
9
|
include NeedsPermission
|
10
10
|
|
11
|
+
register_permissions(Decidim::Assemblies::ApplicationController,
|
12
|
+
::Decidim::Assemblies::Permissions,
|
13
|
+
::Decidim::Admin::Permissions,
|
14
|
+
::Decidim::Permissions)
|
15
|
+
|
11
16
|
private
|
12
17
|
|
13
18
|
def permissions_context
|
@@ -17,11 +22,7 @@ module Decidim
|
|
17
22
|
end
|
18
23
|
|
19
24
|
def permission_class_chain
|
20
|
-
|
21
|
-
Decidim::Assemblies::Permissions,
|
22
|
-
Decidim::Admin::Permissions,
|
23
|
-
Decidim::Permissions
|
24
|
-
]
|
25
|
+
::Decidim.permissions_registry.chain_for(::Decidim::Assemblies::ApplicationController)
|
25
26
|
end
|
26
27
|
|
27
28
|
def permission_scope
|
@@ -2,19 +2,13 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Assemblies
|
5
|
-
# A controller that holds the logic to show Assemblies in a
|
6
|
-
# public layout.
|
5
|
+
# A controller that holds the logic to show Assemblies in a public layout.
|
7
6
|
class AssembliesController < Decidim::Assemblies::ApplicationController
|
8
7
|
include ParticipatorySpaceContext
|
9
8
|
participatory_space_layout only: :show
|
9
|
+
include FilterResource
|
10
10
|
|
11
|
-
|
12
|
-
helper Decidim::IconHelper
|
13
|
-
helper Decidim::WidgetUrlsHelper
|
14
|
-
helper Decidim::SanitizeHelper
|
15
|
-
helper Decidim::ResourceReferenceHelper
|
16
|
-
|
17
|
-
helper_method :collection, :parent_assemblies, :promoted_assemblies, :assemblies, :stats, :assembly_participatory_processes
|
11
|
+
helper_method :parent_assemblies, :promoted_assemblies, :stats, :assembly_participatory_processes
|
18
12
|
|
19
13
|
def index
|
20
14
|
enforce_permission_to :list, :assembly
|
@@ -54,6 +48,18 @@ module Decidim
|
|
54
48
|
|
55
49
|
private
|
56
50
|
|
51
|
+
def search_klass
|
52
|
+
AssemblySearch
|
53
|
+
end
|
54
|
+
|
55
|
+
def default_filter_params
|
56
|
+
{
|
57
|
+
scope_id: nil,
|
58
|
+
area_id: nil,
|
59
|
+
assembly_type: "all"
|
60
|
+
}
|
61
|
+
end
|
62
|
+
|
57
63
|
def current_participatory_space
|
58
64
|
return unless params[:slug]
|
59
65
|
|
@@ -66,18 +72,12 @@ module Decidim
|
|
66
72
|
@published_assemblies ||= OrganizationPublishedAssemblies.new(current_organization, current_user)
|
67
73
|
end
|
68
74
|
|
69
|
-
def
|
70
|
-
@
|
75
|
+
def promoted_assemblies
|
76
|
+
@promoted_assemblies ||= published_assemblies | PromotedAssemblies.new
|
71
77
|
end
|
72
78
|
|
73
79
|
def parent_assemblies
|
74
|
-
|
75
|
-
end
|
76
|
-
|
77
|
-
alias collection parent_assemblies
|
78
|
-
|
79
|
-
def promoted_assemblies
|
80
|
-
@promoted_assemblies ||= assemblies | PromotedAssemblies.new
|
80
|
+
search.results.parent_assemblies.order(promoted: :desc)
|
81
81
|
end
|
82
82
|
|
83
83
|
def stats
|
@@ -87,10 +87,6 @@ module Decidim
|
|
87
87
|
def assembly_participatory_processes
|
88
88
|
@assembly_participatory_processes ||= @current_participatory_space.linked_participatory_space_resources(:participatory_processes, "included_participatory_processes")
|
89
89
|
end
|
90
|
-
|
91
|
-
def current_filter
|
92
|
-
params[:filter] || "all"
|
93
|
-
end
|
94
90
|
end
|
95
91
|
end
|
96
92
|
end
|
@@ -23,7 +23,7 @@ module Decidim
|
|
23
23
|
|
24
24
|
validates :designation_date, presence: true
|
25
25
|
validates :full_name, presence: true, unless: proc { |object| object.existing_user }
|
26
|
-
validates :position, inclusion: { in: Decidim::AssemblyMember::POSITIONS }
|
26
|
+
validates :position, presence: true, inclusion: { in: Decidim::AssemblyMember::POSITIONS }
|
27
27
|
validates :position_other, presence: true, if: ->(form) { form.position == "other" }
|
28
28
|
validates :ceased_date, date: { after: :designation_date, allow_blank: true }
|
29
29
|
validates :user, presence: true, if: proc { |object| object.existing_user }
|
@@ -5,6 +5,12 @@ module Decidim
|
|
5
5
|
# Helpers related to the Assemblies layout.
|
6
6
|
module AssembliesHelper
|
7
7
|
include Decidim::ResourceHelper
|
8
|
+
include Decidim::AttachmentsHelper
|
9
|
+
include Decidim::IconHelper
|
10
|
+
include Decidim::WidgetUrlsHelper
|
11
|
+
include Decidim::SanitizeHelper
|
12
|
+
include Decidim::ResourceReferenceHelper
|
13
|
+
include Decidim::FiltersHelper
|
8
14
|
include FilterAssembliesHelper
|
9
15
|
|
10
16
|
# Public: Returns the characteristics of an assembly in a readable format like
|
@@ -3,25 +3,36 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Assemblies
|
5
5
|
# Helpers related to the Assemblies filter by type.
|
6
|
+
#
|
7
|
+
# `filter` returns a Filter object from Decidim::FilterResource
|
6
8
|
module FilterAssembliesHelper
|
7
9
|
def available_filters
|
8
|
-
%w(all
|
10
|
+
%w(all) + Assembly::ASSEMBLY_TYPES
|
9
11
|
end
|
10
12
|
|
11
|
-
def filter_link(
|
12
|
-
|
13
|
+
def filter_link(filter_name)
|
14
|
+
Decidim::Assemblies::Engine
|
15
|
+
.routes
|
16
|
+
.url_helpers
|
17
|
+
.assemblies_path(
|
18
|
+
filter: {
|
19
|
+
scope_id: filter.scope_id,
|
20
|
+
area_id: filter.area_id,
|
21
|
+
assembly_type: filter_name
|
22
|
+
}
|
23
|
+
)
|
13
24
|
end
|
14
25
|
|
15
26
|
def help_text
|
16
27
|
t("help", scope: "decidim.assemblies.filter")
|
17
28
|
end
|
18
29
|
|
19
|
-
def
|
20
|
-
|
30
|
+
def filter_name(filter_key)
|
31
|
+
t(filter_key, scope: "decidim.assemblies.filter")
|
21
32
|
end
|
22
33
|
|
23
|
-
def
|
24
|
-
|
34
|
+
def current_filter_name
|
35
|
+
filter_name(filter.assembly_type)
|
25
36
|
end
|
26
37
|
end
|
27
38
|
end
|
@@ -68,12 +68,25 @@ module Decidim
|
|
68
68
|
after_create :set_parents_path
|
69
69
|
after_update :set_parents_path, :update_children_paths, if: :saved_change_to_parent_id?
|
70
70
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
71
|
+
# Overwriting existing method Decidim::HasPrivateUsers.visible_for
|
72
|
+
def self.visible_for(user)
|
73
|
+
if user
|
74
|
+
return all if user.admin?
|
75
|
+
|
76
|
+
left_outer_joins(:participatory_space_private_users).where(
|
77
|
+
%{private_space = false OR
|
78
|
+
(private_space = true AND is_transparent = true) OR
|
79
|
+
decidim_participatory_space_private_users.decidim_user_id = ?}, user.id
|
80
|
+
).distinct
|
81
|
+
else
|
82
|
+
public_spaces
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
# Overwriting existing method Decidim::HasPrivateUsers.public_spaces
|
87
|
+
def self.public_spaces
|
88
|
+
where(private_space: false).or(where(private_space: true).where(is_transparent: true))
|
89
|
+
end
|
77
90
|
|
78
91
|
# Scope to return only the promoted assemblies.
|
79
92
|
#
|
@@ -82,12 +95,14 @@ module Decidim
|
|
82
95
|
where(promoted: true)
|
83
96
|
end
|
84
97
|
|
85
|
-
|
86
|
-
|
98
|
+
# Return parent assemblies.
|
99
|
+
def self.parent_assemblies
|
100
|
+
where(parent_id: nil)
|
87
101
|
end
|
88
102
|
|
89
|
-
|
90
|
-
|
103
|
+
# Return child assemblies.
|
104
|
+
def self.child_assemblies
|
105
|
+
where.not(parent_id: nil)
|
91
106
|
end
|
92
107
|
|
93
108
|
def self.log_presenter_class_for(_log)
|
@@ -121,6 +136,12 @@ module Decidim
|
|
121
136
|
Decidim::AssemblyPresenter.new(self).translated_title
|
122
137
|
end
|
123
138
|
|
139
|
+
def closed?
|
140
|
+
return false if closing_date.blank?
|
141
|
+
|
142
|
+
closing_date < Date.current
|
143
|
+
end
|
144
|
+
|
124
145
|
private
|
125
146
|
|
126
147
|
# When an assembly changes their parent, we need to update the parents_path attribute
|
@@ -171,5 +192,10 @@ module Decidim
|
|
171
192
|
)
|
172
193
|
end
|
173
194
|
# rubocop:enable Rails/SkipsModelValidations
|
195
|
+
|
196
|
+
# Allow ransacker to search for a key in a hstore column (`title`.`en`)
|
197
|
+
ransacker :title do |parent|
|
198
|
+
Arel::Nodes::InfixOperation.new("->", parent.table[:title], Arel::Nodes.build_quoted(I18n.locale.to_s))
|
199
|
+
end
|
174
200
|
end
|
175
201
|
end
|
@@ -171,7 +171,7 @@ module Decidim
|
|
171
171
|
allow! if permission_action.action == :read || permission_action.action == :preview
|
172
172
|
end
|
173
173
|
|
174
|
-
# Process admins can
|
174
|
+
# Process admins can perform everything *inside* that assembly. They cannot
|
175
175
|
# create a assembly or perform actions on assembly groups or other
|
176
176
|
# assemblies.
|
177
177
|
def assembly_admin_action?
|
@@ -23,7 +23,7 @@ module Decidim
|
|
23
23
|
#
|
24
24
|
# Returns an ActiveRecord::Relation.
|
25
25
|
def query
|
26
|
-
Decidim::User.where(id: organization_admins)
|
26
|
+
Decidim::User.where(id: organization_admins).or(assembly_user_admins)
|
27
27
|
end
|
28
28
|
|
29
29
|
private
|
@@ -33,6 +33,13 @@ module Decidim
|
|
33
33
|
def organization_admins
|
34
34
|
assembly.organization.admins
|
35
35
|
end
|
36
|
+
|
37
|
+
def assembly_user_admins
|
38
|
+
assembly_user_admin_ids = Decidim::AssemblyUserRole
|
39
|
+
.where(assembly: assembly, role: :admin)
|
40
|
+
.pluck(:decidim_user_id)
|
41
|
+
Decidim::User.where(id: assembly_user_admin_ids)
|
42
|
+
end
|
36
43
|
end
|
37
44
|
end
|
38
45
|
end
|