kareila: (Default)
kareila ([personal profile] kareila) wrote in [site community profile] changelog2010-06-07 12:04 am

[dw-free] Better import logging/error message passthrough

[commit: http://hg.dwscoalition.org/dw-free/rev/b61400ba04b4]

http://bugs.dwscoalition.org/show_bug.cgi?id=1080

Improve status reporting and failure handling of icon imports.

Patch by [personal profile] afuna.

Files modified:
  • cgi-bin/DW/Worker/ContentImporter/LiveJournal/Userpics.pm
--------------------------------------------------------------------------------
diff -r 06104cf6052e -r b61400ba04b4 cgi-bin/DW/Worker/ContentImporter/LiveJournal/Userpics.pm
--- a/cgi-bin/DW/Worker/ContentImporter/LiveJournal/Userpics.pm	Sun Jun 06 18:40:34 2010 -0500
+++ b/cgi-bin/DW/Worker/ContentImporter/LiveJournal/Userpics.pm	Sun Jun 06 19:04:04 2010 -0500
@@ -83,8 +83,11 @@ sub try_work {
     $0 = sprintf( 'content-importer [userpics: %s(%d)]', $u->user, $u->id );
 
 # FIXME: URL may not be accurate here for all sites
+    my $fetch_error = "";
     my $un = $data->{usejournal} || $data->{username};
-    my ( $default, @pics ) = $class->get_lj_userpic_data( "http://$data->{hostname}/users/$un/", $data, $log );
+    my ( $default, @pics ) = $class->get_lj_userpic_data( "http://$data->{hostname}/users/$un/", $data, $log, \$fetch_error );
+
+    return $temp_fail->( $fetch_error ) if $fetch_error;
 
     my $errs = [];
     my @imported = DW::Worker::ContentImporter::Local::Userpics->import_userpics( $u, $errs, $default, \@pics, $log );
@@ -111,12 +114,16 @@ sub try_work {
     # FIXME: Link to "select userpics later" (once it is created) if we have the backup.
     my $message = "$num_imported out of $to_import usericon" . ( $num_imported == 1 ? "" : "s" ) . " successfully imported.";
     $message = "None of your usericons imported successfully." if $num_imported == 0;
+    $message = "There were no usericons to import." if $to_import == 0;
 
     my $text;
     if ( @$errs ) {
         $text = "The following usericons failed to import:\n\n" . join( "\n", map { " * $_" } @$errs ) . "\n\n$message";
     } elsif ( scalar( @imported ) != scalar( @pics ) ) {
         $text = "You did not have enough room to import all your usericons.\n\n$message";
+    } else {
+        # for example, when no icons could be imported.
+        $text = $message;
     }
 
     $status->( text => $text );
@@ -124,7 +131,7 @@ sub try_work {
 }
 
 sub get_lj_userpic_data {
-    my ( $class, $url, $data, $log ) = @_;
+    my ( $class, $url, $data, $log, $err_ref ) = @_;
     $url =~ s/\/$//;
 
     # default, if no log, do nothing
@@ -140,8 +147,11 @@ sub get_lj_userpic_data {
     $log->( 'Fetching: %s', $uurl );
 
     my $resp = $ua->get( $uurl );
-    return $log->( 'Failed retrieving page.' )
-        unless $resp && $resp->is_success;
+    unless ( $resp && $resp->is_success ) {
+        my $error_message = 'Failed retrieving page (' . $resp->status_line . ').';
+        $$err_ref = $error_message if $err_ref;
+        return $log->( $error_message );
+    }
 
     my $content = $resp->content;
 
--------------------------------------------------------------------------------

Post a comment in response:

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

If you are unable to use this captcha for any reason, please contact us by email at support@dreamwidth.org