Skip to content

Commit 673cc1e

Browse files
authored
Merge from docusealco/wip
2 parents cabfe45 + 065dcf6 commit 673cc1e

80 files changed

Lines changed: 587 additions & 211 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

Gemfile.lock

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ GEM
144144
cldr-plurals-runtime-rb (1.1.0)
145145
cmdparse (3.0.7)
146146
coderay (1.1.3)
147-
concurrent-ruby (1.3.6)
147+
concurrent-ruby (1.3.7)
148148
connection_pool (3.0.2)
149149
crack (1.0.1)
150150
bigdecimal
@@ -195,13 +195,13 @@ GEM
195195
railties (>= 6.1.0)
196196
faker (3.6.1)
197197
i18n (>= 1.8.11, < 2)
198-
faraday (2.14.2)
198+
faraday (2.14.3)
199199
faraday-net_http (>= 2.0, < 3.5)
200200
json
201201
logger
202202
faraday-follow_redirects (0.5.0)
203203
faraday (>= 1, < 3)
204-
faraday-net_http (3.4.2)
204+
faraday-net_http (3.4.4)
205205
net-http (~> 0.5)
206206
ferrum (0.17.2)
207207
addressable (~> 2.5)
@@ -323,15 +323,15 @@ GEM
323323
net-smtp (0.5.1)
324324
net-protocol
325325
nio4r (2.7.5)
326-
nokogiri (1.19.3-aarch64-linux-gnu)
326+
nokogiri (1.19.4-aarch64-linux-gnu)
327327
racc (~> 1.4)
328-
nokogiri (1.19.3-aarch64-linux-musl)
328+
nokogiri (1.19.4-aarch64-linux-musl)
329329
racc (~> 1.4)
330-
nokogiri (1.19.3-arm64-darwin)
330+
nokogiri (1.19.4-arm64-darwin)
331331
racc (~> 1.4)
332-
nokogiri (1.19.3-x86_64-linux-gnu)
332+
nokogiri (1.19.4-x86_64-linux-gnu)
333333
racc (~> 1.4)
334-
nokogiri (1.19.3-x86_64-linux-musl)
334+
nokogiri (1.19.4-x86_64-linux-musl)
335335
racc (~> 1.4)
336336
numo-narray-alt (0.10.3)
337337
onnxruntime (0.10.1-aarch64-linux)

app/controllers/api/submissions_controller.rb

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
module Api
44
class SubmissionsController < ApiBaseController
5+
SUBMISSION_COLUMNS = %i[id name slug source submitters_order expire_at created_at updated_at
6+
archived_at variables template_id template_submitters created_by_user_id].freeze
7+
TEMPLATE_COLUMNS = %i[id name external_id created_at updated_at folder_id submitters].freeze
8+
59
load_and_authorize_resource :template, only: :create
610
load_and_authorize_resource :submission, only: %i[show index destroy]
711

@@ -13,10 +17,22 @@ def index
1317
submissions = Submissions.search(current_user, @submissions, params[:q])
1418
submissions = filter_submissions(submissions, params)
1519

16-
submissions = paginate(submissions.preload(:created_by_user, :submitters,
17-
template: { folder: :parent_folder },
18-
combined_document_attachment: :blob,
19-
audit_trail_attachment: :blob))
20+
with_fields = params[:include].to_s.include?('fields') || params[:include].to_s.include?('combined_document_url')
21+
22+
submissions = paginate(
23+
submissions.select(with_fields ? nil : SUBMISSION_COLUMNS)
24+
.preload(:created_by_user, :submitters, combined_document_attachment: :blob,
25+
audit_trail_attachment: :blob)
26+
)
27+
28+
ActiveRecord::Associations::Preloader.new(
29+
records: submissions,
30+
associations: :template,
31+
scope: with_fields ? nil : Template.select(TEMPLATE_COLUMNS)
32+
).call
33+
34+
ActiveRecord::Associations::Preloader.new(records: submissions.filter_map(&:template),
35+
associations: { folder: :parent_folder }).call
2036

2137
expires_at = Accounts.link_expires_at(current_account)
2238

app/controllers/api/submitters_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ def submitter_params
104104

105105
private
106106

