diff options
-rw-r--r-- | Bugzilla/Migrate.pm | 8 | ||||
-rw-r--r-- | Bugzilla/Migrate/Flyspray.pm | 20 |
2 files changed, 21 insertions, 7 deletions
diff --git a/Bugzilla/Migrate.pm b/Bugzilla/Migrate.pm index 1aedbe39f..030369f08 100644 --- a/Bugzilla/Migrate.pm +++ b/Bugzilla/Migrate.pm @@ -716,7 +716,6 @@ sub insert_bugs { my $comments = delete $bug->{comments}; my $history = delete $bug->{history}; my $attachments = delete $bug->{attachments}; - my $dup_id = delete $bug->{dup_id}; $self->debug($bug, 3); @@ -777,9 +776,6 @@ sub insert_bugs { $reporter->{groups} = $super_user->groups; Bugzilla->set_user($reporter); my $created = Bugzilla::Bug->create($bug); - if (defined $dup_id) { - $dbh->do("INSERT INTO duplicates (dupe_of, dupe) VALUES (?, ?)", undef, $dup_id, $created->id); - } $self->debug('Created bug ' . $created->id); Bugzilla->set_user($super_user); @@ -864,6 +860,10 @@ sub _insert_attachments { $self->debug(' Inserting attachments:', 2); foreach my $attachment (@$attachments) { $self->debug($attachment, 3); + my $data_path = delete $attachment->{data_path}; + if (defined $data_path) { + $attachment->{data} = IO::File->new($data_path, 'r'); + } # Make sure that our pointer is at the beginning of the file, # because usually it will be at the end, having just been fully # written to. diff --git a/Bugzilla/Migrate/Flyspray.pm b/Bugzilla/Migrate/Flyspray.pm index cfc605832..701a71a94 100644 --- a/Bugzilla/Migrate/Flyspray.pm +++ b/Bugzilla/Migrate/Flyspray.pm @@ -386,7 +386,7 @@ sub _read_bugs { }; if ($self->translate_value('resolution', $history->{resolution_name} // "") eq "DUPLICATE") { if ($closure_comment =~ m/FS#(\d+)/) { - $bug->{dup_id} = int($1); + $self->{dupes}->{$row->{task_id}} = int($1); } } } elsif ($history->{event_type} == 3) { @@ -417,18 +417,24 @@ sub _read_bugs { while (my $attachment = $attachments_sth->fetchrow_hashref()) { my $path = $attpath.'/'.$attachment->{file_name}; next unless -f $path; - push @{$bug->{attachments}}, { + next unless -s $path; + my $attachment_item = { submitter => $self->_get_username($attachment->{added_by}), creation_ts => $attachment->{date_added}, description => $attachment->{file_desc} || $attachment->{orig_name}, filename => $attachment->{orig_name}, - mimetype => $attachment->{file_type} || mimetype($path), + #mimetype => $attachment->{file_type}, ispatch => $attachment->{file_type} =~ m/^text\/x-diff/ ? 1 : 0, data_path => $path, }; + #$attachment_item->{mimetype} = mimetype($path) if $attachment_item->{mimetype} eq "" or $attachment_item->{mimetype} !~ m/.+\/.+/; + $attachment_item->{mimetype} = mimetype($path); # TODO: set extra_data and type of comment when attachment is part of a comment. # problem: how to get attachment id? not yet in db # change _insert_attachments/_insert_comments? + push @{$bug->{attachments}}, $attachment_item; + #$self->debug($bug); + #die if $attachment->{date_added} == 1110715864; } push @result, $bug; @@ -488,6 +494,14 @@ sub translate_bug { return wantarray ? ($bug, $other_fields) : $bug; } +sub after_insert { + my ($self) = @_; + + for my $dupe (keys %{$self->{dupes}}) { + $self->{dbh}->do("INSERT INTO duplicates (dupe_of, dupe) VALUES (?, ?)", undef, $self->{dupes}->{$dupe}, $$dupe); + } +} + # Timestamps from flyspray are unix timestamps which Date::Parse # can't parse so the original parse_date() sub will just die |