Class: Request
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- Request
- Defined in:
- app/models/request.rb
Constant Summary collapse
- DRAFT =
default state set by database
"draft"
- SUBMITTED =
Ready to be approved
"submitted"
Instance Method Summary collapse
- #approve(_approver) ⇒ Object
- #custom_quota? ⇒ Boolean
- #valid_data_manager? ⇒ Boolean
- #valid_data_sponsor? ⇒ Boolean
- #valid_departments? ⇒ Boolean
- #valid_description? ⇒ Boolean
- #valid_parent_folder? ⇒ Boolean
- #valid_project_folder? ⇒ Boolean
- #valid_quota? ⇒ Boolean
- #valid_requested_by? ⇒ Boolean
- #valid_title? ⇒ Boolean
- #valid_to_submit? ⇒ Boolean
Instance Method Details
#approve(_approver) ⇒ Object
69 70 71 72 73 74 75 76 |
# File 'app/models/request.rb', line 69 def approve(_approver) = RequestProjectMetadata.convert(self) project = Project.create!({ metadata_json: }) project.draft_doi project.save # TODO: create the project in mediaflux here (need new tigerdata.project.create command) project end |
#custom_quota? ⇒ Boolean
61 62 63 |
# File 'app/models/request.rb', line 61 def custom_quota? quota == "custom" end |
#valid_data_manager? ⇒ Boolean
31 32 33 |
# File 'app/models/request.rb', line 31 def valid_data_manager? valid_uid?(data_manager, :data_manager) end |
#valid_data_sponsor? ⇒ Boolean
27 28 29 |
# File 'app/models/request.rb', line 27 def valid_data_sponsor? valid_uid?(data_sponsor, :data_sponsor) end |
#valid_departments? ⇒ Boolean
35 36 37 |
# File 'app/models/request.rb', line 35 def valid_departments? field_present?(departments, :departments) end |
#valid_description? ⇒ Boolean
39 40 41 |
# File 'app/models/request.rb', line 39 def valid_description? field_present?(description, :description) end |
#valid_parent_folder? ⇒ Boolean
43 44 45 |
# File 'app/models/request.rb', line 43 def valid_parent_folder? field_present?(parent_folder, :parent_folder) end |
#valid_project_folder? ⇒ Boolean
47 48 49 |
# File 'app/models/request.rb', line 47 def valid_project_folder? field_present?(project_folder, :project_folder) end |
#valid_quota? ⇒ Boolean
51 52 53 54 55 56 57 58 59 |
# File 'app/models/request.rb', line 51 def valid_quota? if ((quota == "500 GB") || (quota == "2 TB") || (quota == "10 TB") || (quota == "25 TB")) || (custom_quota? && (storage_size.present? && (storage_size > 0)) && ((storage_unit == "GB") || (storage_unit == "TB"))) true else errors.add(:quota, :invalid, message: "must be one of '500 GB', '2 TB', '10 TB', '25 TB', or 'custom'") false end end |
#valid_requested_by? ⇒ Boolean
65 66 67 |
# File 'app/models/request.rb', line 65 def valid_requested_by? field_present?(requested_by, :requested_by) end |
#valid_title? ⇒ Boolean
23 24 25 |
# File 'app/models/request.rb', line 23 def valid_title? field_present?(project_title, :project_title) end |
#valid_to_submit? ⇒ Boolean
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/models/request.rb', line 6 def valid_to_submit? errors.clear # run all validations and then check for errors otherwise ruby stops at the first error valid_title? valid_data_sponsor? valid_data_manager? valid_departments? valid_quota? valid_description? # Is parent folder really required? For Skeletor let's skip it. # valid_parent_folder? valid_project_folder? # For Skeletor we are setting the requestor to the data sponsor # valid_requested_by? errors.count == 0 end |