decidim-debates 0.30.1 → 0.31.0.rc1

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.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/debates/debate_card_metadata_cell.rb +33 -2
  3. data/app/cells/decidim/debates/debate_l_cell.rb +1 -1
  4. data/app/commands/decidim/debates/admin/create_debate.rb +2 -2
  5. data/app/commands/decidim/debates/admin/update_debate.rb +2 -2
  6. data/app/commands/decidim/debates/create_debate.rb +2 -3
  7. data/app/commands/decidim/debates/update_debate.rb +2 -2
  8. data/app/controllers/decidim/debates/admin/debate_closes_controller.rb +1 -1
  9. data/app/controllers/decidim/debates/admin/debates_controller.rb +2 -2
  10. data/app/controllers/decidim/debates/debates_controller.rb +4 -4
  11. data/app/forms/decidim/debates/debate_form.rb +0 -2
  12. data/app/helpers/decidim/debates/application_helper.rb +3 -4
  13. data/app/models/decidim/debates/debate.rb +32 -10
  14. data/app/packs/src/decidim/debates/admin/debates.js +2 -2
  15. data/app/permissions/decidim/debates/permissions.rb +3 -3
  16. data/app/presenters/decidim/debates/admin_log/value_types/debate_title_description_presenter.rb +1 -1
  17. data/app/presenters/decidim/debates/debate_presenter.rb +6 -14
  18. data/app/views/decidim/debates/admin/debate_closes/edit.html.erb +1 -1
  19. data/app/views/decidim/debates/admin/debates/_actions.html.erb +71 -27
  20. data/app/views/decidim/debates/admin/debates/_debate-tr.html.erb +5 -5
  21. data/app/views/decidim/debates/admin/debates/_form.html.erb +2 -2
  22. data/app/views/decidim/debates/admin/debates/index.html.erb +8 -5
  23. data/app/views/decidim/debates/admin/debates/manage_trash.html.erb +2 -1
  24. data/app/views/decidim/debates/debates/_close_debate_modal.html.erb +1 -1
  25. data/app/views/decidim/debates/debates/_debate_actions.html.erb +8 -8
  26. data/app/views/decidim/debates/debates/_form.html.erb +0 -4
  27. data/app/views/decidim/debates/debates/show.html.erb +9 -15
  28. data/config/assets.rb +2 -2
  29. data/config/locales/ar.yml +0 -8
  30. data/config/locales/bg.yml +0 -14
  31. data/config/locales/ca-IT.yml +12 -16
  32. data/config/locales/ca.yml +12 -16
  33. data/config/locales/cs.yml +12 -16
  34. data/config/locales/de.yml +13 -17
  35. data/config/locales/el.yml +0 -14
  36. data/config/locales/en.yml +12 -16
  37. data/config/locales/es-MX.yml +12 -16
  38. data/config/locales/es-PY.yml +12 -16
  39. data/config/locales/es.yml +12 -16
  40. data/config/locales/eu.yml +15 -19
  41. data/config/locales/fi-plain.yml +12 -16
  42. data/config/locales/fi.yml +12 -16
  43. data/config/locales/fr-CA.yml +8 -15
  44. data/config/locales/fr.yml +8 -15
  45. data/config/locales/ga-IE.yml +0 -10
  46. data/config/locales/gl.yml +0 -6
  47. data/config/locales/hu.yml +0 -14
  48. data/config/locales/id-ID.yml +0 -6
  49. data/config/locales/is-IS.yml +0 -4
  50. data/config/locales/it.yml +0 -14
  51. data/config/locales/ja.yml +12 -16
  52. data/config/locales/lb.yml +0 -12
  53. data/config/locales/lt.yml +0 -14
  54. data/config/locales/lv.yml +0 -4
  55. data/config/locales/nl.yml +0 -9
  56. data/config/locales/no.yml +0 -14
  57. data/config/locales/pl.yml +0 -14
  58. data/config/locales/pt-BR.yml +0 -14
  59. data/config/locales/pt.yml +0 -15
  60. data/config/locales/ro-RO.yml +1 -14
  61. data/config/locales/ru.yml +0 -4
  62. data/config/locales/sk.yml +0 -6
  63. data/config/locales/sl.yml +0 -3
  64. data/config/locales/sv.yml +16 -14
  65. data/config/locales/tr-TR.yml +0 -15
  66. data/config/locales/uk.yml +0 -4
  67. data/config/locales/zh-CN.yml +0 -14
  68. data/config/locales/zh-TW.yml +0 -14
  69. data/db/migrate/20250515115545_rename_debates_endorsements_count_to_likes.rb +11 -0
  70. data/lib/decidim/api/debate_type.rb +15 -1
  71. data/lib/decidim/debates/component.rb +25 -9
  72. data/lib/decidim/debates/debate_serializer.rb +2 -2
  73. data/lib/decidim/debates/engine.rb +8 -39
  74. data/lib/decidim/debates/seeds.rb +1 -1
  75. data/lib/decidim/debates/test/factories.rb +22 -21
  76. data/lib/decidim/debates/version.rb +1 -1
  77. metadata +13 -15
  78. data/app/queries/decidim/debates/metrics/debate_followers_metric_measure.rb +0 -31
  79. data/app/queries/decidim/debates/metrics/debate_participants_metric_measure.rb +0 -27
  80. data/app/queries/decidim/debates/metrics/debates_metric_manage.rb +0 -45
