kanbanworkflowstimelinescrumrubyroadmapproject-planningproject-managementopenprojectangularissue-trackerifcgantt-chartganttbug-trackerboardsbcf
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
46 lines
1.1 KiB
46 lines
1.1 KiB
4 years ago
|
class Backup < Export
|
||
|
class << self
|
||
|
def permission
|
||
|
:create_backup
|
||
|
end
|
||
|
|
||
|
def include_attachments?
|
||
|
val = OpenProject::Configuration.backup_include_attachments
|
||
|
|
||
|
val.nil? ? true : val.to_s.to_bool # default to true
|
||
|
end
|
||
|
|
||
|
##
|
||
|
# Don't include attachments in archive if they are larger than
|
||
|
# this value combined.
|
||
|
def attachment_size_max_sum_mb
|
||
|
(OpenProject::Configuration.backup_attachment_size_max_sum_mb.presence || 1024).to_i
|
||
|
end
|
||
|
|
||
|
def attachments_query
|
||
|
Attachment
|
||
|
.where.not(container_type: nil)
|
||
|
.where.not(container_type: Export.name)
|
||
|
end
|
||
|
|
||
|
def attachments_size_in_mb(attachments_query = self.attachments_query)
|
||
|
attachments_query.pluck(:filesize).sum / 1024.0 / 1024.0
|
||
|
end
|
||
|
|
||
|
def attachments_size_in_bounds?(attachments_query = self.attachments_query, max: self.attachment_size_max_sum_mb)
|
||
|
attachments_size_in_mb(attachments_query) <= max
|
||
|
end
|
||
|
end
|
||
|
|
||
|
acts_as_attachable(
|
||
|
view_permission: permission,
|
||
|
add_permission: permission,
|
||
|
delete_permission: permission,
|
||
|
only_user_allowed: true
|
||
|
)
|
||
|
|
||
|
def ready?
|
||
|
attachments.any?
|
||
|
end
|
||
|
end
|