Class: ProjectShowPresenter
- Inherits:
-
Object
- Object
- ProjectShowPresenter
show all
- Defined in:
- app/presenters/project_show_presenter.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(project, current_user, project_mf: nil) ⇒ ProjectShowPresenter
17
18
19
20
21
|
# File 'app/presenters/project_show_presenter.rb', line 17
def initialize(project, current_user, project_mf: nil)
@project = project
@project_mf = project_mf || project.mediaflux_metadata(session_id: current_user.mediaflux_session)
@project_metadata = @project&.metadata_model
end
|
Instance Attribute Details
#project ⇒ Object
Returns the value of attribute project.
6
7
8
|
# File 'app/presenters/project_show_presenter.rb', line 6
def project
@project
end
|
Returns the value of attribute project_metadata.
6
7
8
|
# File 'app/presenters/project_show_presenter.rb', line 6
def project_metadata
@project_metadata
end
|
Class Method Details
.xml_presenter_class ⇒ Class
Returns The presenter class for building XML Documents from Projects.
9
10
11
|
# File 'app/presenters/project_show_presenter.rb', line 9
def self.xml_presenter_class
ProjectXmlPresenter
end
|
Instance Method Details
#approved_by_display_name ⇒ Object
130
131
132
|
# File 'app/presenters/project_show_presenter.rb', line 130
def approved_by_display_name
approved_by_user.display_name_only_safe
end
|
#approved_by_uid ⇒ Object
134
135
136
|
# File 'app/presenters/project_show_presenter.rb', line 134
def approved_by_uid
approved_by_user.uid
end
|
#approved_on ⇒ Object
138
139
140
141
142
143
144
145
|
# File 'app/presenters/project_show_presenter.rb', line 138
def approved_on
date_time = {}
approve_date = safe_date(@project.metadata_json["submission"]["approved_on"])
date = approve_date.strftime("%B %d, %Y")
time = approve_date.strftime("%I:%M %p")
date_time["#{date}"] = time
date_time
end
|
#created ⇒ Object
41
42
43
|
# File 'app/presenters/project_show_presenter.rb', line 41
def created
@project.created_at.strftime("%b %e, %Y %l:%M %p")
end
|
#data_manager ⇒ Object
53
54
55
|
# File 'app/presenters/project_show_presenter.rb', line 53
def data_manager
@data_manager ||= User.find_by(uid: @project_mf[:data_manager])
end
|
#data_read_only_users ⇒ Object
57
58
59
|
# File 'app/presenters/project_show_presenter.rb', line 57
def data_read_only_users
(@project_mf[:ro_users] || []).map { |uid| UserPresenter.new(User.find_by(uid:)) }.compact
end
|
#data_read_write_users ⇒ Object
61
62
63
|
# File 'app/presenters/project_show_presenter.rb', line 61
def data_read_write_users
(@project_mf[:rw_users] || []).map { |uid| UserReadWritePresenter.new(User.find_by(uid:)) }.compact
end
|
49
50
51
|
# File 'app/presenters/project_show_presenter.rb', line 49
def
@data_sponsor ||= User.find_by(uid: @project_mf[:data_sponsor])
end
|
#data_user_names ⇒ Object
73
74
75
76
|
# File 'app/presenters/project_show_presenter.rb', line 73
def data_user_names
user_model_names = data_users.map(&:display_name_safe)
user_model_names.join(", ")
end
|
#data_users ⇒ Object
65
66
67
68
69
70
71
|
# File 'app/presenters/project_show_presenter.rb', line 65
def data_users
@data_users ||= begin
unsorted_data_users = data_read_only_users + data_read_write_users
sorted_data_users = unsorted_data_users.sort_by { |u| u.family_name || u.uid }
sorted_data_users.uniq { |u| u.uid }
end
end
|
#department_codes ⇒ Object
147
148
149
150
151
152
153
154
155
|
# File 'app/presenters/project_show_presenter.rb', line 147
def department_codes
@dep_with_codes = {}
departments_list = departments.nil? ? [] : departments.first.split(", ")
departments_list.map do |dept|
tmp_code = Affiliation.find_fuzzy_by_name(dept)
@dep_with_codes[dept] = tmp_code.code unless tmp_code.nil?
end
@dep_with_codes
end
|
#departments ⇒ Object
105
106
107
|
# File 'app/presenters/project_show_presenter.rb', line 105
def departments
@project_mf[:departments] || []
end
|
#description ⇒ Object
27
28
29
|
# File 'app/presenters/project_show_presenter.rb', line 27
def description
@project_mf[:description]
end
|
175
176
177
178
|
# File 'app/presenters/project_show_presenter.rb', line 175
def formatted_quota_percentage(session_id:)
value = quota_percentage(session_id:)
format("%.3f", value)
end
|
170
171
172
173
|
# File 'app/presenters/project_show_presenter.rb', line 170
def formatted_storage_capacity(session_id:)
value = storage_capacity(session_id: session_id)
format("%.3f", value)
end
|
#globus ⇒ Object
93
94
95
|
# File 'app/presenters/project_show_presenter.rb', line 93
def globus
@project_mf[:globus] == true ? "Yes" : "No"
end
|
#hpc ⇒ Object
89
90
91
|
# File 'app/presenters/project_show_presenter.rb', line 89
def hpc
@project_mf[:hpc] == true ? "Yes" : "No"
end
|
#number_of_files ⇒ Object
101
102
103
|
# File 'app/presenters/project_show_presenter.rb', line 101
def number_of_files
@project_mf[:number_of_files]
end
|
#project_directory ⇒ Object
used to hide the project root that is not visible to the end user
83
84
85
86
87
|
# File 'app/presenters/project_show_presenter.rb', line 83
def project_directory
directory = @project_mf[:project_directory] || ""
directory.start_with?("/") ? directory : "/" + directory
end
|
#project_id ⇒ Object
157
158
159
|
# File 'app/presenters/project_show_presenter.rb', line 157
def project_id
@project_mf[:project_id]
end
|
#project_in_rails? ⇒ Boolean
201
202
203
|
# File 'app/presenters/project_show_presenter.rb', line 201
def project_in_rails?
project != nil
end
|
#project_purpose ⇒ Object
78
79
80
|
# File 'app/presenters/project_show_presenter.rb', line 78
def project_purpose
ProjectPurpose.label_for(@project_mf[:project_purpose])
end
|
#quota_percentage(session_id:, dashboard: false) ⇒ Object
184
185
186
187
188
189
190
191
192
193
194
|
# File 'app/presenters/project_show_presenter.rb', line 184
def quota_percentage(session_id:, dashboard: false)
storage_capacity = project.storage_capacity_raw(session_id:)
return 0 if storage_capacity.zero?
storage_usage = project.storage_usage_raw(session_id:)
return 0 if storage_usage == 0
storage_value = (storage_usage.to_f / storage_capacity.to_f) * 100
minimum_storage_used = true if storage_value > 0 && storage_value < 1
storage_value = 1 if minimum_storage_used
storage_value += 1 if minimum_storage_used && dashboard
storage_value
end
|
#quota_usage(session_id:) ⇒ Object
180
181
182
|
# File 'app/presenters/project_show_presenter.rb', line 180
def quota_usage(session_id:)
"#{project.storage_usage(session_id:)} out of #{project.storage_capacity(session_id:)} used"
end
|
#requested_by_display_name ⇒ Object
113
114
115
|
# File 'app/presenters/project_show_presenter.rb', line 113
def requested_by_display_name
requested_by_user.display_name_only_safe
end
|
#requested_by_uid ⇒ Object
117
118
119
|
# File 'app/presenters/project_show_presenter.rb', line 117
def requested_by_uid
requested_by_user.uid
end
|
#requested_on ⇒ Object
121
122
123
124
125
126
127
128
|
# File 'app/presenters/project_show_presenter.rb', line 121
def requested_on
date_time = {}
req_date = safe_date(@project.metadata_json["submission"]["request_date_time"])
date = req_date.strftime("%B %d, %Y")
time = req_date.strftime("%I:%M %p")
date_time["#{date}"] = time
date_time
end
|
#smb ⇒ Object
97
98
99
|
# File 'app/presenters/project_show_presenter.rb', line 97
def smb
@project_mf[:smb] == true ? "Yes" : "No"
end
|
#storage_capacity(session_id: nil) ⇒ Object
161
162
163
164
165
166
167
168
|
# File 'app/presenters/project_show_presenter.rb', line 161
def storage_capacity(session_id: nil)
return project_metadata.storage_capacity if session_id.nil?
persisted = project.storage_capacity_raw(session_id: session_id)
value = persisted.to_f
value*default_capacity_divisor
end
|
#submission_provenance ⇒ Object
109
110
111
|
# File 'app/presenters/project_show_presenter.rb', line 109
def submission_provenance
@project.metadata_json["submission"]
end
|
#title ⇒ Object
23
24
25
|
# File 'app/presenters/project_show_presenter.rb', line 23
def title
@project_mf[:title]
end
|
#to_xml ⇒ String
Returns the XML for the project Document.
32
33
34
|
# File 'app/presenters/project_show_presenter.rb', line 32
def to_xml
xml_document.to_xml
end
|
#updated ⇒ Object
45
46
47
|
# File 'app/presenters/project_show_presenter.rb', line 45
def updated
@project.updated_at.strftime("%b %e, %Y %l:%M %p")
end
|
#user_has_access?(user:) ⇒ Boolean
196
197
198
199
|
# File 'app/presenters/project_show_presenter.rb', line 196
def user_has_access?(user:)
return true if user.eligible_sysadmin?
&.uid == user.uid || data_manager&.uid == user.uid || data_users.map(&:uid).include?(user.uid)
end
|
#xml_document ⇒ Nokogiri::XML::Document
Returns the XML Document for the Project.
37
38
39
|
# File 'app/presenters/project_show_presenter.rb', line 37
def xml_document
@xml_document ||= xml_presenter.document
end
|