@@ -25,25 +25,41 @@ Decidim.register_component(:debates) do |component|
25
25
  end
26
26
 
27
27
  component.settings(:step) do |settings|
28
- settings.attribute :endorsements_enabled, type: :boolean, default: true
29
- settings.attribute :endorsements_blocked, type: :boolean
28
+ settings.attribute :likes_enabled, type: :boolean, default: true
29
+ settings.attribute :likes_blocked, type: :boolean
30
30
  settings.attribute :creation_enabled, type: :boolean, default: false
31
31
  settings.attribute :comments_blocked, type: :boolean, default: false
32
32
  settings.attribute :announcement, type: :text, translated: true, editor: true
33
33
  end
34
34
 
35
- component.register_stat :debates_count, primary: true, priority: Decidim::StatsRegistry::HIGH_PRIORITY do |components, _start_at, _end_at|
35
+ component.register_stat :debates_count,
36
+ primary: true,
37
+ priority: Decidim::StatsRegistry::MEDIUM_PRIORITY,
38
+ icon_name: "discuss-line",
39
+ tooltip_key: "debates_count_tooltip" do |components, _start_at, _end_at|
36
40
  Decidim::Debates::Debate.where(component: components).not_hidden.count
37
41
  end
38
42
 
39
- component.register_stat :followers_count, tag: :followers, priority: Decidim::StatsRegistry::LOW_PRIORITY do |components, _start_at, _end_at|
43
+ component.register_stat :followers_count,
44
+ tag: :followers,
45
+ icon_name: "user-follow-line",
46
+ tooltip_key: "followers_count_tooltip",
47
+ priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |components, _start_at, _end_at|
40
48
  debates_ids = Decidim::Debates::Debate.where(component: components).not_hidden.pluck(:id)
41
49
  Decidim::Follow.where(decidim_followable_type: "Decidim::Debates::Debate", decidim_followable_id: debates_ids).count
42
50
  end
43
51
 
44
- component.register_stat :endorsements_count, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |components, _start_at, _end_at|
52
+ component.register_stat :comments_count,
53
+ priority: Decidim::StatsRegistry::HIGH_PRIORITY,
54
+ icon_name: "chat-1-line",
55
+ tooltip_key: "comments_count",
56
+ tag: :comments do |components, _start_at, _end_at|
57
+ Decidim::Debates::Debate.where(component: components).not_hidden.count
58
+ end
59
+
60
+ component.register_stat :likes_count, priority: Decidim::StatsRegistry::LOW_PRIORITY do |components, _start_at, _end_at|
45
61
  debates_ids = Decidim::Debates::Debate.where(component: components).not_hidden.pluck(:id)
