decidim-proposals 0.4.3 → 0.4.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b19a02abb665fe2eff1fc28f2baef2d2e53e8c40
4
- data.tar.gz: 73283106b1be79337c0dff55080e4aaa60f0c0e4
3
+ metadata.gz: 4f5ede39ced3c1e0de38bf979f3a1ef578c6a88d
4
+ data.tar.gz: 70f31bf53bdcf9808b17924a7873c8a1ba73d913
5
5
  SHA512:
6
- metadata.gz: 6be75326448286187effb03d3fc327ab9bb6fb387c0b759d9173a195de3ff2dca7cb1d1c8aab56b4bd4fe3ce4e992dde537dd4040e4118897459c18edc184c99
7
- data.tar.gz: 85db5a6f84aba6e654fba2d85a9b36fa75bb1f82cc279ea620b485a97ddd5cbb3af0ab4016317d9558b80d1a454224a5a358fb2e6b4a0209b7100fd5bc1351b7
6
+ metadata.gz: 40a1c20970581db8bf5849b7e1080b1951bb03edc5a8b1c9a2c2cea9b4668563b806645d69788cfd28f678064a461a3affec496a719678ba733b09c65b6e5d18
7
+ data.tar.gz: 6f6078e4b9a93ed927f510291aaeb84d0543e0b2272232e253785dcc243e48f9aee61c76268128a0fb12606710f89f8a0b95fa26e525ba9e1c7fbb423408769a
@@ -22,6 +22,12 @@ module Decidim
22
22
 
23
23
  delegate :categories, to: :current_feature, prefix: false
24
24
 
25
+ def map_model(model)
26
+ return unless model.categorization
27
+
28
+ self.category_id = model.categorization.decidim_category_id
29
+ end
30
+
25
31
  def organization_scopes
26
32
  current_organization.scopes
27
33
  end
@@ -26,6 +26,12 @@ module Decidim
26
26
 
27
27
  delegate :categories, to: :current_feature
28
28
 
29
+ def map_model(model)
30
+ return unless model.categorization
31
+
32
+ self.category_id = model.categorization.decidim_category_id
33
+ end
34
+
29
35
  def organization_scopes
30
36
  current_organization.scopes
31
37
  end
@@ -33,7 +33,8 @@ module Decidim
33
33
  end
34
34
 
35
35
  def author_name
36
- user_group&.name || author&.name || I18n.t("decidim.proposals.models.proposal.fields.official_proposal")
36
+ return I18n.t("decidim.proposals.models.proposal.fields.official_proposal") if official?
37
+ user_group&.name || author.name
37
38
  end
38
39
 
39
40
  def author_avatar_url
@@ -100,15 +101,22 @@ module Decidim
100
101
  ResourceLocatorPresenter.new(self).url
101
102
  end
102
103
 
104
+ # Public: Whether the proposal is official or not.
105
+ def official?
106
+ author.nil?
107
+ end
108
+
103
109
  # Public: Overrides the `notifiable?` Notifiable concern method.
104
110
  # When a proposal is commented the proposal's author is notified if it is not the same
105
111
  # who has commented the proposal and if the proposal's author has comment notifications enabled.
106
112
  def notifiable?(context)
113
+ return true if official?
107
114
  context[:author] != author && author.comments_notifications?
108
115
  end
109
116
 
110
117
  # Public: Overrides the `users_to_notify` Notifiable concern method.
111
118
  def users_to_notify
119
+ return Decidim::Admin::ProcessAdmins.for(feature.participatory_process) if official?
112
120
  [author]
113
121
  end
114
122
  end
@@ -53,7 +53,7 @@
53
53
  <% if can? :update, proposal %>
54
54
  <%= icon_link_to "chat", edit_proposal_proposal_answer_path(proposal_id: proposal.id, id: proposal.id), t("actions.answer", scope: "decidim.proposals"), class: "action-icon--edit-answer" %>
55
55
  <% end %>
56
- <%= icon_link_to "eye", decidim_proposals.proposal_path(id: proposal, feature_id: current_feature, participatory_process_id: current_participatory_process), t("actions.preview", scope: "decidim.proposals.admin"), class: "action-icon--preview", target: :blank %>
56
+ <%= icon_link_to "eye", resource_locator(proposal).path, t("actions.preview", scope: "decidim.proposals.admin"), class: "action-icon--preview", target: :blank %>
57
57
  </td>
58
58
  </tr>
59
59
  <% end %>
@@ -1,10 +1,10 @@
1
1
  <% if proposal.category.present? || proposal.scope.present? %>
2
2
  <ul class="tags tags--proposal" >
3
3
  <% if proposal.category.present? %>
4
- <li><%= link_to translated_attribute(proposal.category.name), decidim_proposals.proposals_path(filter: { category_id: proposal.category.id }) %></li>
4
+ <li><%= link_to translated_attribute(proposal.category.name), resource_locator(proposal).index(filter: { category_id: proposal.category.id }) %></li>
5
5
  <% end %>
6
6
  <% if proposal.scope.present? && !current_participatory_process.scope %>
