mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-09 06:28:06 -05:00
Fix importing process
This commit is contained in:
@@ -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' ||
|
||||
|
||||
@@ -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',
|
||||
|
||||
Reference in New Issue
Block a user