mirror of
https://github.com/Freika/dawarich.git
synced 2026-01-11 01:31:39 -05:00
Fix importing process
This commit is contained in:
parent
0f7e66e136
commit
132dc658b0
2 changed files with 23 additions and 4 deletions
|
|
@ -54,7 +54,7 @@ class Settings::UsersController < ApplicationController
|
||||||
end
|
end
|
||||||
|
|
||||||
def import
|
def import
|
||||||
files_params = params.dig(:user_import, :files)
|
files_params = params.dig(:import, :files)
|
||||||
raw_files = Array(files_params).reject(&:blank?)
|
raw_files = Array(files_params).reject(&:blank?)
|
||||||
|
|
||||||
if raw_files.empty?
|
if raw_files.empty?
|
||||||
|
|
@ -102,8 +102,12 @@ class Settings::UsersController < ApplicationController
|
||||||
|
|
||||||
validate_archive_blob(blob)
|
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(
|
import = current_user.imports.build(
|
||||||
name: blob.filename.to_s,
|
name: unique_name,
|
||||||
source: :user_data_archive
|
source: :user_data_archive
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -114,6 +118,21 @@ class Settings::UsersController < ApplicationController
|
||||||
import
|
import
|
||||||
end
|
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)
|
def validate_archive_blob(blob)
|
||||||
unless blob.content_type == 'application/zip' ||
|
unless blob.content_type == 'application/zip' ||
|
||||||
blob.content_type == 'application/x-zip-compressed' ||
|
blob.content_type == 'application/x-zip-compressed' ||
|
||||||
|
|
|
||||||
|
|
@ -83,10 +83,10 @@
|
||||||
turbo: false
|
turbo: false
|
||||||
} do |f| %>
|
} do |f| %>
|
||||||
<div class="form-control">
|
<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>
|
<span class="label-text">Select ZIP archive</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
<%= f.file_field "user_import[files][]",
|
<%= f.file_field "import[files][]",
|
||||||
multiple: false,
|
multiple: false,
|
||||||
direct_upload: true,
|
direct_upload: true,
|
||||||
accept: '.zip',
|
accept: '.zip',
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue