From 73c4f158fff16f2c9861a1b0f34b6945eba639f5 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 23 Aug 2026 17:19:50 +0300 Subject: [PATCH] add self source --- app/controllers/start_form_self_controller.rb | 4 ++-- app/models/submission.rb | 3 ++- lib/submitters/start_form.rb | 11 +++++++---- 3 files changed, 11 insertions(+), 7 deletions(-) diff --git a/app/controllers/start_form_self_controller.rb b/app/controllers/start_form_self_controller.rb index 989b4af8..6712262d 100644 --- a/app/controllers/start_form_self_controller.rb +++ b/app/controllers/start_form_self_controller.rb @@ -7,14 +7,14 @@ class StartFormSelfController < ApplicationController before_action :authorize_start! def update - @submitter = Submitters::StartForm.build_submitters_scope(@template, exclude_completed: true) + @submitter = Submitters::StartForm.build_submitters_scope(@template, exclude_completed: true, source: :self) .find_or_initialize_by(email: current_user.email) if (is_new_record = @submitter.new_record?) @submitter.name = current_user.full_name Submitters::StartForm.assign_submission_attributes( - @submitter, @template, ip: request.remote_ip, user_agent: request.user_agent + @submitter, @template, ip: request.remote_ip, user_agent: request.user_agent, source: :self ) Submissions::AssignDefinedSubmitters.call(@submitter.submission) diff --git a/app/models/submission.rb b/app/models/submission.rb index d65018c0..6a5917ec 100644 --- a/app/models/submission.rb +++ b/app/models/submission.rb @@ -112,7 +112,8 @@ class Submission < ApplicationRecord api: 'api', embed: 'embed', mcp: 'mcp', - link: 'link' + link: 'link', + self: 'self' }, scope: false, prefix: true enum :submitters_order, { diff --git a/lib/submitters/start_form.rb b/lib/submitters/start_form.rb index ee45b196..040e212c 100644 --- a/lib/submitters/start_form.rb +++ b/lib/submitters/start_form.rb @@ -57,9 +57,12 @@ module Submitters submitter end - def build_submitters_scope(template, exclude_completed: false) + def build_submitters_scope(template, exclude_completed: false, source: nil) + submissions = template.submissions.non_expired.active + submissions = submissions.where(source:) if source + Submitter - .where(submission: template.submissions.non_expired.active) + .where(submission: submissions) .where(uuid: template.submitters.pluck('uuid').compact_blank) .order(id: :desc) .where(declined_at: nil) @@ -67,7 +70,7 @@ module Submitters .then { |rel| exclude_completed ? rel.where(completed_at: nil) : rel } end - def assign_submission_attributes(submitter, template, ip:, user_agent:, resubmit_submitter: nil) + def assign_submission_attributes(submitter, template, ip:, user_agent:, source: :link, resubmit_submitter: nil) submitter.assign_attributes( uuid: first_submitter_uuid(template), ip:, @@ -90,7 +93,7 @@ module Submitters template_submitters: template.submitters, expire_at: Templates.build_default_expire_at(template), submitters: [submitter], - source: :link) + source:) Submissions::CreateFromSubmitters.maybe_set_dynamic_documents(submitter.submission)