107-
def maybe_filder_by_completed_at(submitters, params)
107+
def maybe_filter_by_completed_at(submitters, params)
108108
if params[:completed_after].present?
109109
submitters = submitters.where(completed_at: Time.zone.parse(params[:completed_after])..)
110110
end
@@ -177,7 +177,7 @@ def filter_submitters(submitters, params)
177177
submitters = submitters.joins(:submission).where(submissions: { template_id: params[:template_id] })
178178
end
179179

180-
maybe_filder_by_completed_at(submitters, params)
180+
maybe_filter_by_completed_at(submitters, params)
181181
end
182182

183183
def assign_external_id(submitter, attrs)

app/controllers/api/templates_controller.rb

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ def update
4848

4949
archived = params.key?(:archived) ? params[:archived] : params.dig(:template, :archived)
5050

51-
if archived.in?([true, false])
51+
if archived.in?([true, false]) && current_ability.can?(:destroy, @template)
5252
@template.archived_at = archived == true ? Time.current : nil
5353
end
5454

@@ -57,7 +57,10 @@ def update
5757
SearchEntries.enqueue_reindex(@template)
5858

5959
WebhookUrls.enqueue_events(@template, 'template.updated')
60-
WebhookUrls.enqueue_events(@template, 'template.archived') if archived == true
60+
61+
if @template.saved_change_to_archived_at? && @template.archived_at?
62+
WebhookUrls.enqueue_events(@template, 'template.archived')
63+
end
6164

6265
render json: @template.as_json(only: %i[id updated_at])
6366
end

app/controllers/submissions_archived_controller.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ def index
77
@submissions = @submissions.left_joins(:template)
88
@submissions = @submissions.where.not(archived_at: nil)
99
.or(@submissions.where.not(templates: { archived_at: nil }))
10-
.preload(:template_accesses, :created_by_user, template: :author)
10+
.preload(:template_accesses, :created_by_user)
1111

1212
@submissions = Submissions.search(current_user, @submissions, params[:q], search_template: true)
1313
@submissions = Submissions::Filter.call(@submissions, current_user, params)
@@ -18,6 +18,15 @@ def index
1818
@submissions.order(id: :desc)
1919
end
2020

21-
@pagy, @submissions = pagy_auto(@submissions.preload(submitters: :start_form_submission_events))
21+
@pagy, @submissions = pagy_auto(@submissions.select_for_list.preload(submitters: :start_form_submission_events))
22+
23+
template_scope = @submissions.all?(&:template_submitters) ? Template.select_for_list : nil
24+
25+
ActiveRecord::Associations::Preloader.new(records: @submissions,
26+
associations: :template,
27+
scope: template_scope).call
28+
29+
ActiveRecord::Associations::Preloader.new(records: @submissions.filter_map(&:template),
30+
associations: :author).call
2231
end
2332
end

app/controllers/submissions_controller.rb

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
# frozen_string_literal: true
22

33
class SubmissionsController < ApplicationController
4-
before_action :load_template, only: %i[new create]
5-
authorize_resource :template, only: %i[new create]
6-
4+
load_and_authorize_resource :template, only: %i[new create]
75
load_and_authorize_resource :submission, only: %i[show destroy]
86

97
prepend_before_action :maybe_redirect_com, only: %i[show]
@@ -113,8 +111,4 @@ def save_template_message(template, params)
113111
def submissions_params
114112
params.permit(submission: { submitters: [:uuid, :email, :phone, :name, { values: {} }] })
115113
end
116-
117-
def load_template
118-
@template = Template.accessible_by(current_ability).find(params[:template_id])
119-
end
120114
end

app/controllers/submissions_dashboard_controller.rb

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ def index
88

99
@submissions = @submissions.where(archived_at: nil)
1010
.where(templates: { archived_at: nil })
11-
.preload(:template_accesses, :created_by_user, template: :author)
11+
.preload(:template_accesses, :created_by_user)
1212

1313
@submissions = Submissions.search(current_user, @submissions, params[:q], search_template: true)
1414
@submissions = Submissions::Filter.call(@submissions, current_user, params)
@@ -19,6 +19,15 @@ def index
1919
@submissions.order(id: :desc)
2020
end
2121

