Class: Decidim::Initiatives::InitiativeForm

Inherits:
PreviousForm show all
Includes:
AttachmentAttributes, TranslatableAttributes
Defined in:
decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb

Overview

A form object used to collect the data for a new initiative.

Constant Summary

Constants included from AttributeObject::TypeMap

AttributeObject::TypeMap::Boolean, AttributeObject::TypeMap::Decimal

Instance Attribute Summary

Attributes inherited from AttributeObject::Form

#context

Instance Method Summary collapse

Methods included from TranslatableAttributes

#default_locale?

Methods inherited from PreviousForm

#type

Methods inherited from AttributeObject::Form

ensure_hash, from_model, from_params, hash_from, infer_model_name, mimic, mimicked_model_name, model_name, #persisted?, #to_key, #to_model, #to_param, #valid?, #with_context

Methods included from AttributeObject::Model

#[], #[]=, #attributes, #attributes_with_values, #initialize, #to_h

Instance Method Details

#areaObject



54
55
56
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 54

def area
  @area ||= current_organization.areas.find_by(id: area_id)
end

#area_updatable?Boolean

Returns:



50
51
52
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 50

def area_updatable?
  @area_updatable ||= current_user.admin? || context.initiative.created?
end

#available_scopesObject



78
79
80
81
82
83
84
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 78

def available_scopes
  @available_scopes ||= if type.only_global_scope_enabled?
                          type.scopes.where(scope: nil)
                        else
                          type.scopes
                        end
end

#initiative_typeObject



58
59
60
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 58

def initiative_type
  @initiative_type ||= type_id ? InitiativesType.find(type_id) : context.initiative.type
end

#map_model(model) ⇒ Object



33
34
35
36
37
38
39
40
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 33

def map_model(model)
  self.type_id = model.type.id
  self.scope_id = model.scope&.id
  self.decidim_user_group_id = model.decidim_user_group_id
  self.signature_type = model.signature_type || initiative_type.signature_type
  self.title = translated_attribute(model.title)
  self.description = translated_attribute(model.description)
end

#scopeObject



68
69
70
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 68

def scope
  @scope ||= Scope.find(scope_id) if scope_id.present?
end

#scope_idObject



72
73
74
75
76
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 72

def scope_id
  return nil if type.only_global_scope_enabled?

  super.presence
end

#scoped_type_idObject



62
63
64
65
66
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 62

def scoped_type_id
  return unless type && scope_id

  type.scopes.find_by(decidim_scopes_id: scope_id.presence).id
end

#signature_type_updatable?Boolean

Returns:



42
43
44
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 42

def signature_type_updatable?
  state == "created" || state.nil?
end

#state_updatable?Boolean

Returns:



46
47
48
# File 'decidim-initiatives/app/forms/decidim/initiatives/initiative_form.rb', line 46

def state_updatable?
  false
end