From 0468c97dd1d78f94ecb1537e77bc96e2f5acbbd4 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Wed, 27 Dec 2017 17:30:03 +0100 Subject: WIP: misc fixes Signed-off-by: Florian Pritz --- Bugzilla/Migrate.pm | 4 ---- Bugzilla/Migrate/Flyspray.pm | 20 +++++++++++++++++--- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/Bugzilla/Migrate.pm b/Bugzilla/Migrate.pm index 973928397..da2d1a750 100644 --- a/Bugzilla/Migrate.pm +++ b/Bugzilla/Migrate.pm @@ -701,7 +701,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); @@ -762,9 +761,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); 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 -- cgit v1.2.3-24-g4f1b