decidim-assemblies 0.11.2 → 0.12.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/config/admin/decidim_assemblies_manifest.js +1 -0
- data/app/assets/javascripts/decidim/assemblies/admin/assembly_members.js.es6 +37 -0
- data/app/cells/decidim/assemblies/assembly_cell.rb +19 -0
- data/app/cells/decidim/assemblies/assembly_m/footer.erb +15 -0
- data/app/cells/decidim/assemblies/assembly_m/tags.erb +1 -0
- data/app/cells/decidim/assemblies/assembly_m_cell.rb +50 -0
- data/app/cells/decidim/assemblies/assembly_member/show.erb +53 -0
- data/app/cells/decidim/assemblies/assembly_member_cell.rb +21 -0
- data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +73 -0
- data/app/commands/decidim/assemblies/admin/destroy_assembly_member.rb +56 -0
- data/app/commands/decidim/assemblies/admin/update_assembly_member.rb +69 -0
- data/app/controllers/decidim/assemblies/admin/application_controller.rb +14 -0
- data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +8 -12
- data/app/controllers/decidim/assemblies/admin/assembly_attachment_collections_controller.rb +1 -1
- data/app/controllers/decidim/assemblies/admin/assembly_attachments_controller.rb +1 -1
- data/app/controllers/decidim/assemblies/admin/assembly_copies_controller.rb +3 -3
- data/app/controllers/decidim/assemblies/admin/assembly_members_controller.rb +86 -0
- data/app/controllers/decidim/assemblies/admin/assembly_publications_controller.rb +3 -3
- data/app/controllers/decidim/assemblies/admin/assembly_user_roles_controller.rb +7 -7
- data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +20 -8
- data/app/controllers/decidim/assemblies/admin/participatory_space_private_users_controller.rb +1 -1
- data/app/controllers/decidim/assemblies/application_controller.rb +32 -0
- data/app/controllers/decidim/assemblies/assemblies_controller.rb +2 -2
- data/app/controllers/decidim/assemblies/assembly_members_controller.rb +35 -0
- data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +51 -0
- data/app/models/decidim/assembly.rb +12 -1
- data/app/models/decidim/assembly_member.rb +24 -0
- data/app/permissions/decidim/assemblies/permissions.rb +230 -0
- data/app/presenters/decidim/admin/assembly_member_presenter.rb +24 -0
- data/app/presenters/decidim/assemblies/admin_log/assembly_member_presenter.rb +52 -0
- data/app/presenters/decidim/assemblies/admin_log/value_types/member_position_presenter.rb +21 -0
- data/app/presenters/decidim/assembly_member_presenter.rb +46 -0
- data/app/queries/decidim/assemblies/admin/assembly_members.rb +55 -0
- data/app/views/decidim/assemblies/_assembly.html.erb +1 -22
- data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +2 -0
- data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +2 -2
- data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +8 -8
- data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +66 -0
- data/app/views/decidim/assemblies/admin/assembly_members/edit.html.erb +7 -0
- data/app/views/decidim/assemblies/admin/assembly_members/index.html.erb +91 -0
- data/app/views/decidim/assemblies/admin/assembly_members/new.html.erb +7 -0
- data/app/views/decidim/assemblies/admin/assembly_user_roles/index.html.erb +4 -4
- data/app/views/decidim/assemblies/assemblies/show.html.erb +1 -2
- data/app/views/decidim/assemblies/assembly_members/index.html.erb +10 -0
- data/app/views/decidim/assemblies/pages/user_profile/_member_of.html.erb +12 -0
- data/app/views/decidim/assembly_members/_assembly_member.html.erb +1 -0
- data/app/views/layouts/decidim/_assembly_header.html.erb +10 -1
- data/app/views/layouts/decidim/admin/assemblies.html.erb +7 -10
- data/app/views/layouts/decidim/admin/assembly.html.erb +19 -11
- data/config/locales/ca.yml +84 -0
- data/config/locales/en.yml +84 -0
- data/config/locales/es.yml +84 -0
- data/config/locales/eu.yml +84 -0
- data/config/locales/fi.yml +84 -0
- data/config/locales/fr.yml +84 -0
- data/config/locales/gl.yml +84 -0
- data/config/locales/it.yml +84 -0
- data/config/locales/nl.yml +84 -0
- data/config/locales/pl.yml +90 -0
- data/config/locales/pt-BR.yml +84 -0
- data/config/locales/pt.yml +84 -0
- data/config/locales/ru.yml +96 -11
- data/config/locales/sv.yml +84 -0
- data/config/locales/uk.yml +91 -1
- data/db/migrate/20180314143822_add_assembly_members.rb +21 -0
- data/db/migrate/20180426162405_assembly_member_belongs_to_user.rb +7 -0
- data/db/migrate/20180515073049_update_assembly_members_index.rb +8 -0
- data/lib/decidim/assemblies/admin_engine.rb +2 -12
- data/lib/decidim/assemblies/engine.rb +21 -10
- data/lib/decidim/assemblies/participatory_space.rb +58 -2
- data/lib/decidim/assemblies/test/factories.rb +35 -0
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +41 -22
- data/app/controllers/decidim/assemblies/categories_controller.rb +0 -13
- data/app/models/decidim/assemblies/abilities/admin/admin_ability.rb +0 -20
- data/app/models/decidim/assemblies/abilities/admin/assembly_admin_ability.rb +0 -58
- data/app/models/decidim/assemblies/abilities/admin/assembly_collaborator_ability.rb +0 -25
- data/app/models/decidim/assemblies/abilities/admin/assembly_moderator_ability.rb +0 -33
- data/app/models/decidim/assemblies/abilities/admin/assembly_role_ability.rb +0 -65
- data/app/models/decidim/assemblies/abilities/admin_ability.rb +0 -16
- data/app/models/decidim/assemblies/abilities/assembly_admin_ability.rb +0 -15
- data/app/models/decidim/assemblies/abilities/assembly_collaborator_ability.rb +0 -15
- data/app/models/decidim/assemblies/abilities/assembly_moderator_ability.rb +0 -15
- data/app/models/decidim/assemblies/abilities/assembly_role_ability.rb +0 -51
- data/app/models/decidim/assemblies/abilities/everyone_ability.rb +0 -17
@@ -5,23 +5,23 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# Controller that allows managing assemblies.
|
7
7
|
#
|
8
|
-
class AssembliesController < Decidim::Admin::ApplicationController
|
8
|
+
class AssembliesController < Decidim::Assemblies::Admin::ApplicationController
|
9
9
|
helper_method :current_assembly, :parent_assembly, :parent_assemblies, :current_participatory_space
|
10
10
|
layout "decidim/admin/assemblies"
|
11
11
|
|
12
12
|
def index
|
13
|
-
|
13
|
+
enforce_permission_to :read, :assembly_list
|
14
14
|
@assemblies = collection
|
15
15
|
end
|
16
16
|
|
17
17
|
def new
|
18
|
-
|
18
|
+
enforce_permission_to :create, :assembly
|
19
19
|
@form = form(AssemblyForm).instance
|
20
20
|
@form.parent_id = params[:parent_id]
|
21
21
|
end
|
22
22
|
|
23
23
|
def create
|
24
|
-
|
24
|
+
enforce_permission_to :create, :assembly
|
25
25
|
@form = form(AssemblyForm).from_params(params)
|
26
26
|
|
27
27
|
CreateAssembly.call(@form) do
|
@@ -38,13 +38,13 @@ module Decidim
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def edit
|
41
|
-
|
41
|
+
enforce_permission_to :update, :assembly, assembly: current_assembly
|
42
42
|
@form = form(AssemblyForm).from_model(current_assembly)
|
43
43
|
render layout: "decidim/admin/assembly"
|
44
44
|
end
|
45
45
|
|
46
46
|
def update
|
47
|
-
|
47
|
+
enforce_permission_to :update, :assembly, assembly: current_assembly
|
48
48
|
@form = form(AssemblyForm).from_params(
|
49
49
|
assembly_params,
|
50
50
|
assembly_id: current_assembly.id
|
@@ -64,7 +64,7 @@ module Decidim
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def destroy
|
67
|
-
|
67
|
+
enforce_permission_to :destroy, :assembly, assembly: current_assembly
|
68
68
|
current_assembly.destroy!
|
69
69
|
|
70
70
|
flash[:notice] = I18n.t("assemblies.destroy.success", scope: "decidim.admin")
|
@@ -73,7 +73,7 @@ module Decidim
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def copy
|
76
|
-
|
76
|
+
enforce_permission_to :create, :assembly
|
77
77
|
end
|
78
78
|
|
79
79
|
private
|
@@ -100,10 +100,6 @@ module Decidim
|
|
100
100
|
@collection ||= OrganizationAssemblies.new(current_user.organization).query.where(parent_id: parent_id)
|
101
101
|
end
|
102
102
|
|
103
|
-
def ability_context
|
104
|
-
super.merge(current_participatory_space: current_assembly)
|
105
|
-
end
|
106
|
-
|
107
103
|
def assembly_params
|
108
104
|
{
|
109
105
|
id: params[:slug],
|
@@ -5,7 +5,7 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# Controller that allows managing all the attachment collections for an assembly.
|
7
7
|
#
|
8
|
-
class AssemblyAttachmentCollectionsController < Decidim::Admin::ApplicationController
|
8
|
+
class AssemblyAttachmentCollectionsController < Decidim::Assemblies::Admin::ApplicationController
|
9
9
|
include Concerns::AssemblyAdmin
|
10
10
|
include Decidim::Admin::Concerns::HasAttachmentCollections
|
11
11
|
|
@@ -6,7 +6,7 @@ module Decidim
|
|
6
6
|
# Controller that allows managing all the attachments for a participatory
|
7
7
|
# assembly.
|
8
8
|
#
|
9
|
-
class AssemblyAttachmentsController < Decidim::Admin::ApplicationController
|
9
|
+
class AssemblyAttachmentsController < Decidim::Assemblies::Admin::ApplicationController
|
10
10
|
include Concerns::AssemblyAdmin
|
11
11
|
include Decidim::Admin::Concerns::HasAttachments
|
12
12
|
|
@@ -5,16 +5,16 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# Controller that allows managing assemblies.
|
7
7
|
#
|
8
|
-
class AssemblyCopiesController < Decidim::Admin::ApplicationController
|
8
|
+
class AssemblyCopiesController < Decidim::Assemblies::Admin::ApplicationController
|
9
9
|
include Concerns::AssemblyAdmin
|
10
10
|
|
11
11
|
def new
|
12
|
-
|
12
|
+
enforce_permission_to :create, :assembly
|
13
13
|
@form = form(AssemblyCopyForm).from_model(current_assembly)
|
14
14
|
end
|
15
15
|
|
16
16
|
def create
|
17
|
-
|
17
|
+
enforce_permission_to :create, :assembly
|
18
18
|
@form = form(AssemblyCopyForm).from_params(params)
|
19
19
|
|
20
20
|
CopyAssembly.call(@form, current_assembly) do
|
@@ -0,0 +1,86 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Admin
|
6
|
+
# Controller that allows managing assembly members.
|
7
|
+
#
|
8
|
+
class AssemblyMembersController < Decidim::Assemblies::Admin::ApplicationController
|
9
|
+
include Concerns::AssemblyAdmin
|
10
|
+
|
11
|
+
def index
|
12
|
+
enforce_permission_to :index, :assembly_member
|
13
|
+
|
14
|
+
@query = params[:q]
|
15
|
+
@status = params[:status]
|
16
|
+
|
17
|
+
@assembly_members = Decidim::Assemblies::Admin::AssemblyMembers.for(collection, @query, @status).page(params[:page]).per(15)
|
18
|
+
end
|
19
|
+
|
20
|
+
def new
|
21
|
+
enforce_permission_to :create, :assembly_member
|
22
|
+
@form = form(AssemblyMemberForm).instance
|
23
|
+
end
|
24
|
+
|
25
|
+
def create
|
26
|
+
enforce_permission_to :create, :assembly_member
|
27
|
+
@form = form(AssemblyMemberForm).from_params(params)
|
28
|
+
|
29
|
+
CreateAssemblyMember.call(@form, current_user, current_assembly) do
|
30
|
+
on(:ok) do
|
31
|
+
flash[:notice] = I18n.t("assembly_members.create.success", scope: "decidim.admin")
|
32
|
+
redirect_to assembly_members_path(current_assembly)
|
33
|
+
end
|
34
|
+
|
35
|
+
on(:invalid) do
|
36
|
+
flash[:alert] = I18n.t("assembly_members.create.error", scope: "decidim.admin")
|
37
|
+
render :new
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def edit
|
43
|
+
@assembly_member = collection.find(params[:id])
|
44
|
+
enforce_permission_to :update, :assembly_member, member: @assembly_member
|
45
|
+
@form = form(AssemblyMemberForm).from_model(@assembly_member)
|
46
|
+
end
|
47
|
+
|
48
|
+
def update
|
49
|
+
@assembly_member = collection.find(params[:id])
|
50
|
+
enforce_permission_to :update, :assembly_member, member: @assembly_member
|
51
|
+
@form = form(AssemblyMemberForm).from_params(params)
|
52
|
+
|
53
|
+
UpdateAssemblyMember.call(@form, @assembly_member) do
|
54
|
+
on(:ok) do
|
55
|
+
flash[:notice] = I18n.t("assembly_members.update.success", scope: "decidim.admin")
|
56
|
+
redirect_to assembly_members_path(current_assembly)
|
57
|
+
end
|
58
|
+
|
59
|
+
on(:invalid) do
|
60
|
+
flash.now[:alert] = I18n.t("assembly_members.update.error", scope: "decidim.admin")
|
61
|
+
render :edit
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def destroy
|
67
|
+
@assembly_member = collection.find(params[:id])
|
68
|
+
enforce_permission_to :destroy, :assembly_member, member: @assembly_member
|
69
|
+
|
70
|
+
DestroyAssemblyMember.call(@assembly_member, current_user) do
|
71
|
+
on(:ok) do
|
72
|
+
flash[:notice] = I18n.t("assembly_members.destroy.success", scope: "decidim.admin")
|
73
|
+
redirect_to assembly_members_path(current_assembly)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
private
|
79
|
+
|
80
|
+
def collection
|
81
|
+
@collection ||= Decidim::AssemblyMember.where(assembly: current_assembly)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
@@ -5,11 +5,11 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# Controller that allows managing assembly publications.
|
7
7
|
#
|
8
|
-
class AssemblyPublicationsController < Decidim::Admin::ApplicationController
|
8
|
+
class AssemblyPublicationsController < Decidim::Assemblies::Admin::ApplicationController
|
9
9
|
include Concerns::AssemblyAdmin
|
10
10
|
|
11
11
|
def create
|
12
|
-
|
12
|
+
enforce_permission_to :publish, :assembly, assembly: current_assembly
|
13
13
|
|
14
14
|
PublishAssembly.call(current_assembly, current_user) do
|
15
15
|
on(:ok) do
|
@@ -25,7 +25,7 @@ module Decidim
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def destroy
|
28
|
-
|
28
|
+
enforce_permission_to :publish, :assembly, assembly: current_assembly
|
29
29
|
|
30
30
|
UnpublishAssembly.call(current_assembly, current_user) do
|
31
31
|
on(:ok) do
|
@@ -9,17 +9,17 @@ module Decidim
|
|
9
9
|
include Concerns::AssemblyAdmin
|
10
10
|
|
11
11
|
def index
|
12
|
-
|
12
|
+
enforce_permission_to :index, :assembly_user_role
|
13
13
|
@assembly_user_roles = collection
|
14
14
|
end
|
15
15
|
|
16
16
|
def new
|
17
|
-
|
17
|
+
enforce_permission_to :create, :assembly_user_role
|
18
18
|
@form = form(AssemblyUserRoleForm).instance
|
19
19
|
end
|
20
20
|
|
21
21
|
def create
|
22
|
-
|
22
|
+
enforce_permission_to :create, :assembly_user_role
|
23
23
|
@form = form(AssemblyUserRoleForm).from_params(params)
|
24
24
|
|
25
25
|
CreateAssemblyAdmin.call(@form, current_user, current_assembly) do
|
@@ -36,13 +36,13 @@ module Decidim
|
|
36
36
|
|
37
37
|
def edit
|
38
38
|
@user_role = collection.find(params[:id])
|
39
|
-
|
39
|
+
enforce_permission_to :update, :assembly_user_role, user_role: @user_role
|
40
40
|
@form = form(AssemblyUserRoleForm).from_model(@user_role.user)
|
41
41
|
end
|
42
42
|
|
43
43
|
def update
|
44
44
|
@user_role = collection.find(params[:id])
|
45
|
-
|
45
|
+
enforce_permission_to :update, :assembly_user_role, user_role: @user_role
|
46
46
|
@form = form(AssemblyUserRoleForm).from_params(params)
|
47
47
|
|
48
48
|
UpdateAssemblyAdmin.call(@form, @user_role) do
|
@@ -60,7 +60,7 @@ module Decidim
|
|
60
60
|
|
61
61
|
def destroy
|
62
62
|
@assembly_user_role = collection.find(params[:id])
|
63
|
-
|
63
|
+
enforce_permission_to :destroy, :assembly_user_role, user_role: @assembly_user_role
|
64
64
|
|
65
65
|
DestroyAssemblyAdmin.call(@assembly_user_role, current_user) do
|
66
66
|
on(:ok) do
|
@@ -72,7 +72,7 @@ module Decidim
|
|
72
72
|
|
73
73
|
def resend_invitation
|
74
74
|
@user_role = collection.find(params[:id])
|
75
|
-
|
75
|
+
enforce_permission_to :invite, :assembly_user_role, user_role: @user_role
|
76
76
|
|
77
77
|
InviteUserAgain.call(@user_role.user, "invite_admin") do
|
78
78
|
on(:ok) do
|
@@ -17,17 +17,29 @@ module Decidim
|
|
17
17
|
participatory_space_admin_layout
|
18
18
|
|
19
19
|
helper_method :current_assembly
|
20
|
+
|
21
|
+
def current_assembly
|
22
|
+
@current_assembly ||= organization_assemblies.find_by!(
|
23
|
+
slug: params[:assembly_slug] || params[:slug]
|
24
|
+
)
|
25
|
+
end
|
26
|
+
|
20
27
|
alias_method :current_participatory_space, :current_assembly
|
21
|
-
end
|
22
28
|
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
29
|
+
def organization_assemblies
|
30
|
+
@organization_assemblies ||= OrganizationAssemblies.new(current_organization).query
|
31
|
+
end
|
32
|
+
|
33
|
+
def permissions_context
|
34
|
+
super.merge(current_participatory_space: current_participatory_space)
|
35
|
+
end
|
28
36
|
|
29
|
-
|
30
|
-
|
37
|
+
def permission_class_chain
|
38
|
+
[
|
39
|
+
Decidim::Assemblies::Permissions,
|
40
|
+
Decidim::Admin::Permissions
|
41
|
+
]
|
42
|
+
end
|
31
43
|
end
|
32
44
|
end
|
33
45
|
end
|
data/app/controllers/decidim/assemblies/admin/participatory_space_private_users_controller.rb
CHANGED
@@ -5,7 +5,7 @@ module Decidim
|
|
5
5
|
module Admin
|
6
6
|
# Controller that allows managing assembly private users
|
7
7
|
# on assembies
|
8
|
-
class ParticipatorySpacePrivateUsersController < Decidim::Admin::ApplicationController
|
8
|
+
class ParticipatorySpacePrivateUsersController < Decidim::Assemblies::Admin::ApplicationController
|
9
9
|
include Concerns::AssemblyAdmin
|
10
10
|
include Decidim::Admin::Concerns::HasPrivateUsers
|
11
11
|
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
# The main admin application controller for assemblies
|
6
|
+
class ApplicationController < Decidim::ApplicationController
|
7
|
+
helper Decidim::ApplicationHelper
|
8
|
+
helper Decidim::Assemblies::AssembliesHelper
|
9
|
+
include NeedsPermission
|
10
|
+
|
11
|
+
private
|
12
|
+
|
13
|
+
def permissions_context
|
14
|
+
super.merge(
|
15
|
+
current_participatory_space: try(:current_participatory_space)
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
def permission_class_chain
|
20
|
+
[
|
21
|
+
Decidim::Assemblies::Permissions,
|
22
|
+
Decidim::Admin::Permissions,
|
23
|
+
Decidim::Permissions
|
24
|
+
]
|
25
|
+
end
|
26
|
+
|
27
|
+
def permission_scope
|
28
|
+
:public
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -4,7 +4,7 @@ module Decidim
|
|
4
4
|
module Assemblies
|
5
5
|
# A controller that holds the logic to show Assemblies in a
|
6
6
|
# public layout.
|
7
|
-
class AssembliesController < Decidim::ApplicationController
|
7
|
+
class AssembliesController < Decidim::Assemblies::ApplicationController
|
8
8
|
include ParticipatorySpaceContext
|
9
9
|
participatory_space_layout only: :show
|
10
10
|
|
@@ -19,7 +19,7 @@ module Decidim
|
|
19
19
|
def index
|
20
20
|
redirect_to "/404" if published_assemblies.none?
|
21
21
|
|
22
|
-
|
22
|
+
enforce_permission_to :list, :assembly
|
23
23
|
end
|
24
24
|
|
25
25
|
def show
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
class AssemblyMembersController < Decidim::Assemblies::ApplicationController
|
6
|
+
include ParticipatorySpaceContext
|
7
|
+
participatory_space_layout only: :index
|
8
|
+
|
9
|
+
helper_method :collection
|
10
|
+
|
11
|
+
def index
|
12
|
+
raise ActionController::RoutingError, "No members for this assembly" if members.none?
|
13
|
+
|
14
|
+
enforce_permission_to :list, :members
|
15
|
+
redirect_to decidim_assemblies.assembly_path(current_participatory_space) unless current_user_can_visit_space?
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def members
|
21
|
+
@members ||= current_participatory_space.members.not_ceased
|
22
|
+
end
|
23
|
+
|
24
|
+
alias collection members
|
25
|
+
|
26
|
+
def current_participatory_space
|
27
|
+
return unless params[:assembly_slug]
|
28
|
+
|
29
|
+
@current_participatory_space ||= OrganizationAssemblies.new(current_organization).query.where(slug: params[:assembly_slug]).or(
|
30
|
+
OrganizationAssemblies.new(current_organization).query.where(id: params[:assembly_slug])
|
31
|
+
).first!
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Assemblies
|
5
|
+
module Admin
|
6
|
+
# A form object used to create assembly members from the admin dashboard.
|
7
|
+
#
|
8
|
+
class AssemblyMemberForm < Form
|
9
|
+
mimic :assembly_member
|
10
|
+
|
11
|
+
attribute :weight, Integer, default: 0
|
12
|
+
attribute :full_name, String
|
13
|
+
attribute :gender, String
|
14
|
+
attribute :birthday, Decidim::Attributes::TimeWithZone
|
15
|
+
attribute :birthplace, String
|
16
|
+
attribute :ceased_date, Decidim::Attributes::TimeWithZone
|
17
|
+
attribute :designation_date, Decidim::Attributes::TimeWithZone
|
18
|
+
attribute :designation_mode, String
|
19
|
+
attribute :position, String
|
20
|
+
attribute :position_other, String
|
21
|
+
attribute :user_id, Integer
|
22
|
+
attribute :existing_user, Boolean, default: false
|
23
|
+
|
24
|
+
validates :designation_date, presence: true
|
25
|
+
validates :full_name, presence: true, unless: proc { |object| object.existing_user }
|
26
|
+
validates :position, inclusion: { in: Decidim::AssemblyMember::POSITIONS }
|
27
|
+
validates :position_other, presence: true, if: ->(form) { form.position == "other" }
|
28
|
+
validates :ceased_date, date: { after: :designation_date, allow_blank: true }
|
29
|
+
validates :user, presence: true, if: proc { |object| object.existing_user }
|
30
|
+
|
31
|
+
def map_model(model)
|
32
|
+
self.user_id = model.decidim_user_id
|
33
|
+
self.existing_user = user_id.present?
|
34
|
+
end
|
35
|
+
|
36
|
+
def user
|
37
|
+
@user ||= current_organization.users.find_by(id: user_id)
|
38
|
+
end
|
39
|
+
|
40
|
+
def positions_for_select
|
41
|
+
Decidim::AssemblyMember::POSITIONS.map do |position|
|
42
|
+
[
|
43
|
+
I18n.t(position, scope: "decidim.admin.models.assembly_member.positions"),
|
44
|
+
position
|
45
|
+
]
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|