summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Bugzilla/Migrate.pm8
-rw-r--r--Bugzilla/Migrate/Flyspray.pm20
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