decidim-core 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Rakefile +1 -0
- data/app/assets/stylesheets/decidim/modules/_modules.scss +1 -0
- data/app/assets/stylesheets/decidim/modules/_navbar.scss +3 -3
- data/app/assets/stylesheets/decidim/modules/_pagination.scss +5 -0
- data/app/commands/decidim/authorize_user.rb +1 -0
- data/app/commands/decidim/create_omniauth_registration.rb +1 -0
- data/app/commands/decidim/create_registration.rb +1 -0
- data/app/commands/decidim/create_report.rb +1 -0
- data/app/commands/decidim/invite_user.rb +1 -0
- data/app/commands/decidim/invite_user_again.rb +1 -0
- data/app/commands/decidim/remove_user_role.rb +1 -0
- data/app/commands/decidim/update_account.rb +1 -0
- data/app/commands/decidim/update_notifications_settings.rb +1 -0
- data/app/constraints/decidim/current_feature.rb +1 -0
- data/app/controllers/concerns/decidim/action_authorization.rb +1 -0
- data/app/controllers/concerns/decidim/devise_controllers.rb +3 -0
- data/app/controllers/concerns/decidim/feature_settings.rb +1 -0
- data/app/controllers/concerns/decidim/filter_resource.rb +1 -0
- data/app/controllers/concerns/decidim/needs_organization.rb +1 -1
- data/app/controllers/concerns/decidim/user_profile.rb +1 -0
- data/app/controllers/decidim/account_controller.rb +1 -0
- data/app/controllers/decidim/application_controller.rb +2 -0
- data/app/controllers/decidim/authorizations_controller.rb +1 -0
- data/app/controllers/decidim/cookie_policy_controller.rb +1 -0
- data/app/controllers/decidim/devise/confirmations_controller.rb +1 -0
- data/app/controllers/decidim/devise/invitations_controller.rb +1 -0
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -0
- data/app/controllers/decidim/devise/passwords_controller.rb +1 -0
- data/app/controllers/decidim/devise/registrations_controller.rb +1 -0
- data/app/controllers/decidim/devise/sessions_controller.rb +2 -1
- data/app/controllers/decidim/locales_controller.rb +1 -0
- data/app/controllers/decidim/notifications_settings_controller.rb +1 -0
- data/app/controllers/decidim/own_user_groups_controller.rb +1 -0
- data/app/controllers/decidim/pages_controller.rb +2 -1
- data/app/controllers/decidim/participatory_process_groups_controller.rb +1 -0
- data/app/controllers/decidim/participatory_process_steps_controller.rb +1 -0
- data/app/controllers/decidim/participatory_processes_controller.rb +6 -5
- data/app/controllers/decidim/static_map_controller.rb +1 -0
- data/app/forms/decidim/form.rb +1 -0
- data/app/forms/decidim/report_form.rb +1 -0
- data/app/helpers/decidim/action_authorization_helper.rb +1 -1
- data/app/helpers/decidim/application_helper.rb +1 -1
- data/app/helpers/decidim/aria_selected_link_to_helper.rb +1 -0
- data/app/helpers/decidim/attachments_helper.rb +1 -0
- data/app/helpers/decidim/authorization_form_helper.rb +1 -0
- data/app/helpers/decidim/cookies_helper.rb +1 -1
- data/app/helpers/decidim/decidim_form_helper.rb +1 -0
- data/app/helpers/decidim/feature_reference_helper.rb +1 -0
- data/app/helpers/decidim/filters_helper.rb +1 -0
- data/app/helpers/decidim/humanize_booleans_helper.rb +1 -0
- data/app/helpers/decidim/language_chooser_helper.rb +1 -0
- data/app/helpers/decidim/layout_helper.rb +1 -0
- data/app/helpers/decidim/localized_locales_helper.rb +1 -0
- data/app/helpers/decidim/map_helper.rb +1 -0
- data/app/helpers/decidim/menu_helper.rb +16 -0
- data/app/helpers/decidim/meta_tags_helper.rb +1 -0
- data/app/helpers/decidim/omniauth_helper.rb +1 -0
- data/app/helpers/decidim/orders_helper.rb +1 -0
- data/app/helpers/decidim/organization_scopes_helper.rb +1 -0
- data/app/helpers/decidim/paginate_helper.rb +1 -0
- data/app/helpers/decidim/participatory_process_helper.rb +1 -0
- data/app/helpers/decidim/participatory_process_steps_helper.rb +1 -0
- data/app/helpers/decidim/replace_buttons_helper.rb +1 -0
- data/app/helpers/decidim/resource_helper.rb +1 -0
- data/app/helpers/decidim/translations_helper.rb +1 -0
- data/app/helpers/decidim/user_profile_helper.rb +1 -0
- data/app/helpers/decidim/widget_urls_helper.rb +1 -0
- data/app/jobs/decidim/application_job.rb +1 -0
- data/app/jobs/decidim/export_job.rb +22 -0
- data/app/mailers/decidim/application_mailer.rb +1 -0
- data/app/mailers/decidim/decidim_devise_mailer.rb +2 -1
- data/app/mailers/decidim/export_mailer.rb +1 -0
- data/app/mailers/decidim/newsletter_mailer.rb +1 -0
- data/app/mailers/decidim/reported_mailer.rb +1 -0
- data/app/middleware/decidim/current_organization.rb +1 -0
- data/app/models/decidim/abilities/everyone.rb +1 -0
- data/app/models/decidim/ability.rb +1 -0
- data/app/models/decidim/application_record.rb +1 -0
- data/app/models/decidim/attachment.rb +1 -0
- data/app/models/decidim/authorization.rb +2 -1
- data/app/models/decidim/category.rb +4 -3
- data/app/models/decidim/component.rb +1 -0
- data/app/models/decidim/feature.rb +1 -0
- data/app/models/decidim/identity.rb +2 -2
- data/app/models/decidim/moderation.rb +2 -1
- data/app/models/decidim/newsletter.rb +2 -1
- data/app/models/decidim/organization.rb +7 -6
- data/app/models/decidim/participatory_process.rb +7 -20
- data/app/models/decidim/participatory_process_group.rb +3 -2
- data/app/models/decidim/participatory_process_step.rb +2 -1
- data/app/models/decidim/report.rb +3 -2
- data/app/models/decidim/resource_link.rb +1 -0
- data/app/models/decidim/scope.rb +2 -1
- data/app/models/decidim/static_page.rb +2 -1
- data/app/models/decidim/user.rb +6 -5
- data/app/models/decidim/user_group.rb +23 -7
- data/app/models/decidim/user_group_membership.rb +2 -2
- data/app/presenters/decidim/home_stats_presenter.rb +2 -1
- data/app/presenters/decidim/menu_item_presenter.rb +57 -0
- data/app/presenters/decidim/menu_presenter.rb +47 -0
- data/app/queries/decidim/highlighted_participatory_processes.rb +1 -0
- data/app/queries/decidim/organization_participatory_processes.rb +1 -0
- data/app/queries/decidim/organization_prioritized_participatory_processes.rb +18 -0
- data/app/queries/decidim/{public_participatory_processes.rb → prioritized_participatory_processes.rb} +4 -3
- data/app/queries/decidim/promoted_participatory_processes.rb +1 -0
- data/app/queries/decidim/stats_users_count.rb +1 -0
- data/app/services/decidim/action_authorizer.rb +1 -0
- data/app/services/decidim/authorization_handler.rb +1 -0
- data/app/services/decidim/resource_search.rb +1 -0
- data/app/services/decidim/static_map_generator.rb +1 -0
- data/app/uploaders/decidim/application_uploader.rb +1 -0
- data/app/uploaders/decidim/banner_image_uploader.rb +1 -0
- data/app/uploaders/decidim/hero_image_uploader.rb +1 -0
- data/app/uploaders/decidim/homepage_image_uploader.rb +1 -0
- data/app/uploaders/decidim/image_uploader.rb +1 -0
- data/app/uploaders/decidim/official_image_footer_uploader.rb +1 -0
- data/app/uploaders/decidim/official_image_header_uploader.rb +1 -0
- data/app/uploaders/decidim/organization_favicon_uploader.rb +1 -0
- data/app/uploaders/decidim/organization_logo_uploader.rb +1 -0
- data/app/validators/etiquette_validator.rb +3 -3
- data/app/validators/geocoding_validator.rb +1 -1
- data/app/views/decidim/own_user_groups/index.html.erb +8 -6
- data/app/views/decidim/participatory_processes/index.html.erb +1 -1
- data/app/views/decidim/shared/_orders.html.erb +4 -3
- data/app/views/layouts/decidim/_language_chooser.html.erb +1 -1
- data/app/views/layouts/decidim/_wrapper.html.erb +2 -2
- data/config/i18n-tasks.yml +5 -5
- data/config/initializers/devise.rb +1 -0
- data/config/initializers/foundation_rails_helper.rb +1 -0
- data/config/initializers/invisible_captcha.rb +1 -0
- data/config/initializers/mail_previews.rb +1 -0
- data/config/locales/ca.yml +3 -2
- data/config/locales/en.yml +3 -2
- data/config/locales/es.yml +4 -3
- data/config/locales/eu.yml +23 -1
- data/config/locales/fi.yml +0 -1
- data/config/locales/fr.yml +1 -2
- data/config/locales/nl.yml +0 -1
- data/config/routes.rb +1 -0
- data/db/migrate/20170529150743_add_rejected_at_to_user_groups.rb +5 -0
- data/db/seeds.rb +1 -0
- data/lib/decidim/attributes.rb +1 -0
- data/lib/decidim/attributes/time_with_zone.rb +1 -0
- data/lib/decidim/authorable.rb +1 -0
- data/lib/decidim/authorization_form_builder.rb +1 -0
- data/lib/decidim/core.rb +13 -0
- data/lib/decidim/core/api.rb +1 -0
- data/lib/decidim/core/api/author_interface.rb +1 -0
- data/lib/decidim/core/api/decidim_type.rb +1 -0
- data/lib/decidim/core/api/localized_string_type.rb +1 -0
- data/lib/decidim/core/api/process_step_type.rb +1 -0
- data/lib/decidim/core/api/process_type.rb +1 -0
- data/lib/decidim/core/api/session_type.rb +1 -0
- data/lib/decidim/core/api/translated_field_type.rb +1 -0
- data/lib/decidim/core/api/user_group_type.rb +1 -0
- data/lib/decidim/core/api/user_type.rb +1 -0
- data/lib/decidim/core/engine.rb +21 -1
- data/lib/decidim/core/test.rb +1 -0
- data/lib/decidim/core/test/factories.rb +9 -1
- data/lib/decidim/core/test/shared_examples/authorable.rb +1 -0
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +1 -0
- data/lib/decidim/core/test/shared_examples/has_attachments.rb +1 -0
- data/lib/decidim/core/test/shared_examples/has_category.rb +1 -0
- data/lib/decidim/core/test/shared_examples/has_feature.rb +1 -0
- data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -0
- data/lib/decidim/core/test/shared_examples/has_scope.rb +1 -0
- data/lib/decidim/core/test/shared_examples/localised_email.rb +1 -0
- data/lib/decidim/core/test/shared_examples/manage_moderations_examples.rb +1 -0
- data/lib/decidim/core/test/shared_examples/reportable.rb +1 -0
- data/lib/decidim/core/test/shared_examples/reports_examples.rb +1 -0
- data/lib/decidim/core/version.rb +2 -1
- data/lib/decidim/devise_failure_app.rb +0 -1
- data/lib/decidim/exporters.rb +2 -0
- data/lib/decidim/exporters/csv.rb +1 -0
- data/lib/decidim/exporters/export_data.rb +1 -0
- data/lib/decidim/exporters/exporter.rb +1 -0
- data/lib/decidim/exporters/json.rb +1 -0
- data/lib/decidim/exporters/serializer.rb +30 -0
- data/lib/decidim/faker/localized.rb +1 -0
- data/lib/decidim/feature_manifest.rb +37 -0
- data/lib/decidim/feature_validator.rb +1 -0
- data/lib/decidim/features.rb +1 -0
- data/lib/decidim/features/export_manifest.rb +52 -0
- data/lib/decidim/features/settings_manifest.rb +1 -0
- data/lib/decidim/file_zipper.rb +1 -0
- data/lib/decidim/filter_form_builder.rb +1 -0
- data/lib/decidim/form_builder.rb +2 -1
- data/lib/decidim/has_attachments.rb +4 -3
- data/lib/decidim/has_category.rb +2 -1
- data/lib/decidim/has_feature.rb +1 -0
- data/lib/decidim/has_reference.rb +1 -0
- data/lib/decidim/has_scope.rb +2 -1
- data/lib/decidim/i18n_exceptions.rb +1 -0
- data/lib/decidim/menu.rb +61 -0
- data/lib/decidim/menu_item.rb +31 -0
- data/lib/decidim/menu_registry.rb +65 -0
- data/lib/decidim/page_finder.rb +1 -0
- data/lib/decidim/query_extensions.rb +1 -0
- data/lib/decidim/reportable.rb +1 -0
- data/lib/decidim/resource_manifest.rb +1 -0
- data/lib/decidim/resourceable.rb +1 -0
- data/lib/decidim/stats_registry.rb +1 -0
- data/lib/decidim/translatable_attributes.rb +1 -0
- data/lib/devise/models/decidim_validatable.rb +2 -1
- data/lib/tasks/decidim_tasks.rake +1 -0
- data/lib/tasks/factory_girl.rake +1 -0
- metadata +33 -29
- data/app/services/decidim/public_processes.rb +0 -44
- data/app/views/layouts/decidim/_main_nav.html.erb +0 -11
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
# This module includes helpers to manage menus in layout
|
5
|
+
module MenuHelper
|
6
|
+
# Public: Returns the main menu presenter object
|
7
|
+
def main_menu
|
8
|
+
@main_menu ||= MenuPresenter.new(
|
9
|
+
:menu,
|
10
|
+
self,
|
11
|
+
element_class: "main-nav__link",
|
12
|
+
active_class: "main-nav__link--active"
|
13
|
+
)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
class ExportJob < ApplicationJob
|
5
|
+
queue_as :default
|
6
|
+
|
7
|
+
def perform(user, feature, name, format)
|
8
|
+
export_manifest = feature.manifest.export_manifests.find do |manifest|
|
9
|
+
manifest.name == name.to_sym
|
10
|
+
end
|
11
|
+
|
12
|
+
collection = export_manifest.collection.call(feature)
|
13
|
+
serializer = export_manifest.serializer
|
14
|
+
|
15
|
+
export_data = Decidim::Exporters.const_get(format.upcase).new(collection, serializer).export
|
16
|
+
|
17
|
+
name = "#{name}-#{I18n.localize(Date.today, format: :default)}-#{Time.now.seconds_since_midnight.to_i}"
|
18
|
+
|
19
|
+
ExportMailer.export(user, name, export_data).deliver_now
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# A custom mailer for Devise so we can tweak the invitation instructions for
|
4
5
|
# each role and use a localised version.
|
5
|
-
class DecidimDeviseMailer < Devise::Mailer
|
6
|
+
class DecidimDeviseMailer < ::Devise::Mailer
|
6
7
|
include LocalisedMailer
|
7
8
|
|
8
9
|
layout "decidim/mailer"
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# An authorization is a record that a User has been authorized somehow. Other
|
4
5
|
# models in the system can use different kind of authorizations to allow a
|
@@ -10,7 +11,7 @@ module Decidim
|
|
10
11
|
# depending on the response it allows the creation of the authorization or
|
11
12
|
# not.
|
12
13
|
class Authorization < ApplicationRecord
|
13
|
-
belongs_to :user, foreign_key: "decidim_user_id", class_name: Decidim::User, inverse_of: :authorizations
|
14
|
+
belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", inverse_of: :authorizations
|
14
15
|
|
15
16
|
validates :name, :user, :handler, presence: true
|
16
17
|
validates :name, uniqueness: { scope: :decidim_user_id }
|
@@ -1,11 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# Categories serve as a taxonomy for components to use for while in the
|
4
5
|
# context of a participatory process.
|
5
6
|
class Category < ApplicationRecord
|
6
|
-
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: Decidim::ParticipatoryProcess, inverse_of: :categories
|
7
|
-
has_many :subcategories, foreign_key: "parent_id", class_name: Decidim::Category, dependent: :destroy, inverse_of: :parent
|
8
|
-
belongs_to :parent, class_name: Decidim::Category, foreign_key: "parent_id", inverse_of: :subcategories
|
7
|
+
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: "Decidim::ParticipatoryProcess", inverse_of: :categories
|
8
|
+
has_many :subcategories, foreign_key: "parent_id", class_name: "Decidim::Category", dependent: :destroy, inverse_of: :parent
|
9
|
+
belongs_to :parent, class_name: "Decidim::Category", foreign_key: "parent_id", inverse_of: :subcategories
|
9
10
|
|
10
11
|
validate :forbid_deep_nesting
|
11
12
|
before_save :subcategories_have_same_process
|
@@ -3,8 +3,8 @@
|
|
3
3
|
module Decidim
|
4
4
|
# Store user's social identities
|
5
5
|
class Identity < ApplicationRecord
|
6
|
-
belongs_to :user, foreign_key: :decidim_user_id, class_name: Decidim::User
|
7
|
-
belongs_to :organization, foreign_key: :decidim_organization_id, class_name: Decidim::Organization
|
6
|
+
belongs_to :user, foreign_key: :decidim_user_id, class_name: "Decidim::User"
|
7
|
+
belongs_to :organization, foreign_key: :decidim_organization_id, class_name: "Decidim::Organization"
|
8
8
|
|
9
9
|
validates :user, presence: true
|
10
10
|
validates :provider, presence: true
|
@@ -1,9 +1,10 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# A moderation belongs to a reportable and includes many reports
|
4
5
|
class Moderation < ApplicationRecord
|
5
6
|
belongs_to :reportable, foreign_key: "decidim_reportable_id", foreign_type: "decidim_reportable_type", polymorphic: true
|
6
|
-
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: Decidim::ParticipatoryProcess
|
7
|
+
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: "Decidim::ParticipatoryProcess"
|
7
8
|
has_many :reports, foreign_key: "decidim_moderation_id", class_name: "Decidim::Report"
|
8
9
|
|
9
10
|
validates :reportable, :participatory_process, presence: true
|
@@ -1,8 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# This model holds all the data needed to send a newsletter.
|
4
5
|
class Newsletter < ApplicationRecord
|
5
|
-
belongs_to :author, class_name: User
|
6
|
+
belongs_to :author, class_name: "User"
|
6
7
|
belongs_to :organization
|
7
8
|
|
8
9
|
validates :subject, :body, presence: true
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# Organizations are one of the main models of Decidim. In a single Decidim
|
4
5
|
# installation we can find many organizations and each of them can start
|
@@ -6,12 +7,12 @@ module Decidim
|
|
6
7
|
class Organization < ApplicationRecord
|
7
8
|
SOCIAL_HANDLERS = [:twitter, :facebook, :instagram, :youtube, :github].freeze
|
8
9
|
|
9
|
-
has_many :participatory_process_groups, foreign_key: "decidim_organization_id", class_name: Decidim::ParticipatoryProcessGroup, inverse_of: :organization
|
10
|
-
has_many :participatory_processes, foreign_key: "decidim_organization_id", class_name: Decidim::ParticipatoryProcess, inverse_of: :organization
|
11
|
-
has_many :static_pages, foreign_key: "decidim_organization_id", class_name: Decidim::StaticPage, inverse_of: :organization
|
12
|
-
has_many :scopes, -> { order(name: :asc) }, foreign_key: "decidim_organization_id", class_name: Decidim::Scope, inverse_of: :organization
|
13
|
-
has_many :admins, -> { where("roles @> ?", "{admin}") }, foreign_key: "decidim_organization_id", class_name: Decidim::User
|
14
|
-
has_many :users, foreign_key: "decidim_organization_id", class_name: Decidim::User
|
10
|
+
has_many :participatory_process_groups, foreign_key: "decidim_organization_id", class_name: "Decidim::ParticipatoryProcessGroup", inverse_of: :organization
|
11
|
+
has_many :participatory_processes, foreign_key: "decidim_organization_id", class_name: "Decidim::ParticipatoryProcess", inverse_of: :organization
|
12
|
+
has_many :static_pages, foreign_key: "decidim_organization_id", class_name: "Decidim::StaticPage", inverse_of: :organization
|
13
|
+
has_many :scopes, -> { order(name: :asc) }, foreign_key: "decidim_organization_id", class_name: "Decidim::Scope", inverse_of: :organization
|
14
|
+
has_many :admins, -> { where("roles @> ?", "{admin}") }, foreign_key: "decidim_organization_id", class_name: "Decidim::User"
|
15
|
+
has_many :users, foreign_key: "decidim_organization_id", class_name: "Decidim::User"
|
15
16
|
|
16
17
|
validates :name, :host, uniqueness: true
|
17
18
|
validates :reference_prefix, presence: true
|
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
# Interaction between a user and an organization is done via a
|
4
5
|
# ParticipatoryProcess. It's a unit of action from the Organization point of
|
@@ -10,30 +11,30 @@ module Decidim
|
|
10
11
|
|
11
12
|
belongs_to :organization,
|
12
13
|
foreign_key: "decidim_organization_id",
|
13
|
-
class_name: Decidim::Organization,
|
14
|
+
class_name: "Decidim::Organization",
|
14
15
|
inverse_of: :participatory_processes
|
15
16
|
belongs_to :participatory_process_group,
|
16
17
|
foreign_key: "decidim_participatory_process_group_id",
|
17
|
-
class_name: Decidim::ParticipatoryProcessGroup,
|
18
|
+
class_name: "Decidim::ParticipatoryProcessGroup",
|
18
19
|
inverse_of: :participatory_processes
|
19
20
|
belongs_to :scope,
|
20
21
|
foreign_key: "decidim_scope_id",
|
21
|
-
class_name: Decidim::Scope
|
22
|
+
class_name: "Decidim::Scope"
|
22
23
|
has_many :steps,
|
23
24
|
-> { order(position: :asc) },
|
24
25
|
foreign_key: "decidim_participatory_process_id",
|
25
|
-
class_name: Decidim::ParticipatoryProcessStep,
|
26
|
+
class_name: "Decidim::ParticipatoryProcessStep",
|
26
27
|
dependent: :destroy,
|
27
28
|
inverse_of: :participatory_process
|
28
29
|
has_one :active_step,
|
29
30
|
-> { where(active: true) },
|
30
31
|
foreign_key: "decidim_participatory_process_id",
|
31
|
-
class_name: Decidim::ParticipatoryProcessStep,
|
32
|
+
class_name: "Decidim::ParticipatoryProcessStep",
|
32
33
|
dependent: :destroy,
|
33
34
|
inverse_of: :participatory_process
|
34
35
|
has_many :categories,
|
35
36
|
foreign_key: "decidim_participatory_process_id",
|
36
|
-
class_name: Decidim::Category,
|
37
|
+
class_name: "Decidim::Category",
|
37
38
|
dependent: :destroy,
|
38
39
|
inverse_of: :participatory_process
|
39
40
|
|
@@ -68,20 +69,6 @@ module Decidim
|
|
68
69
|
published_at.present?
|
69
70
|
end
|
70
71
|
|
71
|
-
# All the attachments that are photos for this porcess.
|
72
|
-
#
|
73
|
-
# Returns an Array<Attachment>
|
74
|
-
def photos
|
75
|
-
@photos ||= attachments.select(&:photo?)
|
76
|
-
end
|
77
|
-
|
78
|
-
# All the attachments that are documents for this porcess.
|
79
|
-
#
|
80
|
-
# Returns an Array<Attachment>
|
81
|
-
def documents
|
82
|
-
@documents ||= attachments.select(&:document?)
|
83
|
-
end
|
84
|
-
|
85
72
|
def hashtag
|
86
73
|
attributes["hashtag"].to_s.delete("#")
|
87
74
|
end
|
@@ -1,13 +1,14 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
|
2
3
|
module Decidim
|
3
4
|
class ParticipatoryProcessGroup < ApplicationRecord
|
4
5
|
has_many :participatory_processes,
|
5
6
|
foreign_key: "decidim_participatory_process_group_id",
|
6
|
-
class_name: Decidim::ParticipatoryProcess,
|
7
|
+
class_name: "Decidim::ParticipatoryProcess",
|
7
8
|
inverse_of: :participatory_process_group
|
8
9
|
belongs_to :organization,
|
9
10
|
foreign_key: "decidim_organization_id",
|
10
|
-
class_name: Decidim::Organization,
|
11
|
+
class_name: "Decidim::Organization",
|
11
12
|
inverse_of: :participatory_process_groups
|
12
13
|
|
13
14
|
mount_uploader :hero_image, Decidim::HeroImageUploader
|