7
- <li><%= link_to proposal.scope.name, decidim_proposals.proposals_path(filter: { scope_id: [proposal.scope.id] }) %></li>
7
+ <li><%= link_to proposal.scope.name, resource_locator(proposal).index(filter: { scope_id: [proposal.scope.id] }) %></li>
8
8
  <% end %>
9
9
  </ul>
10
10
  <% end %>
@@ -71,75 +71,69 @@ Decidim.register_feature(:proposals) do |feature|
71
71
  exports.serializer Decidim::Comments::CommentSerializer
72
72
  end
73
73
 
74
- feature.seeds do
75
- Decidim::ParticipatoryProcess.find_each do |process|
76
- next unless process.steps.any?
77
-
78
- feature = Decidim::Feature.create!(
79
- name: Decidim::Features::Namer.new(process.organization.available_locales, :proposals).i18n_name,
80
- manifest_name: :proposals,
81
- published_at: Time.current,
82
- participatory_process: process,
83
- settings: {
84
- vote_limit: 0
85
- },
86
- step_settings: {
87
- process.active_step.id => { votes_enabled: true, votes_blocked: false, creation_enabled: true }
88
- }
74
+ feature.seeds do |process|
75
+ feature = Decidim::Feature.create!(
76
+ name: Decidim::Features::Namer.new(process.organization.available_locales, :proposals).i18n_name,
77
+ manifest_name: :proposals,
78
+ published_at: Time.current,
79
+ participatory_process: process,
80
+ settings: {
81
+ vote_limit: 0
82
+ },
83
+ step_settings: {
84
+ process.active_step.id => { votes_enabled: true, votes_blocked: false, creation_enabled: true }
85
+ }
86
+ )
87
+ # So that we have some with global scope
88
+ scopes = feature.organization.scopes + [nil]
89
+
90
+ 20.times do |n|
91
+ author = Decidim::User.where(organization: feature.organization).all.sample
92
+ user_group = [true, false].sample ? author.user_groups.verified.sample : nil
93
+ state, answer = if n > 15
94
+ ["accepted", Decidim::Faker::Localized.sentence(10)]
95
+ elsif n > 9
96
+ ["rejected", nil]
97
+ elsif n > 6
98
+ ["evaluating", nil]
99
+ else
100
+ [nil, nil]
101
+ end
102
+
103
+ proposal = Decidim::Proposals::Proposal.create!(
104
+ feature: feature,
105
+ category: process.categories.sample,
106
+ scope: scopes.sample,
107
+ title: Faker::Lorem.sentence(2),
108
+ body: Faker::Lorem.paragraphs(2).join("\n"),
109
+ author: author,
110
+ user_group: user_group,
111
+ state: state,
112
+ answer: answer,
113
+ answered_at: Time.current
89
114
  )
90
- categories = feature.participatory_process.categories
91
- # So that we have some with global scope
92
- scopes = feature.organization.scopes + [nil]
93
-
94
- 20.times do |n|
95
- author = Decidim::User.where(organization: feature.organization).all.sample
96
- user_group = [true, false].sample ? author.user_groups.verified.sample : nil
97
-
98
- proposal = Decidim::Proposals::Proposal.create!(
99
- feature: feature,
100
- category: categories.sample,
101
- scope: scopes.sample,
102
- title: Faker::Lorem.sentence(2),
103
- body: Faker::Lorem.paragraphs(2).join("\n"),
104
- author: author,
105
- user_group: user_group
115
+
116
+ rand(3).times do |m|
117
+ email = "vote-author-#{process.id}-#{n}-#{m}@example.org"
118
+ name = "#{Faker::Name.name} #{process.id} #{n} #{m}"
119
+
120
+ author = Decidim::User.find_or_initialize_by(email: email)
121
+ author.update!(
122
+ password: "password1234",
123
+ password_confirmation: "password1234",
124
+ name: name,
125
+ organization: feature.organization,
126
+ tos_agreement: "1",
127
+ confirmed_at: Time.current,
128
+ comments_notifications: true,
129
+ replies_notifications: true
106
130
  )
107
131
 
108
- if n > 15
109
- proposal.state = "accepted"
110
- proposal.answered_at = Time.current
111
- proposal.save!
112
- elsif n > 9
113
- proposal.state = "rejected"
114
- proposal.answered_at = Time.current
115
- proposal.answer = Decidim::Faker::Localized.sentence(10)
116
- proposal.save!
117
- elsif n > 6
118
- proposal.state = "evaluating"
119
- proposal.answered_at = Time.current
120
- proposal.save!
121
- end
122
-
123
- rand(3).times do |m|
124
- email = "vote-author-#{process.id}-#{n}-#{m}@example.org"
125
- name = "#{Faker::Name.name} #{process.id} #{n} #{m}"
126
-
127
- author = Decidim::User.create!(email: email,
128
- password: "password1234",
129
- password_confirmation: "password1234",
130
- name: name,
131
- organization: feature.organization,
132
- tos_agreement: "1",
133
- confirmed_at: Time.current,
134
- comments_notifications: true,
135
- replies_notifications: true)
136
-
137
- Decidim::Proposals::ProposalVote.create!(proposal: proposal,
138
- author: author)
139
- end
140
-
141
- Decidim::Comments::Seed.comments_for(proposal)
132
+ Decidim::Proposals::ProposalVote.create!(proposal: proposal,
133
+ author: author)
142
134
  end
135
+
136
+ Decidim::Comments::Seed.comments_for(proposal)
143
137
  end
144
138
  end
145
139
  end
@@ -5,7 +5,6 @@ module Decidim
5
5
  # This class serializes a Proposal so can be exported to CSV, JSON or other
6
6
  # formats.
7
7
  class ProposalSerializer < Decidim::Exporters::Serializer
8
- include Rails.application.routes.url_helpers
9
8
  include Decidim::ResourceHelper
10
9
 
11
10
  # Public: Initializes the serializer with a proposal.
@@ -44,27 +43,14 @@ module Decidim
44
43
  proposal.feature
45
44
  end
46
45
 
47
- def organization
48
- feature.organization
49
- end
50
-
51
46
  def meetings
52
47
  @proposal.linked_resources(:meetings, "proposals_from_meeting").map do |meeting|
53
48
  Decidim::ResourceLocatorPresenter.new(meeting).url
54
49
  end
55
50
  end
56
51
 
57
- def participatory_process
58
- feature.participatory_process
59
- end
60
-
61
52
  def url
62
- Decidim::Proposals::Engine.routes.url_helpers.proposal_url(
63
- proposal,
64
- feature_id: feature,
65
- participatory_process_id: participatory_process,
66
- host: organization.host
67
- )
53
+ Decidim::ResourceLocatorPresenter.new(proposal).url
68
54
  end
69
55
  end
70
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-proposals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.3
4
+ version: 0.4.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -18,28 +18,28 @@ dependencies:
18
18
  requirements:
19
19
  - - '='
20
20
  - !ruby/object:Gem::Version
21
- version: 0.4.3
21
+ version: 0.4.4
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
25
25
  requirements:
26
26
  - - '='
27
27
  - !ruby/object:Gem::Version
28
- version: 0.4.3
28
+ version: 0.4.4
29
29
  - !ruby/object:Gem::Dependency
30
30
  name: decidim-comments
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
33
  - - '='
34
34
  - !ruby/object:Gem::Version
35
- version: 0.4.3
35
+ version: 0.4.4
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
40
  - - '='
41
41
  - !ruby/object:Gem::Version
42
- version: 0.4.3
42
+ version: 0.4.4
43
43
  - !ruby/object:Gem::Dependency
44
44
  name: rectify
45
45
  requirement: !ruby/object:Gem::Requirement
@@ -88,56 +88,70 @@ dependencies:
88
88
  requirements:
89
89
  - - '='
90
90
  - !ruby/object:Gem::Version
91
- version: 0.4.3
91
+ version: 0.4.4
92
92
  type: :development
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: 0.4.3
98
+ version: 0.4.4
99
+ - !ruby/object:Gem::Dependency
100
+ name: decidim-admin
101
+ requirement: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - '='
104
+ - !ruby/object:Gem::Version
105
+ version: 0.4.4
106
+ type: :development
107
+ prerelease: false
108
+ version_requirements: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - '='
111
+ - !ruby/object:Gem::Version
112
+ version: 0.4.4
99
113
  - !ruby/object:Gem::Dependency
100
114
  name: decidim-meetings
101
115
  requirement: !ruby/object:Gem::Requirement
102
116
  requirements:
103
117
  - - '='
104
118
  - !ruby/object:Gem::Version
105
- version: 0.4.3
119
+ version: 0.4.4
106
120
  type: :development
107
121
  prerelease: false
108
122
  version_requirements: !ruby/object:Gem::Requirement
109
123
  requirements:
110
124
  - - '='
111
125
  - !ruby/object:Gem::Version
112
- version: 0.4.3
126
+ version: 0.4.4
113
127
  - !ruby/object:Gem::Dependency
114
128
  name: decidim-results
115
129
  requirement: !ruby/object:Gem::Requirement
116
130
  requirements:
117
131
  - - '='
118
132
  - !ruby/object:Gem::Version
119
- version: 0.4.3
133
+ version: 0.4.4
120
134
  type: :development
121
135
  prerelease: false
122
136
  version_requirements: !ruby/object:Gem::Requirement
123
137
  requirements:
124
138
  - - '='
125
139
  - !ruby/object:Gem::Version
126
- version: 0.4.3
140
+ version: 0.4.4
127
141
  - !ruby/object:Gem::Dependency
128
142
  name: decidim-budgets
129
143
  requirement: !ruby/object:Gem::Requirement
130
144
  requirements:
131
145
  - - '='
132
146
  - !ruby/object:Gem::Version
133
- version: 0.4.3
147
+ version: 0.4.4
134
148
  type: :development
135
149
  prerelease: false
136
150
  version_requirements: !ruby/object:Gem::Requirement
137
151
  requirements:
138
152
  - - '='
139
153
  - !ruby/object:Gem::Version
140
- version: 0.4.3
154
+ version: 0.4.4
141
155
  description: A proposals component for decidim's participatory processes.
142
156
  email:
143
157
  - josepjaume@gmail.com