metadata_presenter 1.2.1 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e84ebcbd114c023a8f36b861a90e1b37b99b3818a5b246b3c260420da1d0df72
4
- data.tar.gz: 13ae0d0919a37e7b3ce290f1a75426363c619a6f8beaf474000392d263b2e368
3
+ metadata.gz: 8159601ef7b12c039633ef169437869d66abd193a70a72c6d3bd5bd83e8e43df
4
+ data.tar.gz: 117638aa22a6695d528a5c6f390526965dde81247706c9d203705ce85c0e62a4
5
5
  SHA512:
6
- metadata.gz: 912734998fbf62a2c0e638574c47eb113e7009ff1d6954a7e6bd3a9a27e764a1988039dc5c9dead180a2bf158ced817270e04fc085cfad32a9bc5c212e3613eb
7
- data.tar.gz: cb8fe7a25bf7b77c944e73e123e76a59d7412dae017a5dec3722ccbfe9f4fa96cf6a7755792df1eacb989758064df78d5ceeec2ddb7f0ff74bc80f98bce2d65b
6
+ metadata.gz: f1e2a77178e1f0dba9d1e33562ce50fc1cc1e5f0ffd5c67393fcc9087dc00e703f07be00b23a9088b813fcae2a730c0690e767b1571ae5d56c45dd9ecf49591e
7
+ data.tar.gz: 27d472e2ad735d502477719935e6f099e6148930e6ecedd370f02211c593d4442ee20d33e481e6ecf583114a36f41289f5cd3840cefdf54bf71c6d3ef54119ab
@@ -5,7 +5,7 @@ module MetadataPresenter
5
5
  def create
6
6
  @page_answers = PageAnswers.new(page, answers_params)
7
7
 
8
- upload_file if upload?
8
+ upload_files if upload?
9
9
 
10
10
  if @page_answers.validate_answers
11
11
  save_user_data # method signature
@@ -54,7 +54,33 @@ module MetadataPresenter
54
54
  not_found if page.blank?
55
55
  end
56
56
 
57
- def upload_file
57
+ def upload_files
58
+ user_data = load_user_data
59
+ @page_answers.page.upload_components.each do |component|
60
+ answer = user_data[component.id]
61
+
62
+ @page_answers.uploaded_files.push(uploaded_file(answer, component))
63
+ end
64
+ end
65
+
66
+ def uploaded_file(answer, component)
67
+ if answer.present?
68
+ @page_answers.answers[component.id] = answer
69
+ MetadataPresenter::UploadedFile.new(
70
+ file: @page_answers.send(component.id),
71
+ component: component
72
+ )
73
+ else
74
+ FileUploader.new(
75
+ session: session,
76
+ page_answers: @page_answers,
77
+ component: component,
78
+ adapter: upload_adapter
79
+ ).upload
80
+ end
81
+ end
82
+
83
+ def upload_adapter
58
84
  super if defined?(super)
59
85
  end
60
86
 
@@ -0,0 +1,18 @@
1
+ module MetadataPresenter
2
+ class FileUploader
3
+ include ActiveModel::Model
4
+ attr_accessor :session, :page_answers, :component, :adapter
5
+
6
+ def upload
7
+ UploadedFile.new(file: upload_file, component: component)
8
+ end
9
+
10
+ def upload_file
11
+ adapter.new(
12
+ session: session,
13
+ file_details: page_answers.send(component.id),
14
+ allowed_file_types: component.validation['accept']
15
+ ).call
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,10 @@
1
+ module MetadataPresenter
2
+ class OfflineUploadAdapter
3
+ include ActiveModel::Model
4
+ attr_accessor :session, :file_details, :allowed_file_types
5
+
6
+ def call
7
+ {}
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,14 @@
1
+ module MetadataPresenter
2
+ class UploadedFile
3
+ include ActiveModel::Model
4
+ attr_accessor :file, :component
5
+
6
+ def ==(other)
7
+ file == other.file && component == other.component
8
+ end
9
+
10
+ def error_name
11
+ file.error_name if file.respond_to? :error_name
12
+ end
13
+ end
14
+ end
@@ -7,7 +7,7 @@
7
7
  <p><%= @page_answers.send(component.id)['original_filename'] %></p>
8
8
 
9
9
  <p>
10
- <%= link_to 'Remove file', remove_file_path(component.id), method: :delete, class: 'govuk-link' %>
10
+ <%= link_to 'Remove file', remove_file_path(component.id), class: 'govuk-link' %>
11
11
  </p>
12
12
  <% else %>
13
13
  <%= f.govuk_file_field component.id.to_sym,
data/config/routes.rb CHANGED
@@ -3,7 +3,10 @@ MetadataPresenter::Engine.routes.draw do
3
3
 
4
4
  post '/reserved/submissions', to: 'submissions#create', as: :reserved_submissions
5
5
  get '/reserved/change-answer', to: 'change_answer#create', as: :change_answer
6
- delete '/reserved/file/:component_id', to: 'file#destroy', as: :remove_file
6
+
7
+ # We are not adding rails ujs to the editor app so we need to make it
8
+ # as get verb.
9
+ get '/reserved/file/:component_id', to: 'file#destroy', as: :remove_file
7
10
 
8
11
  post '/', to: 'answers#create'
9
12
  match '*path', to: 'answers#create', via: :post
@@ -1,3 +1,3 @@
1
1
  module MetadataPresenter
2
- VERSION = '1.2.1'.freeze
2
+ VERSION = '1.3.0'.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: 1.2.1
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - MoJ Online
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-03 00:00:00.000000000 Z
11
+ date: 2021-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: govuk_design_system_formbuilder
@@ -264,14 +264,17 @@ files:
264
264
  - app/jobs/metadata_presenter/application_job.rb
265
265
  - app/models/metadata_presenter/component.rb
266
266
  - app/models/metadata_presenter/date_field.rb
267
+ - app/models/metadata_presenter/file_uploader.rb
267
268
  - app/models/metadata_presenter/item.rb
268
269
  - app/models/metadata_presenter/meta.rb
269
270
  - app/models/metadata_presenter/meta_item.rb
270
271
  - app/models/metadata_presenter/metadata.rb
271
272
  - app/models/metadata_presenter/next_page.rb
273
+ - app/models/metadata_presenter/offline_upload_adapter.rb
272
274
  - app/models/metadata_presenter/page.rb
273
275
  - app/models/metadata_presenter/page_answers.rb
274
276
  - app/models/metadata_presenter/service.rb
277
+ - app/models/metadata_presenter/uploaded_file.rb
275
278
  - app/presenters/metadata_presenter/page_answers_presenter.rb
276
279
  - app/validators/metadata_presenter/accept_validator.rb
277
280
  - app/validators/metadata_presenter/base_validator.rb