metadata_presenter 2.19.4 → 2.19.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 287793ad62c89ad266e3c05508365cf24bcd5269d4c08e28f9a631aa50f5762a
4
- data.tar.gz: 885cc9f6bc43d4d1bd86ba1fb376d1994905000e4f14bfe7173076db7d531633
3
+ metadata.gz: f0d20b5161033659492619628a0c1f26c1a69926193dbea87353a1b3a2a0a984
4
+ data.tar.gz: 15940e4f5bbf2656108d89a589535635d31bd2f8f813855b628ee67e4ef9ddf1
5
5
  SHA512:
6
- metadata.gz: c3ab0c526f54ea3d22925baa1da1b4260deceb51bbd720695635b55ff3629116f0a93479fc8118e83bef39cc8ccd52bb718a1128fa573ad851247597e1c04821
7
- data.tar.gz: '024489fcbd77662977c8684f2949fcd1b4bc5126e7933feba40a6acd689f12a63de3ad112a8eb92a00113c77979c0fcba90f6c65f05e6e6a1eda9d607f02546b'
6
+ metadata.gz: 9b3db24698b1637328ba375d2676c903331cab7fcdc1789faeedc4b626b41f685f2a50225ea48f04c378d72be288928322eb24cccff816085dd66784c1d6377b
7
+ data.tar.gz: 47f23df2526d20da3066044b4224faee03113375c4654bce63154935b50e8df94cd588196b841a034641f591447577da8d9246dbbf2a1cd6ddb46f5c4fabba18
@@ -22,6 +22,14 @@ module MetadataPresenter
22
22
  end
23
23
  end
24
24
 
25
+ def update_count_matching_filenames(original_filename, user_data)
26
+ extname = File.extname(original_filename)
27
+ basename = File.basename(original_filename, extname)
28
+ filename_regex = /^#{Regexp.quote(basename)}(?>-\((\d)\))?#{Regexp.quote(extname)}/
29
+
30
+ user_data.select { |_k, v| v.instance_of?(Hash) && v['original_filename'] =~ filename_regex }.count
31
+ end
32
+
25
33
  private
26
34
 
27
35
  def page
@@ -72,6 +80,12 @@ module MetadataPresenter
72
80
  @page_answers.page.upload_components.each do |component|
73
81
  answer = user_data[component.id]
74
82
 
83
+ original_filename = answer.nil? ? @page_answers.send(component.id)['original_filename'] : answer['original_filename']
84
+
85
+ if original_filename.present?
86
+ @page_answers.count = update_count_matching_filenames(original_filename, user_data)
87
+ end
88
+
75
89
  @page_answers.uploaded_files.push(uploaded_file(answer, component))
76
90
  end
77
91
  end
@@ -1,7 +1,7 @@
1
1
  module MetadataPresenter
2
2
  class OfflineUploadAdapter
3
3
  include ActiveModel::Model
4
- attr_accessor :session, :file_details, :allowed_file_types
4
+ attr_accessor :session, :file_details, :allowed_file_types, :count
5
5
 
6
6
  def call
7
7
  {}
@@ -4,6 +4,7 @@ module MetadataPresenter
4
4
  include ActiveModel::Validations
5
5
  include ActionView::Helpers
6
6
  attr_reader :page, :answers, :uploaded_files, :autocomplete_items
7
+ attr_accessor :count
7
8
 
8
9
  def initialize(page, answers, autocomplete_items = nil)
9
10
  @page = page
@@ -28,7 +29,7 @@ module MetadataPresenter
28
29
  if component && component.type == 'date'
29
30
  date_answer(component.id)
30
31
  elsif component && component.type == 'upload'
31
- upload_answer(component.id)
32
+ upload_answer(component.id, count)
32
33
  elsif component && component.type == 'checkboxes'
33
34
  answers[method_name.to_s].to_a
34
35
  else
@@ -36,15 +37,13 @@ module MetadataPresenter
36
37
  end
37
38
  end
38
39
 
39
- def upload_answer(component_id)
40
+ def upload_answer(component_id, _count)
40
41
  file_details = answers[component_id.to_s]
41
42
 
42
43
  return {} unless file_details
43
44
 
44
45
  if file_details.is_a?(Hash) || file_details.is_a?(ActionController::Parameters)
45
-
46
46
  file_details.merge('original_filename' => sanitize(filename(file_details['original_filename'])))
47
-
48
47
  else
49
48
  {
50
49
  'original_filename' => sanitize(filename(file_details.original_filename)),
@@ -75,7 +74,16 @@ module MetadataPresenter
75
74
  def filename(path)
76
75
  return sanitize(path) if path.nil?
77
76
 
78
- sanitize(path).gsub(/&gt;/, '').gsub(/&lt;/, '').delete('>"[]{}*?:|]/<').delete('\\')
77
+ filename = sanitize(path).gsub(/&gt;/, '').gsub(/&lt;/, '').delete('>"[]{}*?:|]/<').delete('\\')
78
+
79
+ if count.present? && count.positive?
80
+ extname = File.extname(filename)
81
+ basename = File.basename(filename, extname)
82
+
83
+ filename = "#{basename}-(#{count})#{extname}"
84
+ end
85
+
86
+ filename
79
87
  end
80
88
  end
81
89
  end
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '2.19.4'.freeze
2
+ VERSION = '2.19.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metadata_presenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.19.4
4
+ version: 2.19.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Forms
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-05-18 00:00:00.000000000 Z
11
+ date: 2023-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -216,16 +216,16 @@ dependencies:
216
216
  name: site_prism
217
217
  requirement: !ruby/object:Gem::Requirement
218
218
  requirements:
219
- - - ">="
219
+ - - '='
220
220
  - !ruby/object:Gem::Version
221
- version: '0'
221
+ version: '4.0'
222
222
  type: :development
223
223
  prerelease: false
224
224
  version_requirements: !ruby/object:Gem::Requirement
225
225
  requirements:
226
- - - ">="
226
+ - - '='
227
227
  - !ruby/object:Gem::Version
228
- version: '0'
228
+ version: '4.0'
229
229
  - !ruby/object:Gem::Dependency
230
230
  name: sqlite3
231
231
  requirement: !ruby/object:Gem::Requirement