use Rose::Object::MakeMethods::Generic
(
- scalar => [ qw(type profile file all_profiles all_charsets sep_char all_sep_chars quote_char all_quote_chars escape_char all_escape_chars all_buchungsgruppen all_units
- import_status errors headers raw_data_headers info_headers data num_imported num_importable displayable_columns) ],
+ scalar => [ qw(type profile file all_profiles all_charsets sep_char all_sep_chars quote_char all_quote_chars escape_char all_escape_chars all_buchungsgruppen all_units
+ import_status errors headers raw_data_headers info_headers data num_imported num_importable displayable_columns file) ],
+ 'scalar --get_set_init' => [ qw(worker) ]
);
__PACKAGE__->run_before('check_auth');
sub action_save {
my ($self) = @_;
- $self->profile_from_form(SL::DB::Manager::CsvImportProfile->find_by(name => $::form->{profile}->{name}));
+ $self->profile_from_form(SL::DB::Manager::CsvImportProfile->find_by(name => $::form->{profile}->{name}, login => $::myconfig{login}));
$self->profile->save;
flash_later('info', $::locale->text("The profile has been saved under the name '#1'.", $self->profile->name));
sub action_destroy {
my $self = shift;
- my $profile = SL::DB::CsvImportProfile->new(id => $::form->{profile}->{id});
+ my $profile = SL::DB::CsvImportProfile->new(id => $::form->{profile}->{id}, login => $::myconfig{login});
$profile->delete(cascade => 1);
flash_later('info', $::locale->text('The profile \'#1\' has been deleted.', $profile->name));
return $self->action_new;
}
- my $worker = $self->create_worker($file);
+ $self->file($file);
+
+ my $worker = $self->worker();
+
$worker->run;
$self->num_imported(0);
sub load_default_profile {
my ($self) = @_;
+ my $profile;
if ($::form->{profile}->{id}) {
- $self->profile(SL::DB::CsvImportProfile->new(id => $::form->{profile}->{id})->load);
-
- } else {
- $self->profile(SL::DB::Manager::CsvImportProfile->find_by(type => $self->{type}, is_default => 1));
- $self->profile(SL::DB::CsvImportProfile->new(type => $self->{type})) unless $self->profile;
+ $profile = SL::DB::Manager::CsvImportProfile->find_by(id => $::form->{profile}->{id}, login => $::myconfig{login});
}
+ $profile ||= SL::DB::Manager::CsvImportProfile->find_by(type => $self->{type}, is_default => 1, login => $::myconfig{login});
+ $profile ||= SL::DB::CsvImportProfile->new(type => $self->{type}, login => $::myconfig{login});
+ $self->profile($profile);
$self->profile->set_defaults;
}
sub load_all_profiles {
my ($self, %params) = @_;
- $self->all_profiles(SL::DB::Manager::CsvImportProfile->get_all(where => [ type => $self->type ], sort_by => 'name'));
+ $self->all_profiles(SL::DB::Manager::CsvImportProfile->get_all(
+ where => [
+ type => $self->type,
+ login => $::myconfig{login},
+ ],
+ sort_by => 'name'));
}
sub profile_from_form {
}
delete $::form->{profile}->{id};
- $self->profile($existing_profile || SL::DB::CsvImportProfile->new);
+ $self->profile($existing_profile || SL::DB::CsvImportProfile->new(login => $::myconfig{login}));
$self->profile->assign_attributes(%{ $::form->{profile} });
$self->profile->settings(map({ { key => $_, value => $::form->{settings}->{$_} } } keys %{ $::form->{settings} }),
@settings);
return "csv-import-" . $self->type . ".csv";
}
-sub create_worker {
- my ($self, $file) = @_;
+sub init_worker {
+ my $self = shift;
+
+ my @args = (controller => $self);
+
+ if ( $self->file() ) {
+ push(@args, file => $self->file());
+ }
- return $self->{type} eq 'customers_vendors' ? SL::Controller::CsvImport::CustomerVendor->new(controller => $self, file => $file)
- : $self->{type} eq 'contacts' ? SL::Controller::CsvImport::Contact->new( controller => $self, file => $file)
- : $self->{type} eq 'addresses' ? SL::Controller::CsvImport::Shipto->new( controller => $self, file => $file)
- : $self->{type} eq 'parts' ? SL::Controller::CsvImport::Part->new( controller => $self, file => $file)
- : $self->{type} eq 'projects' ? SL::Controller::CsvImport::Project->new( controller => $self, file => $file)
+ return $self->{type} eq 'customers_vendors' ? SL::Controller::CsvImport::CustomerVendor->new(@args)
+ : $self->{type} eq 'contacts' ? SL::Controller::CsvImport::Contact->new(@args)
+ : $self->{type} eq 'addresses' ? SL::Controller::CsvImport::Shipto->new(@args)
+ : $self->{type} eq 'parts' ? SL::Controller::CsvImport::Part->new(@args)
+ : $self->{type} eq 'projects' ? SL::Controller::CsvImport::Project->new(@args)
: die "Program logic error";
}
sub setup_help {
my ($self) = @_;
- $self->create_worker->setup_displayable_columns;
+ $self->worker->setup_displayable_columns;
}