Class: Decidim::ParticipatoryProcess

Overview

Interaction between a user and an organization is done via a ParticipatoryProcess. It is a unit of action from the Organization point of view that groups several components (proposals, debates…) distributed in steps that get enabled or disabled depending on which step is currently active.

Class Method Summary collapse

Instance Method Summary collapse

Methods included from HasUploadValidations

#attached_uploader, #maximum_avatar_size, #maximum_upload_size

Methods included from Searchable

searchable_resources, searchable_resources_by_type, searchable_resources_of_type_comment, searchable_resources_of_type_component, searchable_resources_of_type_participant, searchable_resources_of_type_participatory_space

Methods included from Followable

#followers

Methods included from Publicable

#previously_published?, #publish!, #published?, #unpublish!

Class Method Details

.active_spacesObject



133
134
135
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 133

def self.active_spaces
  active
end

.future_spacesObject



137
138
139
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 137

def self.future_spaces
  upcoming
end

.group_idsObject

Pluck all ParticipatoryProcessGroup ID’s



172
173
174
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 172

def self.group_ids
  pluck(:decidim_participatory_process_group_id)
end

.groupedObject

Return processes that belong to a process group.



129
130
131
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 129

def self.grouped
  where.not(decidim_participatory_process_group_id: nil)
end

.grouplessObject

Return processes that DO NOT belong to a process group.



124
125
126
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 124

def self.groupless
  where(decidim_participatory_process_group_id: nil)
end

.log_presenter_class_for(_log) ⇒ Object



145
146
147
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 145

def self.log_presenter_class_for(_log)
  Decidim::ParticipatoryProcesses::AdminLog::ParticipatoryProcessPresenter
end

.moderators(organization) ⇒ Object



193
194
195
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 193

def self.moderators(organization)
  "#{admin_module_name}::Moderators".constantize.for_organization(organization)
end

.past_spacesObject



141
142
143
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 141

def self.past_spaces
  past
end

Scope to return only the promoted processes.

Returns an ActiveRecord::Relation.



119
120
121
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 119

def self.promoted
  where(promoted: true)
end

.ransackable_associations(_auth_object = nil) ⇒ Object



226
227
228
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 226

def self.ransackable_associations(_auth_object = nil)
  %w(participatory_process_type participatory_process_group taxonomies)
end

.ransackable_attributes(auth_object = nil) ⇒ Object



219
220
221
222
223
224
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 219

def self.ransackable_attributes(auth_object = nil)
  base = %w(title short_description description id)
  return base unless auth_object&.admin?

  base + %w(private_space published_at decidim_participatory_process_group_id)
end

.ransackable_scopes(_auth_object = nil) ⇒ Object



215
216
217
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 215

def self.ransackable_scopes(_auth_object = nil)
  [:with_date, :with_any_taxonomies]
end

Instance Method Details

#active?Boolean

Returns:

  • (Boolean)


153
154
155
156
157
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 153

def active?
  return false if start_date.blank?

  start_date <= Date.current && (end_date.blank? || end_date >= Date.current)
end

#attachment_contextObject



204
205
206
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 204

def attachment_context
  :admin
end

#closed?Boolean

Returns:

  • (Boolean)


176
177
178
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 176

def closed?
  past?
end

#hashtagObject



180
181
182
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 180

def hashtag
  attributes["hashtag"].to_s.delete("#")
end

#moderatorsObject

Overrides the moderators methods from ‘Participable`.



189
190
191
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 189

def moderators
  "#{admin_module_name}::Moderators".constantize.for(self)
end

#past?Boolean

Returns:

  • (Boolean)


159
160
161
162
163
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 159

def past?
  return false if end_date.blank?

  end_date < Date.current
end

#presenterObject



149
150
151
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 149

def presenter
  @presenter ||= Decidim::ParticipatoryProcesses::ParticipatoryProcessPresenter.new(self)
end

#shareable_url(share_token) ⇒ Object



208
209
210
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 208

def shareable_url(share_token)
  EngineRouter.main_proxy(self).participatory_process_url(self, share_token: share_token.token)
end

#to_paramObject



184
185
186
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 184

def to_param
  slug
end

#upcoming?Boolean

Returns:

  • (Boolean)


165
166
167
168
169
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 165

def upcoming?
  return false if start_date.blank?

  start_date > Date.current
end

#user_roles(role_name = nil) ⇒ Object



197
198
199
200
201
202
# File 'decidim-participatory_processes/app/models/decidim/participatory_process.rb', line 197

def user_roles(role_name = nil)
  roles = Decidim::ParticipatoryProcessUserRole.where(participatory_process: self)
  return roles if role_name.blank?

  roles.where(role: role_name)
end