Fix importing process

This commit is contained in:
Eugene Burmakin
2025-07-28 23:09:33 +02:00
parent 0f7e66e136
commit 132dc658b0
2 changed files with 23 additions and 4 deletions

View File

@@ -54,7 +54,7 @@ class Settings::UsersController < ApplicationController
end
def import
files_params = params.dig(:user_import, :files)
files_params = params.dig(:import, :files)
raw_files = Array(files_params).reject(&:blank?)
if raw_files.empty?
@@ -102,8 +102,12 @@ class Settings::UsersController < ApplicationController
validate_archive_blob(blob)
# Generate unique name if duplicate exists
base_name = blob.filename.to_s
unique_name = generate_unique_import_name(base_name)
import = current_user.imports.build(
name: blob.filename.to_s,
name: unique_name,
source: :user_data_archive
)
@@ -114,6 +118,21 @@ class Settings::UsersController < ApplicationController
import
end
def generate_unique_import_name(base_name)
return base_name unless current_user.imports.exists?(name: base_name)
# Extract extension
name_without_ext = File.basename(base_name, File.extname(base_name))
extension = File.extname(base_name)
counter = 1
loop do
candidate_name = "#{name_without_ext}_#{counter}#{extension}"
break candidate_name unless current_user.imports.exists?(name: candidate_name)
counter += 1
end
end
def validate_archive_blob(blob)
unless blob.content_type == 'application/zip' ||
blob.content_type == 'application/x-zip-compressed' ||

View File

@@ -83,10 +83,10 @@
turbo: false
} do |f| %>
<div class="form-control">
<%= f.label "user_import[files]", class: 'label' do %>
<%= f.label "import[files]", class: 'label' do %>
<span class="label-text">Select ZIP archive</span>
<% end %>
<%= f.file_field "user_import[files][]",
<%= f.file_field "import[files][]",
multiple: false,
direct_upload: true,
accept: '.zip',