Beim CSV-Import die Session-Id der "auftraggebenden" Sitzung verwenden.
authorBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 27 Jan 2014 13:27:51 +0000 (14:27 +0100)
committerBernd Bleßmann <bernd@kivitendo-premium.de>
Mon, 27 Jan 2014 13:33:57 +0000 (14:33 +0100)
Damit kann der CSV-Import via Task-Server auch von Benutzern verwendet
werden, die den Task-Server nicht in ihrer Sitzung gestartet haben.

Es bleibt das Problem, dass der Import nicht ausgeführt werden kann,
wenn sie sich abmelden.

Behebt #2198.

SL/BackgroundJob/CsvImport.pm
SL/Controller/CsvImport.pm
SL/SessionFile.pm

index 7df8b9b..b5e6f29 100644 (file)
@@ -82,8 +82,9 @@ sub do_import {
   );
   $c->add_progress_tracker($self);
 
+  my $session_id = $job->data_as_hash->{session_id};
 
-  $c->test_and_import(test => $test, session_id => $job->data_as_hash->{session_id});
+  $c->test_and_import(test => $test, session_id => $session_id);
 
   if ($c->errors) {
     $job->set_data(
@@ -91,7 +92,7 @@ sub do_import {
     )->save;
   } else {
 
-    my $report_id = $c->save_report;
+    my $report_id = $c->save_report(session_id => $session_id);
     $job->set_data(report_id => $report_id)->save;
 
     $c->track_progress(finished => 1);
index 50b5e4d..58715d3 100644 (file)
@@ -414,17 +414,17 @@ sub char_map {
 }
 
 sub save_report {
-  my ($self, $report_id) = @_;
+  my ($self, %params) = @_;
 
   if ($self->worker->is_multiplexed) {
-    return $self->save_report_multi($report_id);
+    return $self->save_report_multi(%params);
   } else {
-    return $self->save_report_single($report_id);
+    return $self->save_report_single(%params);
   }
 }
 
 sub save_report_single {
-  my ($self, $report_id) = @_;
+  my ($self, %params) = @_;
 
   $self->track_progress(phase => 'building report', progress => 0);
 
@@ -432,7 +432,7 @@ sub save_report_single {
   $clone_profile->save; # weird bug. if this isn't saved before adding it to the report, it will default back to the last profile.
 
   my $report = SL::DB::CsvImportReport->new(
-    session_id => $::auth->create_or_refresh_session,
+    session_id => $params{session_id},
     profile    => $clone_profile,
     type       => $self->type,
     file       => '',
@@ -494,7 +494,7 @@ sub save_report_single {
 }
 
 sub save_report_multi {
-  my ($self, $report_id) = @_;
+  my ($self, %params) = @_;
 
   $self->track_progress(phase => 'building report', progress => 0);
 
@@ -502,7 +502,7 @@ sub save_report_multi {
   $clone_profile->save; # weird bug. if this isn't saved before adding it to the report, it will default back to the last profile.
 
   my $report = SL::DB::CsvImportReport->new(
-    session_id => $::auth->create_or_refresh_session,
+    session_id => $params{session_id},
     profile    => $clone_profile,
     type       => $self->type,
     file       => '',
index 08f905b..bf6c313 100644 (file)
@@ -21,6 +21,10 @@ sub new {
 
   my $self   = $class->SUPER::new;
 
+  if ($params{session_id}) {
+    $self->session_id($params{session_id})
+  }
+
   my $path   = $self->prepare_path;
   $file_name =~ s:.*/::g;
   $file_name =  "${path}/${file_name}";