Class: Decidim::Organization
Overview
Organizations are one of the main models of Decidim. In a single Decidim installation we can find many organizations and each of them can start their own participatory processes.
Constant Summary
collapse
- SOCIAL_HANDLERS =
[:twitter, :facebook, :instagram, :youtube, :github].freeze
- AVAILABLE_MACHINE_TRANSLATION_DISPLAY_PRIORITIES =
%w(original translation).freeze
Class Method Summary
collapse
Instance Method Summary
collapse
#attached_uploader, #maximum_avatar_size
empty_translatable, ensure_translatable, multi_translation, translated_in_current_locale?
#attachment?, #default_locale?
Class Method Details
.log_presenter_class_for(_log) ⇒ Object
Instance Method Details
#admin_terms_of_service_body ⇒ Object
135
136
137
138
|
# File 'decidim-core/app/models/decidim/organization.rb', line 135
def admin_terms_of_service_body
self[:admin_terms_of_service_body] ||
multi_translation("decidim.admin_terms_of_service.default_body", available_locales)
end
|
#available_authorization_handlers ⇒ Object
94
95
96
|
# File 'decidim-core/app/models/decidim/organization.rb', line 94
def available_authorization_handlers
available_authorizations & Decidim.authorization_handlers.map(&:name)
end
|
#customize_welcome_notification ⇒ Object
121
122
123
|
# File 'decidim-core/app/models/decidim/organization.rb', line 121
def customize_welcome_notification
self[:welcome_notification_subject].present? || self[:welcome_notification_body].present?
end
|
#enabled_omniauth_providers ⇒ Object
154
155
156
157
158
159
|
# File 'decidim-core/app/models/decidim/organization.rb', line 154
def enabled_omniauth_providers
return Decidim::OmniauthProvider.enabled || {} if omniauth_settings.nil?
default_except_disabled = Decidim::OmniauthProvider.enabled.except(*tenant_disabled_providers_keys)
default_except_disabled.merge(tenant_enabled_providers)
end
|
#favicon_ico ⇒ Object
179
180
181
182
183
184
185
186
|
# File 'decidim-core/app/models/decidim/organization.rb', line 179
def favicon_ico
return unless favicon.attached?
return favicon if favicon.content_type == "image/vnd.microsoft.icon"
uploader = attached_uploader(:favicon)
variant = uploader.variant(:favicon)
variant.processed.image
end
|
#machine_translation_prioritizes_original? ⇒ Boolean
161
162
163
|
# File 'decidim-core/app/models/decidim/organization.rb', line 161
def machine_translation_prioritizes_original?
machine_translation_display_priority == "original"
end
|
#machine_translation_prioritizes_translation? ⇒ Boolean
165
166
167
|
# File 'decidim-core/app/models/decidim/organization.rb', line 165
def machine_translation_prioritizes_translation?
machine_translation_display_priority == "translation"
end
|
#maximum_upload_size ⇒ Object
This is needed for the upload validations
90
91
92
|
# File 'decidim-core/app/models/decidim/organization.rb', line 90
def maximum_upload_size
settings.upload_maximum_file_size
end
|
#open_data_file_path(resource = nil) ⇒ Object
148
149
150
151
152
|
# File 'decidim-core/app/models/decidim/organization.rb', line 148
def open_data_file_path(resource = nil)
return "#{host}-open-data.zip" if resource.nil?
"#{host}-open-data-#{resource}.csv"
end
|
#participatory_spaces ⇒ Object
105
106
107
108
109
|
# File 'decidim-core/app/models/decidim/organization.rb', line 105
def participatory_spaces
@participatory_spaces ||= Decidim.participatory_space_manifests.flat_map do |manifest|
manifest.participatory_spaces.call(self)
end
end
|
#presenter ⇒ Object
Returns the presenter for this author, to be used in the views. Required by ActsAsAuthor.
#public_participatory_spaces ⇒ Object
111
112
113
114
115
|
# File 'decidim-core/app/models/decidim/organization.rb', line 111
def public_participatory_spaces
@public_participatory_spaces ||= Decidim.participatory_space_manifests.flat_map do |manifest|
manifest.participatory_spaces.call(self).public_spaces
end
end
|
#published_components ⇒ Object
117
118
119
|
# File 'decidim-core/app/models/decidim/organization.rb', line 117
def published_components
@published_components ||= Component.where(participatory_space: public_participatory_spaces).published
end
|
#sign_in_enabled? ⇒ Boolean
144
145
146
|
# File 'decidim-core/app/models/decidim/organization.rb', line 144
def sign_in_enabled?
!users_registration_mode_disabled?
end
|
#sign_up_enabled? ⇒ Boolean
140
141
142
|
# File 'decidim-core/app/models/decidim/organization.rb', line 140
def sign_up_enabled?
users_registration_mode_enabled?
end
|
#static_pages_accessible_for(user) ⇒ Object
175
176
177
|
# File 'decidim-core/app/models/decidim/organization.rb', line 175
def static_pages_accessible_for(user)
static_pages.accessible_for(self, user)
end
|
#top_scopes ⇒ Object
Returns top level scopes for this organization.
Returns an ActiveRecord::Relation.
101
102
103
|
# File 'decidim-core/app/models/decidim/organization.rb', line 101
def top_scopes
@top_scopes ||= scopes.top_level
end
|
#unique_name ⇒ Object
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'decidim-core/app/models/decidim/organization.rb', line 62
def unique_name
base_query = new_record? ? Decidim::Organization.all : Decidim::Organization.where.not(id:).all
organization_names = []
base_query.pluck(:name).each do |value|
organization_names += value.except("machine_translations").values
organization_names += value.fetch("machine_translations", {}).values
end
organization_names = organization_names.map(&:downcase).compact_blank
name.each do |language, value|
next if value.is_a?(Hash)
errors.add("name_#{language}", :taken) if organization_names.include?(value.downcase)
end
end
|
#welcome_notification_body ⇒ Object
130
131
132
133
|
# File 'decidim-core/app/models/decidim/organization.rb', line 130
def welcome_notification_body
self[:welcome_notification_body] ||
multi_translation("decidim.welcome_notification.default_body", available_locales)
end
|
#welcome_notification_subject ⇒ Object
125
126
127
128
|
# File 'decidim-core/app/models/decidim/organization.rb', line 125
def welcome_notification_subject
self[:welcome_notification_subject] ||
multi_translation("decidim.welcome_notification.default_subject", available_locales)
end
|