From 0452d243e1b0082881a6a1767c3c2f2363940997 Mon Sep 17 00:00:00 2001 From: "Stanko K.R." Date: Thu, 29 Jan 2026 11:31:30 +0100 Subject: [PATCH] Fix account creation and import updates --- app/controllers/imports_controller.rb | 32 ++++++++++++--------------- app/models/signup.rb | 4 ++-- 2 files changed, 16 insertions(+), 20 deletions(-) diff --git a/app/controllers/imports_controller.rb b/app/controllers/imports_controller.rb index 76cb41c83..a791c1929 100644 --- a/app/controllers/imports_controller.rb +++ b/app/controllers/imports_controller.rb @@ -1,5 +1,5 @@ class ImportsController < ApplicationController - disallow_account_scope + disallow_account_scope only: %i[ new create ] layout "public" @@ -7,32 +7,28 @@ class ImportsController < ApplicationController end def create - account = create_account_for_import + signup = Signup.new(identity: Current.identity, full_name: "Import", skip_account_seeding: true) - Current.set(account: account) do - @import = account.imports.create!(identity: Current.identity, file: params[:file]) + if signup.complete + start_import(signup.account) + else + render :new, alert: "Couldn't create account." end - - @import.perform_later - redirect_to import_path(@import) end def show - @import = Current.identity.imports.find(params[:id]) + @import = Current.account.imports.find(params[:id]) end private - def create_account_for_import - Account.create_with_owner( - account: { name: account_name_from_zip }, - owner: { name: Current.identity.email_address.split("@").first, identity: Current.identity } - ) - end + def start_import(account) + import = nil - def account_name_from_zip - Zip::File.open(params[:file].tempfile.path) do |zip| - entry = zip.find_entry("data/account.json") - JSON.parse(entry.get_input_stream.read)["name"] + Current.set(account: account) do + import = account.imports.create!(identity: Current.identity, file: params[:file]) + import.process_later end + + redirect_to import_path(import, script_name: account.slug) end end diff --git a/app/models/signup.rb b/app/models/signup.rb index 041f461ac..2f096165d 100644 --- a/app/models/signup.rb +++ b/app/models/signup.rb @@ -3,7 +3,7 @@ class Signup include ActiveModel::Attributes include ActiveModel::Validations - attr_accessor :full_name, :email_address, :identity + attr_accessor :full_name, :email_address, :identity, :skip_account_seeding attr_reader :account, :user validates :email_address, format: { with: URI::MailTo::EMAIL_REGEXP }, on: :identity_creation @@ -65,7 +65,7 @@ class Signup } ) @user = @account.users.find_by!(role: :owner) - @account.setup_customer_template + @account.setup_customer_template unless skip_account_seeding end def generate_account_name