22-
@pagy, @submissions = pagy_auto(@submissions.preload(submitters: :start_form_submission_events))
22+
@pagy, @submissions = pagy_auto(@submissions.select_for_list.preload(submitters: :start_form_submission_events))
23+
24+
template_scope = @submissions.all?(&:template_submitters) ? Template.select_for_list : nil
25+
26+
ActiveRecord::Associations::Preloader.new(records: @submissions,
27+
associations: :template,
28+
scope: template_scope).call
29+
30+
ActiveRecord::Associations::Preloader.new(records: @submissions.filter_map(&:template),
31+
associations: :author).call
2332
end
2433
end

app/controllers/template_folders_controller.rb

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,11 @@ def show
3030
(@template_folders.size < 7 ? 9 : 6)
3131
end
3232

33-
@pagy, @templates = pagy_auto(@templates, limit:)
33+
@pagy, @templates = pagy_auto(@templates.select_for_list, limit:)
3434

35-
load_related_submissions if params[:q].present? && @templates.blank?
35+
if params[:q].present? && @templates.blank?
36+
@related_submissions_pagy, @related_submissions = load_related_submissions(@template_folder)
37+
end
3638
else
3739
@pagy, @template_folders = pagy(@template_folders, limit: FOLDERS_PER_PAGE)
3840

@@ -55,32 +57,31 @@ def update
5557

5658
def selected_order
5759
@selected_order ||=
58-
if cookies.permanent[:dashboard_templates_order].blank? ||
59-
(cookies.permanent[:dashboard_templates_order] == 'used_at' && can?(:manage, :countless))
60+
if can?(:manage, :countless)
6061
'created_at'
6162
else
62-
cookies.permanent[:dashboard_templates_order]
63+
cookies.permanent[:dashboard_templates_order].presence || 'created_at'
6364
end
6465
end
6566

6667
def template_folder_params
6768
params.require(:template_folder).permit(:name)
6869
end
6970

70-
def load_related_submissions
71-
@related_submissions =
71+
def load_related_submissions(template_folder)
72+
related_submissions =
7273
Submission.accessible_by(current_ability)
7374
.where(archived_at: nil)
7475
.where(template_id: current_account.templates.active
75-
.where(folder: [@template_folder, *@template_folder.subfolders])
76+
.where(folder: [template_folder, *template_folder.subfolders])
7677
.select(:id))
7778
.preload(:template_accesses, :created_by_user,
7879
template: :author,
7980
submitters: :start_form_submission_events)
8081

81-
@related_submissions = Submissions.search(current_user, @related_submissions, params[:q])
82-
.order(id: :desc)
82+
related_submissions = Submissions.search(current_user, related_submissions, params[:q])
83+
.order(id: :desc)
8384

84-
@related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5)
85+
pagy_auto(related_submissions.select_for_list, limit: 5)
8586
end
8687
end

app/controllers/templates_archived_controller.rb

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,21 +10,27 @@ def index
1010

1111
@templates = Templates.search(current_user, @templates, params[:q])
1212

13-
@pagy, @templates = pagy_auto(@templates, limit: 12)
13+
@pagy, @templates = pagy_auto(@templates.select_for_list, limit: 12)
1414

1515
return unless params[:q].present? && @templates.blank?
1616

17-
@related_submissions =
17+
@related_submissions_pagy, @related_submissions = load_related_submissions
18+
end
19+
20+
private
21+
22+
def load_related_submissions
23+
related_submissions =
1824
Submission.accessible_by(current_ability)
1925
.joins(:template)
2026
.where.not(templates: { archived_at: nil })
2127
.preload(:template_accesses, :created_by_user,
2228
template: :author,
2329
submitters: :start_form_submission_events)
2430

25-
@related_submissions = Submissions.search(current_user, @related_submissions, params[:q])
26-
.order(id: :desc)
31+
related_submissions = Submissions.search(current_user, related_submissions, params[:q])
32+
.order(id: :desc)
2733

28-
@related_submissions_pagy, @related_submissions = pagy_auto(@related_submissions, limit: 5)
34+
pagy_auto(related_submissions.select_for_list, limit: 5)
2935
end
3036
end

app/controllers/templates_archived_submissions_controller.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def index
1515
@submissions.order(id: :desc)
1616
end
1717

18-
@pagy, @submissions = pagy_auto(@submissions.preload(submitters: :start_form_submission_events))
18+
@pagy, @submissions = pagy_auto(@submissions.select_for_list.preload(submitters: :start_form_submission_events))
1919
rescue ActiveRecord::RecordNotFound
2020
redirect_to root_path
2121
end

0 commit comments

Comments
 (0)