Class: ProjectXmlPresenter
- Inherits:
-
Object
- Object
- ProjectXmlPresenter
- Defined in:
- app/presenters/project_xml_presenter.rb
Overview
rubocop:disable Metrics/ClassLength
Instance Attribute Summary collapse
-
#project ⇒ Object
readonly
Returns the value of attribute project.
-
#project_metadata ⇒ Object
readonly
Returns the value of attribute project_metadata.
Instance Method Summary collapse
-
#approval_date_time ⇒ String
The date and time of the approval.
-
#approved_by ⇒ String
The user ID of the user who approved the project.
-
#data_use_agreement? ⇒ String
Whether or not the project data use agreement.
-
#department(index) ⇒ String
The department code for departments associated with the project.
-
#department_code(index) ⇒ String
The department code for the project.
-
#document ⇒ Nokogiri::XML::Document
The XML document.
-
#globus_enable_approved ⇒ String
Whether the request for a Globus mount is approved.
-
#globus_enable_approved? ⇒ Boolean
Whether the request for a Globus mount is approved.
-
#globus_enable_requested ⇒ String
Whether the request for a Globus mount is requested.
-
#globus_enable_requested? ⇒ Boolean
Whether there is a request for a Globus mount.
-
#hpc ⇒ String
Whether or not the project is associated with HPC.
-
#initialize(project) ⇒ ProjectXmlPresenter
constructor
A new instance of ProjectXmlPresenter.
-
#project_directory ⇒ Array<String>
The project directory paths.
-
#project_directory_approved? ⇒ Boolean
Whether the project directory request is approved.
-
#project_directory_path(index) ⇒ String
The project directory path.
-
#project_directory_protocol(index) ⇒ String
The protocol for the project directory.
-
#project_resource_type ⇒ String
The project resource type.
-
#project_visibility ⇒ String
The project visibility.
-
#provisional_project? ⇒ Boolean
Whether the project is provisional.
-
#request_date_time ⇒ String
The date and time of the request.
-
#requested_by ⇒ String
The user ID of the user who requested the project.
-
#requested_storage ⇒ String
The requested project storage capacity.
-
#smb_enable_approved ⇒ String
Whether the request for the SMB mount is approved.
-
#smb_enable_approved? ⇒ Boolean
Whether the request for the SMB mount is approved.
-
#smb_enable_requested ⇒ String
Whether the request for the SMB mount is requested.
-
#smb_enable_requested? ⇒ Boolean
Whether there is a request for SMB mount.
-
#status ⇒ String
NOTE: Valid values are one of: ‘AdminReview’, ‘Approved’, ‘Active’, ‘Retired’, ‘Published’.
-
#storage_capacity_approved? ⇒ Boolean
Whether the project storage capacity request is approved.
-
#storage_performance_requested? ⇒ Boolean
Whether the project storage request is approved.
-
#submission ⇒ ProvenanceEvent
The first project submission event.
-
#submissions ⇒ Array<ProvenanceEvent>
The project submission events.
Constructor Details
#initialize(project) ⇒ ProjectXmlPresenter
Returns a new instance of ProjectXmlPresenter.
38 39 40 41 |
# File 'app/presenters/project_xml_presenter.rb', line 38 def initialize(project) @project = project @project_metadata = @project. end |
Instance Attribute Details
#project ⇒ Object (readonly)
Returns the value of attribute project.
5 6 7 |
# File 'app/presenters/project_xml_presenter.rb', line 5 def project @project end |
#project_metadata ⇒ Object (readonly)
Returns the value of attribute project_metadata.
5 6 7 |
# File 'app/presenters/project_xml_presenter.rb', line 5 def @project_metadata end |
Instance Method Details
#approval_date_time ⇒ String
Returns The date and time of the approval.
150 151 152 153 154 |
# File 'app/presenters/project_xml_presenter.rb', line 150 def approval_date_time return nil if approval_note.nil? approval_note[:note_date_time] end |
#approved_by ⇒ String
Returns The user ID of the user who approved the project.
143 144 145 146 147 |
# File 'app/presenters/project_xml_presenter.rb', line 143 def approved_by return if approval_note.nil? approval_note[:note_by] end |
#data_use_agreement? ⇒ String
Returns Whether or not the project data use agreement.
157 158 159 |
# File 'app/presenters/project_xml_presenter.rb', line 157 def data_use_agreement? .data_use_agreement.present? end |
#department(index) ⇒ String
Returns The department code for departments associated with the project.
226 227 228 229 230 231 232 |
# File 'app/presenters/project_xml_presenter.rb', line 226 def department(index) value = departments[index] if value.length < 6 value = value.rjust(6, "0") end value end |
#department_code(index) ⇒ String
Returns The department code for the project.
235 236 237 |
# File 'app/presenters/project_xml_presenter.rb', line 235 def department_code(index) departments[index] end |
#document ⇒ Nokogiri::XML::Document
Returns The XML document.
44 |
# File 'app/presenters/project_xml_presenter.rb', line 44 delegate :document, to: :build |
#globus_enable_approved ⇒ String
Returns Whether the request for a Globus mount is approved.
53 54 55 56 57 58 59 |
# File 'app/presenters/project_xml_presenter.rb', line 53 def globus_enable_approved if globus_enable_approved? "true" else "false" end end |
#globus_enable_approved? ⇒ Boolean
Returns Whether the request for a Globus mount is approved.
47 48 49 50 |
# File 'app/presenters/project_xml_presenter.rb', line 47 def globus_enable_approved? globus_request = .globus_request globus_request[:approved] || false end |
#globus_enable_requested ⇒ String
Returns Whether the request for a Globus mount is requested.
68 69 70 71 72 73 74 |
# File 'app/presenters/project_xml_presenter.rb', line 68 def globus_enable_requested if globus_enable_requested? "true" else "false" end end |
#globus_enable_requested? ⇒ Boolean
Returns Whether there is a request for a Globus mount.
62 63 64 65 |
# File 'app/presenters/project_xml_presenter.rb', line 62 def globus_enable_requested? globus_request = .globus_request globus_request.present? end |
#hpc ⇒ String
Returns Whether or not the project is associated with HPC.
172 |
# File 'app/presenters/project_xml_presenter.rb', line 172 delegate :hpc, to: :project_metadata |
#project_directory ⇒ Array<String>
Returns The project directory paths.
199 200 201 |
# File 'app/presenters/project_xml_presenter.rb', line 199 def project_directory [project.project_directory] end |
#project_directory_approved? ⇒ Boolean
Returns Whether the project directory request is approved.
178 179 180 181 |
# File 'app/presenters/project_xml_presenter.rb', line 178 def project_directory_approved? expectations = storage_performance_expectations expectations[:approved] || false end |
#project_directory_path(index) ⇒ String
Returns The project directory path.
205 206 207 208 |
# File 'app/presenters/project_xml_presenter.rb', line 205 def project_directory_path(index) entry = project_directory[index] entry end |
#project_directory_protocol(index) ⇒ String
Returns The protocol for the project directory.
212 213 214 215 216 217 218 219 220 221 222 |
# File 'app/presenters/project_xml_presenter.rb', line 212 def project_directory_protocol(index) entry = project_directory[index] segments = entry.split("://") if segments.length > 1 value = segments[0] value.upcase else ProjectMetadata.default_directory_protocol end end |
#project_resource_type ⇒ String
Returns The project resource type.
162 163 164 |
# File 'app/presenters/project_xml_presenter.rb', line 162 def project_resource_type .resource_type end |
#project_visibility ⇒ String
Returns The project visibility.
175 |
# File 'app/presenters/project_xml_presenter.rb', line 175 delegate :project_visibility, to: :project_metadata |
#provisional_project? ⇒ Boolean
Returns Whether the project is provisional.
167 168 169 |
# File 'app/presenters/project_xml_presenter.rb', line 167 def provisional_project? .provisional end |
#request_date_time ⇒ String
Returns The date and time of the request.
135 136 137 138 139 140 |
# File 'app/presenters/project_xml_presenter.rb', line 135 def request_date_time return if submission.nil? value = submission.created_at value.strftime("%Y-%m-%dT%H:%M:%S%:z") end |
#requested_by ⇒ String
Returns The user ID of the user who requested the project.
128 129 130 131 132 |
# File 'app/presenters/project_xml_presenter.rb', line 128 def requested_by return if submission.nil? submission.event_person end |
#requested_storage ⇒ String
Returns The requested project storage capacity.
240 241 242 |
# File 'app/presenters/project_xml_presenter.rb', line 240 def requested_storage storage_performance_expectations[:requested] || nil end |
#smb_enable_approved ⇒ String
Returns Whether the request for the SMB mount is approved.
83 84 85 86 87 88 89 |
# File 'app/presenters/project_xml_presenter.rb', line 83 def smb_enable_approved if smb_enable_approved? "true" else "false" end end |
#smb_enable_approved? ⇒ Boolean
Returns Whether the request for the SMB mount is approved.
77 78 79 80 |
# File 'app/presenters/project_xml_presenter.rb', line 77 def smb_enable_approved? smb_request = .smb_request smb_request[:approved] || false end |
#smb_enable_requested ⇒ String
Returns Whether the request for the SMB mount is requested.
98 99 100 101 102 103 104 |
# File 'app/presenters/project_xml_presenter.rb', line 98 def smb_enable_requested if smb_enable_requested? "true" else "false" end end |
#smb_enable_requested? ⇒ Boolean
Returns Whether there is a request for SMB mount.
92 93 94 95 |
# File 'app/presenters/project_xml_presenter.rb', line 92 def smb_enable_requested? smb_request = .smb_request smb_request.present? end |
#status ⇒ String
NOTE: Valid values are one of: ‘AdminReview’, ‘Approved’, ‘Active’, ‘Retired’, ‘Published’
108 109 110 111 112 113 114 115 |
# File 'app/presenters/project_xml_presenter.rb', line 108 def status project_status = project.status return if project_status.nil? return "AdminReview" if project_status == Project::PENDING_STATUS project_status.capitalize end |
#storage_capacity_approved? ⇒ Boolean
Returns Whether the project storage capacity request is approved.
184 185 186 187 188 189 190 |
# File 'app/presenters/project_xml_presenter.rb', line 184 def storage_capacity_approved? storage_capacity_size = storage_capacity["size"] || {} return false unless storage_capacity_size.key?(:approved) approved_size = storage_capacity_size[:approved] || 0 approved_size > 0 end |
#storage_performance_requested? ⇒ Boolean
Returns Whether the project storage request is approved.
193 194 195 196 |
# File 'app/presenters/project_xml_presenter.rb', line 193 def storage_performance_requested? requested = storage_performance_expectations[:requested] requested.present? end |
#submission ⇒ ProvenanceEvent
Returns The first project submission event.
118 119 120 |
# File 'app/presenters/project_xml_presenter.rb', line 118 def submission @submission ||= project.provenance_events.find_by(event_type: ProvenanceEvent::SUBMISSION_EVENT_TYPE) end |
#submissions ⇒ Array<ProvenanceEvent>
Returns The project submission events.
123 124 125 |
# File 'app/presenters/project_xml_presenter.rb', line 123 def submissions [submission] end |