improve download releases button
This commit is contained in:
@@ -7,13 +7,14 @@ class GenerateContractsZipJob < ApplicationJob
|
||||
@project = job.arguments.first
|
||||
@download = job.arguments.second
|
||||
@release_type = job.arguments.third
|
||||
@folder_name = "#{@project.name.parameterize}_#{get_release_name(@release_type).gsub('_', '-')}"
|
||||
@release_ids = job.arguments.fourth
|
||||
@search_query = job.arguments.fifth
|
||||
@type_filter = job.arguments[5]
|
||||
@folder_name = "#{@project.name.parameterize}_#{release_name.gsub('_', '-')}"
|
||||
@download.update!(name: @folder_name, status: :pending)
|
||||
end
|
||||
|
||||
def perform(project, download, release_type, release_ids)
|
||||
releases = project.public_send(get_release_name(release_type)).where(id: release_ids)
|
||||
|
||||
def perform(project, download, release_type, release_ids, search_query, type_filter)
|
||||
::ReleaseContractCollectionService.new(releases, @folder_name).build do |dir, files|
|
||||
zipfile_name = "#{dir}/#{@folder_name}.zip"
|
||||
Zip::File.open(zipfile_name, Zip::File::CREATE) do |zipfile|
|
||||
@@ -31,7 +32,7 @@ class GenerateContractsZipJob < ApplicationJob
|
||||
end
|
||||
rescue StandardError => e
|
||||
Rails.logger.error("Failed to generate download for project (##{project.id}) with release type #{release_type}\n" + e.message)
|
||||
|
||||
|
||||
@download.failure!
|
||||
ProjectsChannel.broadcast_download_generation_update(@download, I18n.t("contract_downloads.download.failure"))
|
||||
end
|
||||
@@ -61,7 +62,32 @@ class GenerateContractsZipJob < ApplicationJob
|
||||
end
|
||||
end
|
||||
|
||||
def get_release_name(release_type)
|
||||
release_type.constantize.model_name.plural
|
||||
def release_name
|
||||
@release_type.constantize.model_name.plural
|
||||
end
|
||||
|
||||
def all_releases
|
||||
@project.public_send(release_name)
|
||||
end
|
||||
|
||||
def releases
|
||||
if @release_ids.any?
|
||||
return all_releases.where(id: @release_ids)
|
||||
end
|
||||
|
||||
results = all_releases
|
||||
if all_releases.respond_to?(:complete, :incomplete)
|
||||
results = case @type_filter
|
||||
when 'complete'
|
||||
all_releases.complete
|
||||
when 'incomplete'
|
||||
all_releases.incomplete
|
||||
else
|
||||
all_releases
|
||||
end
|
||||
end
|
||||
|
||||
results = results.search(@search_query) if @search_query.present?
|
||||
results
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user