decidim-admin 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of decidim-admin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/assets/stylesheets/decidim/admin/_sidebar.scss +30 -1
- data/app/assets/stylesheets/decidim/admin/_tables.scss +3 -0
- data/app/assets/stylesheets/decidim/admin/application.scss +3 -0
- data/app/commands/decidim/admin/create_participatory_process.rb +4 -1
- data/app/commands/decidim/admin/create_participatory_process_admin.rb +26 -7
- data/app/commands/decidim/admin/create_participatory_process_group.rb +54 -0
- data/app/commands/decidim/admin/create_participatory_process_step.rb +0 -1
- data/app/commands/decidim/admin/destroy_participatory_process_step.rb +3 -1
- data/app/commands/decidim/admin/hide_resource.rb +37 -0
- data/app/commands/decidim/admin/reorder_participatory_process_steps.rb +1 -0
- data/app/commands/decidim/admin/unreport_resource.rb +33 -0
- data/app/commands/decidim/admin/update_participatory_process.rb +4 -2
- data/app/commands/decidim/admin/update_participatory_process_group.rb +57 -0
- data/app/commands/decidim/admin/update_participatory_process_step.rb +1 -2
- data/app/controllers/decidim/admin/application_controller.rb +4 -0
- data/app/controllers/decidim/admin/categories_controller.rb +1 -1
- data/app/controllers/decidim/admin/feature_permissions_controller.rb +2 -2
- data/{lib → app/controllers}/decidim/admin/features/base_controller.rb +0 -0
- data/app/controllers/decidim/admin/moderations_controller.rb +64 -0
- data/app/controllers/decidim/admin/newsletters_controller.rb +1 -1
- data/app/controllers/decidim/admin/participatory_process_groups_controller.rb +86 -0
- data/app/controllers/decidim/admin/participatory_process_publications_controller.rb +1 -1
- data/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +1 -1
- data/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +1 -1
- data/app/controllers/decidim/admin/participatory_process_steps_controller.rb +1 -1
- data/app/controllers/decidim/admin/participatory_process_user_roles_controller.rb +3 -3
- data/app/controllers/decidim/admin/participatory_processes_controller.rb +3 -2
- data/app/forms/decidim/admin/organization_form.rb +1 -0
- data/app/forms/decidim/admin/participatory_process_form.rb +12 -1
- data/app/forms/decidim/admin/participatory_process_group_form.rb +23 -0
- data/app/forms/decidim/admin/participatory_process_step_form.rb +0 -1
- data/app/forms/decidim/admin/participatory_process_user_role_form.rb +5 -1
- data/app/helpers/decidim/admin/application_helper.rb +1 -0
- data/app/helpers/decidim/admin/process_groups_for_select_helper.rb +20 -0
- data/app/helpers/decidim/admin/processes_for_select_helper.rb +22 -0
- data/app/models/decidim/admin/abilities/admin_user.rb +2 -0
- data/app/models/decidim/admin/abilities/participatory_process_admin.rb +4 -0
- data/app/models/decidim/admin/participatory_process_user_role.rb +1 -1
- data/app/queries/decidim/admin/process_admins.rb +43 -0
- data/app/views/decidim/admin/moderations/index.html.erb +65 -0
- data/app/views/decidim/admin/organization/_form.html.erb +4 -0
- data/app/views/decidim/admin/participatory_process_groups/_form.html.erb +17 -0
- data/app/views/decidim/admin/participatory_process_groups/edit.html.erb +13 -0
- data/app/views/decidim/admin/participatory_process_groups/index.html.erb +38 -0
- data/app/views/decidim/admin/participatory_process_groups/new.html.erb +11 -0
- data/app/views/decidim/admin/participatory_process_groups/show.html.erb +23 -0
- data/app/views/decidim/admin/participatory_process_steps/_form.html.erb +0 -4
- data/app/views/decidim/admin/participatory_process_steps/show.html.erb +4 -5
- data/app/views/decidim/admin/participatory_process_user_roles/index.html.erb +27 -24
- data/app/views/decidim/admin/participatory_processes/_form.html.erb +10 -1
- data/app/views/decidim/admin/participatory_processes/show.html.erb +15 -1
- data/app/views/layouts/decidim/admin/_header.html.erb +1 -0
- data/app/views/layouts/decidim/admin/_language_chooser.html.erb +14 -0
- data/app/views/layouts/decidim/admin/_sidebar.html.erb +2 -0
- data/app/views/layouts/decidim/admin/participatory_process.html.erb +5 -0
- data/config/i18n-tasks.yml +3 -1
- data/config/locales/ca.yml +83 -3
- data/config/locales/en.yml +81 -1
- data/config/locales/es.yml +81 -1
- data/config/locales/eu.yml +340 -1
- data/config/locales/fi.yml +464 -0
- data/config/routes.rb +8 -0
- data/db/seeds.rb +1 -1
- data/lib/decidim/admin/engine.rb +1 -0
- metadata +27 -15
@@ -0,0 +1,64 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
# This controller allows admins to manage moderations in a participatory process.
|
5
|
+
class ModerationsController < Admin::ApplicationController
|
6
|
+
include Concerns::ParticipatoryProcessAdmin
|
7
|
+
|
8
|
+
helper_method :moderations
|
9
|
+
|
10
|
+
def index
|
11
|
+
authorize! :read, Decidim::Moderation
|
12
|
+
end
|
13
|
+
|
14
|
+
def unreport
|
15
|
+
authorize! :unreport, reportable
|
16
|
+
|
17
|
+
Admin::UnreportResource.call(reportable) do
|
18
|
+
on(:ok) do
|
19
|
+
flash[:notice] = I18n.t("reportable.unreport.success", scope: "decidim.moderations.admin")
|
20
|
+
redirect_to decidim_admin.participatory_process_moderations_path
|
21
|
+
end
|
22
|
+
|
23
|
+
on(:invalid) do
|
24
|
+
flash.now[:alert] = I18n.t("reportable.unreport.invalid", scope: "decidim.moderations.admin")
|
25
|
+
redirect_to decidim_admin.participatory_process_moderations_path
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def hide
|
31
|
+
authorize! :hide, reportable
|
32
|
+
|
33
|
+
Admin::HideResource.call(reportable) do
|
34
|
+
on(:ok) do
|
35
|
+
flash[:notice] = I18n.t("reportable.hide.success", scope: "decidim.moderations.admin")
|
36
|
+
redirect_to decidim_admin.participatory_process_moderations_path
|
37
|
+
end
|
38
|
+
|
39
|
+
on(:invalid) do
|
40
|
+
flash.now[:alert] = I18n.t("reportable.hide.invalid", scope: "decidim.moderations.admin")
|
41
|
+
redirect_to decidim_admin.participatory_process_moderations_path
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
private
|
47
|
+
|
48
|
+
def moderations
|
49
|
+
@moderations ||= begin
|
50
|
+
moderations = Decidim::Moderation.where(participatory_process: participatory_process)
|
51
|
+
moderations = if params[:hidden]
|
52
|
+
moderations.where.not(hidden_at: nil)
|
53
|
+
else
|
54
|
+
moderations.where(hidden_at: nil)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def reportable
|
60
|
+
@reportable ||= Decidim::Moderation.where(participatory_process: participatory_process).find(params[:id]).reportable
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_dependency "decidim/admin/application_controller"
|
3
|
+
|
4
|
+
module Decidim
|
5
|
+
module Admin
|
6
|
+
# Controller that allows managing participatory process groups.
|
7
|
+
#
|
8
|
+
class ParticipatoryProcessGroupsController < ApplicationController
|
9
|
+
helper_method :collection, :participatory_process_group
|
10
|
+
|
11
|
+
def index
|
12
|
+
authorize! :read, ParticipatoryProcessGroup
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
authorize! :read, participatory_process_group
|
17
|
+
end
|
18
|
+
|
19
|
+
def new
|
20
|
+
authorize! :new, Decidim::ParticipatoryProcessGroup
|
21
|
+
@form = form(ParticipatoryProcessGroupForm).instance
|
22
|
+
end
|
23
|
+
|
24
|
+
def create
|
25
|
+
authorize! :new, Decidim::ParticipatoryProcessGroup
|
26
|
+
@form = form(ParticipatoryProcessGroupForm).from_params(params)
|
27
|
+
|
28
|
+
CreateParticipatoryProcessGroup.call(@form) do
|
29
|
+
on(:ok) do |participatory_process_group|
|
30
|
+
flash[:notice] = I18n.t("participatory_processes_group.create.success", scope: "decidim.admin")
|
31
|
+
redirect_to participatory_process_group_path(participatory_process_group)
|
32
|
+
end
|
33
|
+
|
34
|
+
on(:invalid) do
|
35
|
+
flash.now[:alert] = I18n.t("participatory_processes_group.create.error", scope: "decidim.admin")
|
36
|
+
render :new
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def edit
|
42
|
+
@participatory_process_group = collection.find(params[:id])
|
43
|
+
authorize! :update, @participatory_process_group
|
44
|
+
@form = form(ParticipatoryProcessGroupForm).from_model(@participatory_process_group)
|
45
|
+
end
|
46
|
+
|
47
|
+
def update
|
48
|
+
@participatory_process_group = collection.find(params[:id])
|
49
|
+
authorize! :update, @participatory_process_group
|
50
|
+
@form = form(ParticipatoryProcessGroupForm).from_params(params)
|
51
|
+
|
52
|
+
UpdateParticipatoryProcessGroup.call(@participatory_process_group, @form) do
|
53
|
+
on(:ok) do |participatory_process_group|
|
54
|
+
flash[:notice] = I18n.t("participatory_process_groups.update.success", scope: "decidim.admin")
|
55
|
+
redirect_to participatory_process_group_path(participatory_process_group)
|
56
|
+
end
|
57
|
+
|
58
|
+
on(:invalid) do
|
59
|
+
flash.now[:alert] = I18n.t("participatory_process_groups.update.error", scope: "decidim.admin")
|
60
|
+
render :edit
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
def destroy
|
66
|
+
@participatory_process_group = collection.find(params[:id])
|
67
|
+
authorize! :destroy, @participatory_process_group
|
68
|
+
@participatory_process_group.destroy!
|
69
|
+
|
70
|
+
flash[:notice] = I18n.t("participatory_process_groups.destroy.success", scope: "decidim.admin")
|
71
|
+
|
72
|
+
redirect_to participatory_process_groups_path
|
73
|
+
end
|
74
|
+
|
75
|
+
private
|
76
|
+
|
77
|
+
def participatory_process_group
|
78
|
+
@participatory_process_group ||= Decidim::ParticipatoryProcessGroup.find(params[:id])
|
79
|
+
end
|
80
|
+
|
81
|
+
def collection
|
82
|
+
@collection ||= current_user.organization.participatory_process_groups
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -3,7 +3,7 @@ require_dependency "decidim/admin/application_controller"
|
|
3
3
|
|
4
4
|
module Decidim
|
5
5
|
module Admin
|
6
|
-
# Controller that allows managing
|
6
|
+
# Controller that allows managing participatory process publications.
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessPublicationsController < ApplicationController
|
9
9
|
include Concerns::ParticipatoryProcessAdmin
|
@@ -3,7 +3,7 @@ require_dependency "decidim/admin/application_controller"
|
|
3
3
|
|
4
4
|
module Decidim
|
5
5
|
module Admin
|
6
|
-
# Controller that allows managing
|
6
|
+
# Controller that allows managing participatory process step activations.
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessStepActivationsController < ApplicationController
|
9
9
|
include Concerns::ParticipatoryProcessAdmin
|
@@ -3,7 +3,7 @@ require_dependency "decidim/admin/application_controller"
|
|
3
3
|
|
4
4
|
module Decidim
|
5
5
|
module Admin
|
6
|
-
# Controller that allows managing
|
6
|
+
# Controller that allows managing participatory process step ordering.
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessStepOrderingController < ApplicationController
|
9
9
|
include Concerns::ParticipatoryProcessAdmin
|
@@ -3,7 +3,7 @@ require_dependency "decidim/admin/application_controller"
|
|
3
3
|
|
4
4
|
module Decidim
|
5
5
|
module Admin
|
6
|
-
# Controller that allows managing
|
6
|
+
# Controller that allows managing participatory process steps.
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessStepsController < ApplicationController
|
9
9
|
include Concerns::ParticipatoryProcessAdmin
|
@@ -3,7 +3,7 @@ require_dependency "decidim/admin/application_controller"
|
|
3
3
|
|
4
4
|
module Decidim
|
5
5
|
module Admin
|
6
|
-
# Controller that allows managing
|
6
|
+
# Controller that allows managing participatory process user roles.
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessUserRolesController < ApplicationController
|
9
9
|
include Concerns::ParticipatoryProcessAdmin
|
@@ -18,13 +18,13 @@ module Decidim
|
|
18
18
|
authorize! :create, Decidim::Admin::ParticipatoryProcessUserRole
|
19
19
|
@form = form(ParticipatoryProcessUserRoleForm).from_params(params)
|
20
20
|
|
21
|
-
CreateParticipatoryProcessAdmin.call(@form, participatory_process) do
|
21
|
+
CreateParticipatoryProcessAdmin.call(@form, current_user, participatory_process) do
|
22
22
|
on(:ok) do
|
23
23
|
flash[:notice] = I18n.t("participatory_process_user_roles.create.success", scope: "decidim.admin")
|
24
24
|
end
|
25
25
|
|
26
26
|
on(:invalid) do
|
27
|
-
flash
|
27
|
+
flash[:alert] = I18n.t("participatory_process_user_roles.create.error", scope: "decidim.admin")
|
28
28
|
end
|
29
29
|
redirect_to participatory_process_user_roles_path(participatory_process)
|
30
30
|
end
|
@@ -3,11 +3,12 @@ require_dependency "decidim/admin/application_controller"
|
|
3
3
|
|
4
4
|
module Decidim
|
5
5
|
module Admin
|
6
|
-
# Controller that allows managing
|
6
|
+
# Controller that allows managing participatory processes.
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessesController < ApplicationController
|
9
9
|
helper_method :participatory_process
|
10
|
-
|
10
|
+
helper Decidim::OrganizationScopesHelper
|
11
|
+
layout "decidim/admin/participatory_process", only: [:show, :edit, :update]
|
11
12
|
|
12
13
|
def index
|
13
14
|
authorize! :index, Decidim::ParticipatoryProcess
|
@@ -11,7 +11,7 @@ module Decidim
|
|
11
11
|
translatable_attribute :subtitle, String
|
12
12
|
translatable_attribute :description, String
|
13
13
|
translatable_attribute :short_description, String
|
14
|
-
translatable_attribute :
|
14
|
+
translatable_attribute :meta_scope, String
|
15
15
|
translatable_attribute :developer_group, String
|
16
16
|
translatable_attribute :local_area, String
|
17
17
|
translatable_attribute :target, String
|
@@ -24,17 +24,28 @@ module Decidim
|
|
24
24
|
attribute :slug, String
|
25
25
|
attribute :hashtag, String
|
26
26
|
attribute :promoted, Boolean
|
27
|
+
attribute :scope_id, Integer
|
27
28
|
attribute :hero_image
|
28
29
|
attribute :banner_image
|
30
|
+
attribute :participatory_process_group_id, Integer
|
29
31
|
|
30
32
|
validates :slug, presence: true
|
31
33
|
validates :title, :subtitle, :description, :short_description, translatable_presence: true
|
34
|
+
validates :scope, presence: true, if: proc { |object| object.scope_id.present? }
|
32
35
|
|
33
36
|
validate :slug, :slug_uniqueness
|
34
37
|
|
35
38
|
validates :hero_image, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
|
36
39
|
validates :banner_image, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
|
37
40
|
|
41
|
+
def scope
|
42
|
+
@scope ||= current_organization.scopes.where(id: scope_id).first
|
43
|
+
end
|
44
|
+
|
45
|
+
def participatory_process_group
|
46
|
+
Decidim::ParticipatoryProcessGroup.where(id: participatory_process_group_id).first
|
47
|
+
end
|
48
|
+
|
38
49
|
private
|
39
50
|
|
40
51
|
def slug_uniqueness
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
# A form object used to create participatory process groups from the admin
|
5
|
+
# dashboard.
|
6
|
+
#
|
7
|
+
class ParticipatoryProcessGroupForm < Form
|
8
|
+
include TranslatableAttributes
|
9
|
+
|
10
|
+
translatable_attribute :name, String
|
11
|
+
translatable_attribute :description, String
|
12
|
+
attribute :participatory_process_ids, Array[Integer]
|
13
|
+
|
14
|
+
mimic :participatory_process_group
|
15
|
+
|
16
|
+
attribute :hero_image
|
17
|
+
|
18
|
+
validates :name, :description, translatable_presence: true
|
19
|
+
|
20
|
+
validates :hero_image, file_size: { less_than_or_equal_to: ->(_record) { Decidim.maximum_attachment_size } }, file_content_type: { allow: ["image/jpeg", "image/png"] }
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -7,9 +7,13 @@ module Decidim
|
|
7
7
|
class ParticipatoryProcessUserRoleForm < Form
|
8
8
|
mimic :participatory_process_user_role
|
9
9
|
|
10
|
+
attribute :name, String
|
10
11
|
attribute :email, String
|
12
|
+
attribute :role, String
|
11
13
|
|
12
|
-
validates :email, presence: true
|
14
|
+
validates :email, :role, presence: true
|
15
|
+
validates :name, presence: true
|
16
|
+
validates :role, inclusion: { in: ParticipatoryProcessUserRole::ROLES }
|
13
17
|
end
|
14
18
|
end
|
15
19
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
# This class contains helpers needed to format ParticipatoryProcessGroups
|
5
|
+
# in order to use them in select forms.
|
6
|
+
#
|
7
|
+
module ProcessGroupsForSelectHelper
|
8
|
+
# Public: A formatted collection of ParticipatoryProcessGroups to be used
|
9
|
+
# in forms.
|
10
|
+
#
|
11
|
+
# Returns an Array.
|
12
|
+
def process_groups_for_select
|
13
|
+
@process_groups_for_select ||=
|
14
|
+
current_organization.participatory_process_groups.map do |group|
|
15
|
+
[translated_attribute(group.name), group.id]
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
# This class contains helpers needed to format ParticipatoryProcesses
|
5
|
+
# in order to use them in select forms.
|
6
|
+
#
|
7
|
+
module ProcessesForSelectHelper
|
8
|
+
# Public: A formatted collection of ParticipatoryProcesses to be used
|
9
|
+
# in forms.
|
10
|
+
#
|
11
|
+
# Returns an Array.
|
12
|
+
def processes_for_select
|
13
|
+
@processes_for_select ||= current_organization.participatory_processes.map do |process|
|
14
|
+
[
|
15
|
+
translated_attribute(process.title),
|
16
|
+
process.id
|
17
|
+
]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -11,6 +11,7 @@ module Decidim
|
|
11
11
|
return unless user && user.role?(:admin)
|
12
12
|
|
13
13
|
can :manage, ParticipatoryProcess
|
14
|
+
can :manage, ParticipatoryProcessGroup
|
14
15
|
can :manage, ParticipatoryProcessStep
|
15
16
|
can :manage, Category
|
16
17
|
can :manage, ParticipatoryProcessUserRole
|
@@ -27,6 +28,7 @@ module Decidim
|
|
27
28
|
can :manage, Feature
|
28
29
|
can :read, :admin_dashboard
|
29
30
|
can :manage, :admin_users
|
31
|
+
can :manage, Moderation
|
30
32
|
can :manage, Attachment
|
31
33
|
can :manage, Scope
|
32
34
|
can :manage, Newsletter
|
@@ -33,6 +33,10 @@ module Decidim
|
|
33
33
|
role.user != user
|
34
34
|
end
|
35
35
|
|
36
|
+
can :manage, Moderation do |moderation|
|
37
|
+
participatory_processes.include?(moderation.participatory_process)
|
38
|
+
end
|
39
|
+
|
36
40
|
can :manage, Attachment do |attachment|
|
37
41
|
participatory_processes.include?(attachment.attached_to)
|
38
42
|
end
|
@@ -7,7 +7,7 @@ module Decidim
|
|
7
7
|
belongs_to :user, foreign_key: "decidim_user_id", class_name: Decidim::User
|
8
8
|
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: Decidim::ParticipatoryProcess
|
9
9
|
|
10
|
-
ROLES = %w(admin).freeze
|
10
|
+
ROLES = %w(admin collaborator).freeze
|
11
11
|
validates :role, inclusion: { in: ROLES }, uniqueness: { scope: [:user, :participatory_process] }
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
# A class used to find the admins for a participatory process including
|
5
|
+
# organization admins.
|
6
|
+
class ProcessAdmins < Rectify::Query
|
7
|
+
# Syntactic sugar to initialize the class and return the queried objects.
|
8
|
+
#
|
9
|
+
# process - a process that needs to find its process admins
|
10
|
+
def self.for(process)
|
11
|
+
new(process).query
|
12
|
+
end
|
13
|
+
|
14
|
+
# Initializes the class.
|
15
|
+
#
|
16
|
+
# process - a process that needs to find its process admins
|
17
|
+
def initialize(process)
|
18
|
+
@process = process
|
19
|
+
end
|
20
|
+
|
21
|
+
# Finds organization admins and the users with role admin for the given process.
|
22
|
+
#
|
23
|
+
# Returns an ActiveRecord::Relation.
|
24
|
+
def query
|
25
|
+
Decidim::User.where(id: organization_admins).or(Decidim::User.where(id: process_admins))
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
attr_reader :process
|
31
|
+
|
32
|
+
def organization_admins
|
33
|
+
process.organization.admins
|
34
|
+
end
|
35
|
+
|
36
|
+
def process_admins
|
37
|
+
Decidim::Admin::ParticipatoryProcessUserRole
|
38
|
+
.where(participatory_process: process, role: :admin)
|
39
|
+
.pluck(:decidim_user_id)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|