upgrade@rt-upgrade-2:~/rt2-to-rt3-1.23$ sudo ./dumpfile-to-rt-3.0 …/dbdump
Importing users
uCreating user Unnamed user 45
.[Thu Jul 27 12:15:42 2006] [error]: Could not create a new user
(/usr/local/rt3/lib/RT/User_Overlay.pm:217)
Failed to create user for$VAR1 = {
‘CryptedPassword’ => undef,
‘Name’ => ‘Unnamed user 45’
};
uCreating user Unnamed user 40
.[Thu Jul 27 12:15:42 2006] [crit]: RT::User::crit Unimplemented in
RT::User. (/usr/local/rt3/lib/RT/User_Overlay.pm line 206)
(/usr/local/rt3/lib/RT.pm:228)
Hi Andrew,
I the same problem upgrading from 2.0.15 to 3.2.3. As far as I can tell
changes in some of the modules RT uses have broken rt-2.0-to-dumpfile.
I spent quite some time fixing it up, and I’ve got a dirty patch I can
share with you (see below). I’ve been intending to clean it up (after
reading the RT book I think I could use ReadableAttributes() and
WritableAttributes()), but I haven’t had the time.
This patch made rt-2.0-to-dumpfile work for me; if you have a
difficulties get back to me.
diff -aur rt2-to-rt3-1.23.orig/rt-2.0-to-dumpfile rt2-to-rt3-1.23/rt-2.0-to-dumpfile
— rt2-to-rt3-1.23.orig/rt-2.0-to-dumpfile 2004-02-13 16:03:35.000000000 +0000
+++ rt2-to-rt3-1.23/rt-2.0-to-dumpfile 2006-03-28 15:05:49.096465200 +0100
@@ -79,6 +79,11 @@
my $blank_Group = RT::Group->new($RT::SystemUser);
$blank_Group->_Accessible( ‘Foo’, ‘read’ );
my $acc = $blank_Group->{_AccessibleCache};
-
my %Cols = (
-
Name => 'read/write',
-
Description => 'read/write',
-
Pseudo => 'read'
-
);
my $Groups = RT::Groups->new($RT::SystemUser);
$Groups->LimitToReal();
@@ -87,7 +92,7 @@
my $group;
@@ -106,12 +111,24 @@
my $blank_KeywordSelect = RT::KeywordSelect->new($RT::SystemUser);
$blank_KeywordSelect->_Accessible( ‘Foo’, ‘read’ );
my $global_ksacc = $blank_KeywordSelect->{_AccessibleCache};
- my %KeywordCols = (
-
Name => 'read/write',
-
Keyword => 'read/write', # link to Keywords. Can be specified by id
-
Single => 'read/write', # bool (described below)
-
Depth => 'read/write', #- If non-zero, limits the descendents to this number of levels deep.
-
ObjectType => 'read/write', # currently only C<Ticket>
-
ObjectField => 'read/write', #optional, currently only C<Queue>
-
ObjectValue => 'read/write', #constrains KeywordSelect function to when B<ObjectType>.I<ObjectField> equals I<ObjectValue>
-
Disabled => 'read/write'
- );
my $global_ks = RT::KeywordSelects->new($RT::SystemUser);
$global_ks->LimitToQueue(0);
$global_ks->{‘find_disabled_rows’} = 1;
foreach my $keysel ( @{ $global_ks->ItemsArrayRef } ) {
-
foreach my $param ( sort keys %$global_ksacc,
-
keys %KeywordCols, 'id' ) {
$ds->{Global}->{'CustomField'}->{ $keysel->id }->{$param} = $keysel->_Value($param)
if ( $keysel->_Value($param) );
}
@@ -151,11 +168,24 @@
my $blank_Link = RT::Link->new($RT::SystemUser);
$blank_Link->_Accessible( ‘Foo’, ‘read’ );
$acc = $blank_Link->{_AccessibleCache};
@@ -201,6 +231,32 @@
## but then we’d not be able to say /why/ we’re not exporting the
## ticket…
-
my $Cols = {
-
EffectiveId => { 'read' => 1, 'write' => 1, 'public' => 1 },
-
Queue => { 'read' => 1, 'write' => 1 },
-
Requestors => { 'read' => 1, 'write' => 1 },
-
Owner => { 'read' => 1, 'write' => 1 },
-
Subject => { 'read' => 1, 'write' => 1 },
-
InitialPriority => { 'read' => 1, 'write' => 1 },
-
FinalPriority => { 'read' => 1, 'write' => 1 },
-
Priority => { 'read' => 1, 'write' => 1 },
-
Status => { 'read' => 1, 'write' => 1 },
-
TimeWorked => { 'read' => 1, 'write' => 1 },
-
TimeLeft => { 'read' => 1, 'write' => 1 },
-
Created => { 'read' => 1, 'auto' => 1 },
-
Creator => { 'read' => 1, 'auto' => 1 },
-
Told => { 'read' => 1, 'write' => 1 },
-
Resolved => {'read' => 1},
-
Starts => { 'read' => 1, 'write' => 1 },
-
Started => { 'read' => 1, 'write' => 1 },
-
Due => { 'read' => 1, 'write' => 1 },
-
Creator => { 'read' => 1, 'auto' => 1 },
-
Created => { 'read' => 1, 'auto' => 1 },
-
LastUpdatedBy => { 'read' => 1, 'auto' => 1 },
-
LastUpdated => { 'read' => 1, 'auto' => 1 }
-
};
while ( my $t = $tix->Next ) {
my $tick_ds;
if (!$export_dead && ($t->Status eq ‘dead’)) {
@@ -216,7 +272,8 @@
}
-
foreach my $param ( sort keys %{ $t->{_AccessibleCache} },
-
keys %$Cols, 'id' ) {
$tick_ds->{$param} = $t->_Value($param)
if ( $t->_Value($param) );
}
@@ -244,14 +301,40 @@
}
}
-
my $AttachmentCols =
-
{
-
TransactionId => { 'read'=>1, 'public'=>1, },
-
MessageId => { 'read'=>1, },
-
Parent => { 'read'=>1, },
-
ContentType => { 'read'=>1, },
-
Subject => { 'read'=>1, },
-
Content => { 'read'=>1, },
-
ContentEncoding => { 'read'=>1, },
-
Headers => { 'read'=>1, },
-
Filename => { 'read'=>1, },
-
Creator => { 'read'=>1, 'auto'=>1, },
-
Created => { 'read'=>1, 'auto'=>1, },
-
};
my $blank_Transaction = RT::Transaction->new($RT::SystemUser);
$blank_Transaction->_Accessible( 'Foo', 'read' );
my $tracc = $blank_Transaction->{_AccessibleCache};
-
my %TransactionCols = (
-
TimeTaken => 'read',
-
Ticket => 'read/public',
-
Type=> 'read',
-
Field => 'read',
-
Data => 'read',
-
NewValue => 'read',
-
OldValue => 'read',
-
Creator => 'read/auto',
-
Created => 'read/auto',
-
);
my $tr = $t->Transactions;
while ( my $trans = $tr->Next ) {
my $trans_ds;
print STDERR ".";
-
foreach my $tr_param ( sort keys %$tracc, keys %TransactionCols,
-
'id' ) {
$trans_ds->{$tr_param} = $trans->_Value($tr_param)
if ( $trans->_Value($tr_param) );
}
@@ -264,7 +347,8 @@
my $att_ds;
print STDERR “.”;
foreach
-
my $att_param ( sort keys %{ $att->{_AccessibleCache} },
-
keys %$AttachmentCols) {
if ($att_param eq 'Content') {
$att_ds->{$att_param} = $att->Content();
@@ -294,6 +378,73 @@
$blank_User->_Accessible( ‘Foo’, ‘read’ );
my $acc = $blank_User->{_AccessibleCache};
- my %Cols = (
-
# {{{ Core RT info
-
Name => 'public/read/write/admin',
-
Password => 'write',
-
Comments => 'read/write/admin',
-
Signature => 'read/write',
-
EmailAddress => 'public/read/write',
-
PagerEmailAddress => 'read/write',
-
FreeformContactInfo => 'read/write',
-
Organization => 'public/read/write/admin',
-
Disabled => 'public/read/write/admin', #To modify this attribute, we have helper
-
#methods
-
Privileged => 'read/write/admin', # 0=no 1=user 2=system
-
# }}}
-
# {{{ Names
-
RealName => 'public/read/write',
-
NickName => 'public/read/write',
-
# }}}
-
# {{{ Localization and Internationalization
-
Lang => 'public/read/write',
-
EmailEncoding => 'public/read/write',
-
WebEncoding => 'public/read/write',
-
# }}}
-
# {{{ External ContactInfo Linkage
-
ExternalContactInfoId => 'public/read/write/admin',
-
ContactInfoSystem => 'public/read/write/admin',
-
# }}}
-
# {{{ User Authentication identifier
-
ExternalAuthId => 'public/read/write/admin',
-
#Authentication system used for user
-
AuthSystem => 'public/read/write/admin',
-
Gecos => 'public/read/write/admin', #Gecos is the name of the fields in a
-
# unix passwd file. In this case, it refers to "Unix Username"
-
# }}}
-
# {{{ Telephone numbers
-
HomePhone => 'read/write',
-
WorkPhone => 'read/write',
-
MobilePhone => 'read/write',
-
PagerPhone => 'read/write',
-
# }}}
-
# {{{ Paper Address
-
Address1 => 'read/write',
-
Address2 => 'read/write',
-
City => 'read/write',
-
State => 'read/write',
-
Zip => 'read/write',
-
Country => 'read/write',
-
# }}}
-
# {{{ Core DBIx::Record Attributes
-
Creator => 'read/auto',
-
Created => 'read/auto',
-
LastUpdatedBy => 'read/auto',
-
LastUpdated => 'read/auto'
-
# }}}
- );
my $users = RT::Users->new($RT::SystemUser);
if ($since) {
$users->Limit( FIELD => ‘LastUpdated’, OPERATOR => “>=”, VALUE => $since );
@@ -306,7 +457,7 @@
my @users;
foreach my $user ( @{ $users->ItemsArrayRef } ) {
my $user_ds;
@@ -322,13 +473,28 @@
$blank_Queue->_Accessible( ‘Foo’, ‘read’ );
my $acc = $blank_Queue->{_AccessibleCache};
-
my %Cols = (
-
Name => 'read/write',
-
CorrespondAddress => 'read/write',
-
Description => 'read/write',
-
CommentAddress => 'read/write',
-
InitialPriority => 'read/write',
-
FinalPriority => 'read/write',
-
DefaultDueIn => 'read/write',
-
Creator => 'read/auto',
-
Created => 'read/auto',
-
LastUpdatedBy => 'read/auto',
-
LastUpdated => 'read/auto',
-
Disabled => 'read/write',
-
);
my $Queues = RT::Queues->new($RT::SystemUser);
$Queues->UnLimit();
$Queues->{‘find_disabled_rows’} = 1;
foreach my $Queue ( @{ $Queues->ItemsArrayRef } ) {
my $queue_ds;
John Tobin
“Linux is used for 100 percent of the work involved in the development
of new processors at Intel.”
– Doug Fisher, general manager of Intel’s Core Software Division
http://os.newsforge.com/os/05/07/21/0730239.shtml?tid=152&tid=2&tid=18