Class: Decidim::Command
- Inherits:
-
Object
show all
- Includes:
- Wisper::Publisher
- Defined in:
- decidim-core/lib/decidim/command.rb
Direct Known Subclasses
AcceptGroupInvitation, AcceptUserGroupJoinRequest, Accountability::Admin::ImportProjectsToAccountability, Admin::BlockUser, Admin::CloseSessionManagedUser, Admin::ContentBlocks::CreateContentBlock, Admin::ContentBlocks::DestroyContentBlock, Admin::ContentBlocks::ReorderContentBlocks, Admin::ContentBlocks::UpdateContentBlock, Admin::CreateAttachment, Admin::CreateAttachmentCollection, Admin::CreateImport, Admin::CreateImportExample, Admin::CreateParticipatorySpacePrivateUser, Admin::DeliverNewsletter, Admin::HideMenuComponent, Admin::HideResource, Admin::ImpersonateUser, Admin::InviteAdmin, Admin::OfficializeUser, Admin::ParticipatorySpace::CreateAdmin, Admin::ParticipatorySpace::DestroyAdmin, Admin::ParticipatorySpace::Publish, Admin::ParticipatorySpace::Unpublish, Admin::ParticipatorySpace::UpdateAdmin, Admin::ProcessParticipatorySpacePrivateUserImportCsv, Admin::ProcessUserGroupVerificationCsv, Admin::PromoteManagedUser, Admin::PublishAllParticipatorySpacePrivateUsers, Admin::PublishComponent, Admin::RejectUserGroup, Admin::RemoveAdmin, Admin::ReorderComponents, Admin::ReorderTaxonomies, Admin::TransferUser, Admin::UnblockUser, Admin::UnhideResource, Admin::UnofficializeUser, Admin::UnpublishAllParticipatorySpacePrivateUsers, Admin::UnpublishComponent, Admin::UnreportResource, Admin::UnreportUser, Admin::UpdateAttachment, Admin::UpdateAttachmentCollection, Admin::UpdateComponentPermissions, Admin::UpdateExternalDomainAllowlist, Admin::UpdateHelpSections, Admin::UpdateNewsletter, Admin::UpdateOrganizationTosVersion, Admin::UpdateResourcePermissions, Admin::UpdateUserGroups, Admin::VerifyUserGroup, Amendable::Accept, Amendable::CreateDraft, Amendable::DestroyDraft, Amendable::Promote, Amendable::PublishDraft, Amendable::Reject, Amendable::UpdateDraft, Amendable::Withdraw, Assemblies::Admin::CopyAssembly, Assemblies::Admin::ImportAssembly, Budgets::AddLineItem, Budgets::Admin::CreateOrderReminders, Budgets::Admin::ImportProposalsToBudgets, Budgets::Admin::UpdateProjectCategory, Budgets::Admin::UpdateProjectScope, Budgets::Admin::UpdateProjectSelection, Budgets::Admin::UpdateProjectsBudget, Budgets::CancelOrder, Budgets::Checkout, Budgets::RemoveLineItem, Decidim::Commands::CreateResource, Decidim::Commands::DestroyResource, Decidim::Commands::RestoreResource, Decidim::Commands::SoftDeleteResource, Decidim::Commands::UpdateResource, Decidim::Comments::CreateComment, Decidim::Comments::DeleteComment, Decidim::Comments::UpdateComment, Decidim::Comments::VoteComment, Decidim::Conferences::Admin::ConfirmConferenceRegistration, Decidim::Conferences::Admin::CopyConference, Decidim::Conferences::Admin::ExportConferenceRegistrations, Decidim::Conferences::Admin::InviteUserToJoinConference, Decidim::Conferences::Admin::PublishConferenceSpeaker, Decidim::Conferences::Admin::PublishRegistrationType, Decidim::Conferences::Admin::SendConferenceDiplomas, Decidim::Conferences::Admin::UnpublishConferenceSpeaker, Decidim::Conferences::Admin::UnpublishRegistrationType, Decidim::Conferences::Admin::UpdateDiploma, Decidim::Conferences::DeclineInvitation, Decidim::Conferences::JoinConference, Decidim::Conferences::LeaveConference, CreateEditorImage, CreateFollow, CreateOmniauthRegistration, CreateRegistration, CreateReport, CreateUserGroup, CreateUserReport, Debates::CloseDebate, DeleteFollow, DemoteMembership, DestroyAccount, Dev::CreateDummyResource, EndorseResource, Forms::Admin::UpdateQuestionnaire, Forms::AnswerQuestionnaire, Initiatives::Admin::AcceptInitiative, Initiatives::Admin::DiscardInitiative, Initiatives::Admin::PublishInitiative, Initiatives::Admin::RejectInitiative, Initiatives::Admin::SendInitiativeToTechnicalValidation, Initiatives::Admin::UnpublishInitiative, Initiatives::Admin::UpdateInitiativeAnswer, Initiatives::ApproveMembershipRequest, Initiatives::CreateInitiative, Initiatives::RevokeMembershipRequest, Initiatives::SendInitiativeToTechnicalValidation, Initiatives::SpawnCommitteeRequest, Initiatives::UnvoteInitiative, Initiatives::UpdateInitiative, Initiatives::ValidateMobilePhone, Initiatives::ValidateSmsCode, Initiatives::VoteInitiative, InviteUser, InviteUserAgain, InviteUserToGroup, JoinUserGroup, LeaveUserGroup, Meetings::Admin::CloseMeeting, Meetings::Admin::CopyMeeting, Meetings::Admin::ExportMeetingRegistrations, Meetings::Admin::InviteUserToJoinMeeting, Meetings::Admin::PublishMeeting, Meetings::Admin::UnpublishMeeting, Meetings::Admin::UpdateQuestionStatus, Meetings::Admin::UpdateQuestionnaire, Meetings::Admin::ValidateRegistrationCode, Meetings::CloseMeeting, Meetings::CreateAnswer, Meetings::DeclineInvitation, Meetings::JoinMeeting, Meetings::LeaveMeeting, Meetings::UpdateMeeting, Meetings::WithdrawMeeting, Messaging::ReplyToConversation, Messaging::StartConversation, Pages::Admin::UpdatePage, Pages::CopyPage, Pages::CreatePage, Pages::DestroyPage, ParticipatoryProcesses::Admin::ActivateParticipatoryProcessStep, ParticipatoryProcesses::Admin::CopyParticipatoryProcess, ParticipatoryProcesses::Admin::ImportParticipatoryProcess, ParticipatoryProcesses::Admin::ReorderParticipatoryProcessSteps, PromoteMembership, Proposals::AcceptAccessToCollaborativeDraft, Proposals::AcceptCoauthorship, Proposals::Admin::AnswerProposal, Proposals::Admin::AssignProposalsToValuator, Proposals::Admin::CreateProposal, Proposals::Admin::CreateProposalNote, Proposals::Admin::DiscardParticipatoryText, Proposals::Admin::ImportParticipatoryText, Proposals::Admin::ImportProposals, Proposals::Admin::MergeProposals, Proposals::Admin::NotifyProposalAnswer, Proposals::Admin::PublishAnswers, Proposals::Admin::ReplyProposalNote, Proposals::Admin::SplitProposals, Proposals::Admin::UnassignProposalsFromValuator, Proposals::Admin::UpdateParticipatoryText, Proposals::Admin::UpdateProposal, Proposals::CancelCoauthorship, Proposals::CreateCollaborativeDraft, Proposals::CreateProposal, Proposals::DestroyProposal, Proposals::InviteCoauthor, Proposals::PublishCollaborativeDraft, Proposals::PublishProposal, Proposals::RejectAccessToCollaborativeDraft, Proposals::RejectCoauthorship, Proposals::RequestAccessToCollaborativeDraft, Proposals::UnvoteProposal, Proposals::UpdateCollaborativeDraft, Proposals::UpdateProposal, Proposals::VoteProposal, Proposals::WithdrawCollaborativeDraft, Proposals::WithdrawProposal, RejectGroupInvitation, RejectUserGroupJoinRequest, RemoveUserFromGroup, ResendConfirmationInstructions, Search, Sortitions::Admin::CreateSortition, Sortitions::Admin::DestroySortition, Sortitions::Admin::UpdateSortition, Surveys::CreateSurvey, System::CreateAdmin, System::CreateDefaultContentBlocks, System::CreateDefaultHelpPages, System::CreateDefaultPages, System::CreateOAuthApplication, System::CreateOrganization, System::DestroyOAuthApplication, System::UpdateAdmin, System::UpdateOAuthApplication, System::UpdateOrganization, Templates::Admin::ApplyQuestionnaireTemplate, Templates::Admin::CopyTemplate, Templates::Admin::CreateProposalAnswerTemplate, Templates::Admin::CreateTemplate, Templates::Admin::DestroyTemplate, Templates::Admin::UpdateProposalAnswerTemplate, Templates::Admin::UpdateTemplate, UnendorseResource, UnsubscribeSettings, UpdateAccount, UpdateNotificationsSettings, UpdatePassword, UpdateResourcesTaxonomies, UpdateUserGroup, UpdateUserInterests, ValidateUpload, Verifications::AuthorizeUser, Verifications::ConfirmUserAuthorization, Verifications::CsvCensus::Admin::CreateCensusData, Verifications::DestroyUserAuthorization, Verifications::IdDocuments::Admin::ConfirmUserOfflineAuthorization, Verifications::IdDocuments::Admin::UpdateConfig, Verifications::PerformAuthorizationStep, Verifications::RevokeAllAuthorizations, Verifications::RevokeByConditionAuthorizations
Class Method Summary
collapse
Instance Method Summary
collapse
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_name) ⇒ Object
33
34
35
36
37
38
39
|
# File 'decidim-core/lib/decidim/command.rb', line 33
def method_missing(method_name, ...)
if @caller.respond_to?(method_name, true)
@caller.send(method_name, ...)
else
super
end
end
|
Class Method Details
.call ⇒ Object
13
14
15
16
17
18
19
20
21
22
|
# File 'decidim-core/lib/decidim/command.rb', line 13
def self.call(*, **, &)
event_recorder = Decidim::EventRecorder.new
command = new(*, **)
command.subscribe(event_recorder)
command.evaluate(&) if block_given?
command.call
event_recorder.events
end
|
Instance Method Details
#evaluate(&block) ⇒ Object
24
25
26
27
|
# File 'decidim-core/lib/decidim/command.rb', line 24
def evaluate(&block)
@caller = eval("self", block.binding, __FILE__, __LINE__)
instance_eval(&block)
end
|
#respond_to_missing?(method_name, include_private = false) ⇒ Boolean
41
42
43
|
# File 'decidim-core/lib/decidim/command.rb', line 41
def respond_to_missing?(method_name, include_private = false)
@caller.respond_to?(method_name, include_private)
end
|
#transaction ⇒ Object
29
30
31
|
# File 'decidim-core/lib/decidim/command.rb', line 29
def transaction(&)
ActiveRecord::Base.transaction(&) if block_given?
end
|
#with_events(with_transaction: false) ⇒ Object
45
46
47
48
49
50
51
|
# File 'decidim-core/lib/decidim/command.rb', line 45
def with_events(with_transaction: false, &)
ActiveSupport::Notifications.publish("#{event_namespace}:before", **event_arguments)
with_transaction ? transaction(&) : yield
ActiveSupport::Notifications.publish("#{event_namespace}:after", **event_arguments)
end
|