[Collab-qa-commits] r968 - in udd/src: . udd
neronus-guest at alioth.debian.org
neronus-guest at alioth.debian.org
Tue Jul 29 13:06:31 UTC 2008
Author: neronus-guest
Date: 2008-07-29 13:06:30 +0000 (Tue, 29 Jul 2008)
New Revision: 968
Modified:
udd/src/setup-db.sql
udd/src/udd/bugs_gatherer.pl
Log:
Added code to import bugs.d.o usertags
Renamed bug_user_tags.bug_user to email
Modified: udd/src/setup-db.sql
===================================================================
--- udd/src/setup-db.sql 2008-07-28 16:54:05 UTC (rev 967)
+++ udd/src/setup-db.sql 2008-07-29 13:06:30 UTC (rev 968)
@@ -37,7 +37,7 @@
PRIMARY KEY(bug, merged_with));
CREATE TABLE bug_user_tags
- (bug_user text, tag text, bug_nr text);
+ (email text, tag text, id int);
CREATE TABLE bug_found_in
(id int, version text,
Modified: udd/src/udd/bugs_gatherer.pl
===================================================================
--- udd/src/udd/bugs_gatherer.pl 2008-07-28 16:54:05 UTC (rev 967)
+++ udd/src/udd/bugs_gatherer.pl 2008-07-29 13:06:30 UTC (rev 968)
@@ -1,5 +1,5 @@
#!/usr/bin/perl
-# Last-Modified: <Sun Jul 27 13:09:48 2008>
+# Last-Modified: <Mon Jul 28 23:38:37 2008>
use strict;
use warnings;
@@ -15,6 +15,8 @@
use Debbugs::Bugs qw{get_bugs};
use Debbugs::Status qw{read_bug get_bug_status bug_presence};
use Debbugs::Packages qw{binarytosource getpkgsrc};
+use Debbugs::Config qw{:globals};
+use Debbugs::User qw{read_usertags};
use POSIX qw{strftime};
use Time::Local qw{timelocal};
@@ -28,6 +30,22 @@
return undef;
}
+# Return the list of usernames
+sub get_bugs_users {
+ my $topdir = "$gSpoolDir/user";
+ my @ret = ();
+ # see Debbugs::User::filefromemail for why 0...6
+ for(my $i = 0; $i < 7; $i++) {
+ my $dir = "$topdir/$i";
+ opendir DIR, $dir or die "Can't open dir $dir: $!";
+ # Replace all occurences of %dd with the corresponding
+ # character represented by dd, where dd is a hexadecimal
+ # number
+ push @ret, map { s/%(..)/chr(hex($1))/ge; $_ } readdir DIR;
+ }
+ return @ret;
+}
+
sub is_bug_in_db {
my ($dbh, $bug_nr) = @_;
return $dbh->execute("SELECT * FROM bugs WHERE id = $bug_nr")->fetchrow_array();
@@ -49,7 +67,22 @@
# We want to commit the transaction as a hole at the end
$dbh->{AutoCommit} = 0;
- #delete the bug, if it exists
+ # Free usertags table
+ $dbh->prepare("DELETE FROM bug_user_tags")->execute() or die
+ "Couldn't empty bug_user_tags: $!";
+ # read user tags
+ my @users = get_bugs_users();
+ foreach my $user (@users) {
+ my %tags = ();
+ read_usertags(\%tags, $user);
+ $user = $dbh->quote($user);
+ foreach my $tag (keys %tags) {
+ my $qtag = $dbh->quote($tag);
+ map { $dbh->prepare("INSERT INTO bug_user_tags VALUES ($user, $qtag, $_)")->execute() or die $! } @{$tags{$tag}};
+ }
+ }
+
+ #delete the bug from the other tables, if it exists
map {
$dbh->prepare("DELETE FROM $_ WHERE EXISTS (SELECT * FROM bugs WHERE id = bugs.id AND bugs.is_archived = " . ($src_config{archived} ? 'TRUE' : 'FALSE') . ")")->execute();
} qw{bug_found_in bug_fixed_in bug_merged_with};
More information about the Collab-qa-commits
mailing list