46
- Decidim::Endorsement.where(resource_id: debates_ids, resource_type: Decidim::Debates::Debate.name).count
62
+ Decidim::Like.where(resource_id: debates_ids, resource_type: Decidim::Debates::Debate.name).count
47
63
  end
48
64
 
49
65
  component.register_resource(:debate) do |resource|
@@ -51,10 +67,10 @@ Decidim.register_component(:debates) do |component|
51
67
  resource.card = "decidim/debates/debate"
52
68
  resource.reported_content_cell = "decidim/debates/reported_content"
53
69
  resource.searchable = true
54
- resource.actions = %w(create endorse comment)
70
+ resource.actions = %w(create like comment)
55
71
  end
56
72
 
57
- component.actions = %w(create endorse comment)
73
+ component.actions = %w(create like comment)
58
74
 
59
75
  component.exports :debates do |exports|
60
76
  exports.collection do |component_instance|
@@ -73,7 +89,7 @@ Decidim.register_component(:debates) do |component|
73
89
  exports.collection do |component_instance|
74
90
  Decidim::Comments::Export.comments_for_resource(
75
91
  Decidim::Debates::Debate, component_instance
76
- ).includes(:author, :user_group, root_commentable: { component: { participatory_space: :organization } })
92
+ ).includes(:author, root_commentable: { component: { participatory_space: :organization } })
77
93
  end
78
94
 
79
95
  exports.include_in_open_data = true
@@ -40,7 +40,7 @@ module Decidim
40
40
  closed_at: resource.closed_at,
41
41
  created_at: resource.created_at,
42
42
  updated_at: resource.updated_at,
43
- endorsements_count: resource.endorsements_count
43
+ likes_count: resource.likes_count
44
44
  }
45
45
  end
46
46
 
@@ -73,7 +73,7 @@ module Decidim
73
73
 
74
74
  def user_url(author)
75
75
  if author.respond_to?(:nickname)
76
- profile_url(author) # is a Decidim::User or Decidim::UserGroup
76
+ profile_url(author) # is a Decidim::User
77
77
  else
78
78
  root_url # is a Decidim::Organization
79
79
  end
@@ -46,7 +46,7 @@ module Decidim
46
46
  Decidim::Gamification.register_badge(:commented_debates) do |badge|
47
47
  badge.levels = [1, 5, 10, 30, 50]
48
48
 
49
- badge.valid_for = [:user, :user_group]
49
+ badge.valid_for = [:user]
50
50
 
51
51
  badge.reset = lambda do |user|
52
52
  debates = Decidim::Comments::Comment.where(
@@ -62,49 +62,18 @@ module Decidim
62
62
  comment = Decidim::Comments::Comment.find(data[:comment_id])
63
63
  next unless comment.decidim_root_commentable_type == "Decidim::Debates::Debate"
64
64
 
65
- if comment.user_group.present?
66
- comments = Decidim::Comments::Comment.where(
67
- decidim_root_commentable_id: comment.decidim_root_commentable_id,
68
- decidim_root_commentable_type: comment.decidim_root_commentable_type,
69
- user_group: comment.user_group
70
- )
71
-
72
- Decidim::Gamification.increment_score(comment.user_group, :commented_debates) if comments.count == 1
73
- elsif comment.author.present?
74
- comments = Decidim::Comments::Comment.where(
75
- decidim_root_commentable_id: comment.decidim_root_commentable_id,
76
- decidim_root_commentable_type: comment.decidim_root_commentable_type,
77
- author: comment.author
78
- )
79
-
80
- Decidim::Gamification.increment_score(comment.author, :commented_debates) if comments.count == 1
81
- end
82
- end
83
- end
84
- end
85
-
86
- initializer "decidim_debates.register_metrics" do
87
- Decidim.metrics_registry.register(:debates) do |metric_registry|
88
- metric_registry.manager_class = "Decidim::Debates::Metrics::DebatesMetricManage"
65
+ comments = Decidim::Comments::Comment.where(
66
+ decidim_root_commentable_id: comment.decidim_root_commentable_id,
67
+ decidim_root_commentable_type: comment.decidim_root_commentable_type,
68
+ author: comment.author
69
+ )
89
70
 
90
- metric_registry.settings do |settings|
91
- settings.attribute :highlighted, type: :boolean, default: false
92
- settings.attribute :scopes, type: :array, default: %w(participatory_process)
93
- settings.attribute :weight, type: :integer, default: 3
94
- settings.attribute :stat_block, type: :string, default: "small"
71
+ Decidim::Gamification.increment_score(comment.author, :commented_debates) if comments.count == 1
95
72
  end
96
73
  end
97
-
98
- Decidim.metrics_operation.register(:participants, :debates) do |metric_operation|
99
- metric_operation.manager_class = "Decidim::Debates::Metrics::DebateParticipantsMetricMeasure"
100
- end
101
-
102
- Decidim.metrics_operation.register(:followers, :debates) do |metric_operation|
103
- metric_operation.manager_class = "Decidim::Debates::Metrics::DebateFollowersMetricMeasure"
104
- end
105
74
  end
106
75
 
107
- initializer "decidim_debates.webpacker.assets_path" do
76
+ initializer "decidim_debates.shakapacker.assets_path" do
108
77
  Decidim.register_assets_path File.expand_path("app/packs", root)
109
78
  end
110
79
 
@@ -33,7 +33,7 @@ module Decidim
33
33
  Decidim::Component.create!(params)
34
34
  end
35
35
 
36
- 5.times do |x|
36
+ number_of_records.times do |x|
37
37
  finite = x != 2
38
38
  if finite
39
39
  start_time = [rand(1..20).weeks.from_now, rand(1..20).weeks.ago].sample
@@ -21,7 +21,18 @@ FactoryBot.define do
21
21
  comments_layout { "single_column" }
22
22
  deleted_at { nil }
23
23
 
24
- trait :open_ama do
24
+ trait :with_likes do
25
+ after :create do |post, evaluator|
26
+ 5.times.collect do
27
+ create(:like,
28
+ resource: post,
29
+ skip_injection: evaluator.skip_injection,
30
+ author: build(:user, :confirmed, skip_injection: evaluator.skip_injection, organization: post.participatory_space.organization))
31
+ end
32
+ end
33
+ end
34
+
35
+ trait :ongoing_ama do
25
36
  start_time { 1.day.ago }
26
37
  end_time { 1.day.from_now }
27
38
  end
@@ -38,16 +49,6 @@ FactoryBot.define do
38
49
  author { component.try(:organization) }
39
50
  end
40
51
 
41
- trait :user_group_author do
42
- author do
43
- create(:user, organization: component.organization, skip_injection:) if component
44
- end
45
-
46
- user_group do
47
- create(:user_group, :verified, organization: component.organization, users: [author], skip_injection:) if component
48
- end
49
- end
50
-
51
52
  trait :hidden do
52
53
  after :create do |debate, evaluator|
53
54
  create(:moderation, hidden_at: Time.current, reportable: debate, skip_injection: evaluator.skip_injection)
@@ -60,8 +61,8 @@ FactoryBot.define do
60
61
  end
61
62
 
62
63
  after(:build) do |debate|
63
- debate.title = Decidim::ContentProcessor.parse_with_processor(:hashtag, debate.title, current_organization: debate.organization).rewrite
64
- debate.description = Decidim::ContentProcessor.parse_with_processor(:hashtag, debate.description, current_organization: debate.organization).rewrite
64
+ debate.title = Decidim::ContentProcessor.parse(debate.title, current_organization: debate.organization).rewrite
65
+ debate.description = Decidim::ContentProcessor.parse_with_processor(:inline_images, debate.description, current_organization: debate.organization).rewrite
65
66
  end
66
67
  end
67
68
 
@@ -98,32 +99,32 @@ FactoryBot.define do
98
99
  end
99
100
 
100
101
  trait :with_votes_enabled do
101
- # Needed for endorsements tests
102
+ # Needed for likes tests
102
103
  end
103
104
 
104
- trait :with_endorsements_blocked do
105
+ trait :with_likes_blocked do
105
106
  step_settings do
106
107
  {
107
108
  participatory_space.active_step.id => {
108
- endorsements_enabled: true,
109
- endorsements_blocked: true
109
+ likes_enabled: true,
110
+ likes_blocked: true
110
111
  }
111
112
  }
112
113
  end
113
114
  end
114
115
 
115
- trait :with_endorsements_enabled do
116
+ trait :with_likes_enabled do
116
117
  step_settings do
117
118
  {
118
- participatory_space.active_step.id => { endorsements_enabled: true }
119
+ participatory_space.active_step.id => { likes_enabled: true }
119
120
  }
120
121
  end
121
122
  end
122
123
 
123
- trait :with_endorsements_disabled do
124
+ trait :with_likes_disabled do
124
125
  step_settings do
125
126
  {
126
- participatory_space.active_step.id => { endorsements_enabled: false }
127
+ participatory_space.active_step.id => { likes_enabled: false }
127
128
  }
128
129
  end
129
130
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-debates version.
5
5
  module Debates
6
6
  def self.version
7
- "0.30.1"
7
+ "0.31.0.rc1"
8
8
  end
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-debates
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.1
4
+ version: 0.31.0.rc1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2025-06-17 00:00:00.000000000 Z
14
+ date: 2025-09-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: decidim-comments
@@ -19,70 +19,70 @@ dependencies:
19
19
  requirements:
20
20
  - - '='
21
21
  - !ruby/object:Gem::Version
22
- version: 0.30.1
22
+ version: 0.31.0.rc1
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - '='
28
28
  - !ruby/object:Gem::Version
29
- version: 0.30.1
29
+ version: 0.31.0.rc1
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: decidim-core
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 0.30.1
36
+ version: 0.31.0.rc1
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 0.30.1
43
+ version: 0.31.0.rc1
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: decidim-admin
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
48
  - - '='
49
49
  - !ruby/object:Gem::Version
50
- version: 0.30.1
50
+ version: 0.31.0.rc1
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
55
  - - '='
56
56
  - !ruby/object:Gem::Version
57
- version: 0.30.1
57
+ version: 0.31.0.rc1
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: decidim-assemblies
60
60
  requirement: !ruby/object:Gem::Requirement
61
61
  requirements:
62
62
  - - '='
63
63
  - !ruby/object:Gem::Version
64
- version: 0.30.1
64
+ version: 0.31.0.rc1
65
65
  type: :development
66
66
  prerelease: false
67
67
  version_requirements: !ruby/object:Gem::Requirement
68
68
  requirements:
69
69
  - - '='
70
70
  - !ruby/object:Gem::Version
71
- version: 0.30.1
71
+ version: 0.31.0.rc1
72
72
  - !ruby/object:Gem::Dependency
73
73
  name: decidim-dev
74
74
  requirement: !ruby/object:Gem::Requirement
75
75
  requirements:
76
76
  - - '='
77
77
  - !ruby/object:Gem::Version
78
- version: 0.30.1
78
+ version: 0.31.0.rc1
79
79
  type: :development
80
80
  prerelease: false
81
81
  version_requirements: !ruby/object:Gem::Requirement
82
82
  requirements:
83
83
  - - '='
84
84
  - !ruby/object:Gem::Version
85
- version: 0.30.1
85
+ version: 0.31.0.rc1
86
86
  description: A debates component for decidim's participatory spaces.
87
87
  email:
88
88
  - josepjaume@gmail.com
@@ -145,9 +145,6 @@ files:
145
145
  - app/presenters/decidim/debates/admin_log/value_types/debate_title_description_presenter.rb
146
146
  - app/presenters/decidim/debates/debate_presenter.rb
147
147
  - app/presenters/decidim/debates/official_author_presenter.rb
148
- - app/queries/decidim/debates/metrics/debate_followers_metric_measure.rb
149
- - app/queries/decidim/debates/metrics/debate_participants_metric_measure.rb
150
- - app/queries/decidim/debates/metrics/debates_metric_manage.rb
151
148
  - app/serializers/decidim/debates/download_your_data_debate_serializer.rb
152
149
  - app/services/decidim/debates/debate_search.rb
153
150
  - app/services/decidim/debates/diff_renderer.rb
@@ -278,6 +275,7 @@ files:
278
275
  - db/migrate/20210519201932_add_comments_availability_columns_to_debates_table.rb
279
276
  - db/migrate/20240828103648_add_deleted_at_to_decidim_debates_debates.rb
280
277
  - db/migrate/20241017153555_add_comments_layout_to_debates.rb
278
+ - db/migrate/20250515115545_rename_debates_endorsements_count_to_likes.rb
281
279
  - decidim-debates.gemspec
282
280
  - lib/decidim/api/debate_type.rb
283
281
  - lib/decidim/api/debates_type.rb
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Debates
5
- module Metrics
6
- # Searches for unique Users following the next objects
7
- # - Debates
8
- class DebateFollowersMetricMeasure < Decidim::MetricMeasure
9
- def valid?
10
- super && @resource.is_a?(Decidim::Component)
11
- end
12
-
13
- def calculate
14
- debates = Decidim::Debates::Debate.where(component: @resource).joins(:component)
15
-
16
- debates_followers = Decidim::Follow.where(followable: debates).joins(:user)
17
- .where(decidim_follows: { created_at: ..end_time })
18
- cumulative_users = debates_followers.pluck(:decidim_user_id)
19
-
20
- debates_followers = debates_followers.where(decidim_follows: { created_at: start_time.. })
21
- quantity_users = debates_followers.pluck(:decidim_user_id)
22
-
23
- {
24
- cumulative_users: cumulative_users.uniq,
25
- quantity_users: quantity_users.uniq
26
- }
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Debates
5
- module Metrics
6
- # Searches for Participants in the following actions
7
- # - Create a debate (Debates)
8
- class DebateParticipantsMetricMeasure < Decidim::MetricMeasure
9
- def valid?
10
- super && @resource.is_a?(Decidim::Component)
11
- end
12
-
13
- def calculate
14
- debates = Decidim::Debates::Debate.where(component: @resource).joins(:component)
15
- .where(decidim_debates_debates: { created_at: ..end_time })
16
- .where(decidim_author_type: Decidim::UserBaseEntity.name)
17
- .where.not(author: nil)
18
-
19
- {
20
- cumulative_users: debates.pluck(:decidim_author_id),
21
- quantity_users: debates.where(decidim_debates_debates: { created_at: start_time.. }).pluck(:decidim_author_id)
22
- }
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- module Debates
5
- module Metrics
6
- class DebatesMetricManage < Decidim::MetricManage
7
- def metric_name
8
- "debates"
9
- end
10
-
11
- def save
12
- cumulative.each do |key, cumulative_value|
13
- next if cumulative_value.zero?
14
-
15
- quantity_value = quantity[key] || 0
16
- taxonomy_id, space_type, space_id = key
17
- record = Decidim::Metric.find_or_initialize_by(day: @day.to_s, metric_type: @metric_name,
18
- organization: @organization, decidim_taxonomy_id: taxonomy_id,
19
- participatory_space_type: space_type, participatory_space_id: space_id)
20
- record.assign_attributes(cumulative: cumulative_value, quantity: quantity_value)
21
- record.save!
22
- end
23
- end
24
-
25
- private
26
-
27
- def query
28
- return @query if @query
29
-
30
- @query = Decidim::Debates::Debate.where(component: visible_components_from_spaces(retrieve_participatory_spaces)).joins(:component)
31
- .left_outer_joins(:taxonomizations)
32
- @query = @query.where(decidim_debates_debates: { start_time: ..end_time })
33
- @query = @query.group("decidim_taxonomizations.taxonomy_id",
34
- :participatory_space_type,
35
- :participatory_space_id)
36
- @query
37
- end
38
-
39
- def quantity
40
- @quantity ||= query.where(decidim_debates_debates: { start_time: start_time.. }).count
41
- end
42
- end
43
- end
44
- end
45
- end