diff options
Diffstat (limited to 'rt/tools/insertdata')
-rwxr-xr-x | rt/tools/insertdata | 618 |
1 files changed, 0 insertions, 618 deletions
diff --git a/rt/tools/insertdata b/rt/tools/insertdata deleted file mode 100755 index b3e76e623..000000000 --- a/rt/tools/insertdata +++ /dev/null @@ -1,618 +0,0 @@ -#!/usr/bin/perl -w -# -# $Header: /home/cvs/cvsroot/freeside/rt/tools/Attic/insertdata,v 1.1 2002-08-12 06:17:08 ivan Exp $ -# RT is (c) 1996-2002 Jesse Vincent (jesse@bestpractical.com); - -package RT; -use strict; -use vars qw($VERSION $Handle $Nobody $SystemUser $item); - -use lib "!!RT_LIB_PATH!!"; -use lib "!!RT_ETC_PATH!!"; - -#This drags in RT's config.pm -use config; -use Carp; - -use RT::Handle; -use RT::User; -use RT::CurrentUser; - -# -my $LastVersion = shift || undef; -my $LastMinorVersion = undef; - -#connect to the db -$RT::Handle = new RT::Handle($RT::DatabaseType); -$RT::Handle->Connect(); - -#Put together a current user object so we can create a User object -my $CurrentUser = new RT::CurrentUser(); - -if ($LastVersion) { - if ( $LastVersion =~ /^2.0.(\d+)$/ ) { - $LastMinorVersion = $1; - print "Looking for new objects to add to the database" - . " since $LastVersion\n\n"; - } - else { - print "This tool does not support upgrades from development releases " - . "or non 2.0.x versions"; - } -} -else { # this is a virgin install - print "Checking for existing system user..."; - my $test_user = RT::User->new($CurrentUser); - $test_user->Load('RT_System'); - if ( $test_user->id ) { - print "Found!\n\nYou appear to have already run insertdata.\n" - . "Exiting, so as not to clobber your existing data. To ERASE your\n" - . "RT database and start over, type 'make dropdb; make install' in\n" - . "the RT installation directory. If you just meant to upgrade the\n" - . "content of your database, rerun this program as: \n", - " $0 <version>\n" - . "where <version> is the last RELEASED version of RT you installed\n" - . "for example, if you're upgrading from 2.0.4, you'd type:\n" - . " $0 2.0.4\n"; - exit(-1); - - } - else { - print "not found. This appears to be a new installation"; - } - - print "Creating system user..."; - my $RT_System = new RT::User($CurrentUser); - - my ( $val, $msg ) = $RT_System->_BootstrapCreate( - Name => 'RT_System', - RealName => 'The RT System itself', - Comments => -'Do not delete or modify this user. It is integral to RT\'s internal database structures', - Privileged => '2', - Creator => '1' - ); - - if ($val) { - print "done.\n"; - } - else { - print "$msg\n"; - exit(1); - } - -} - -#now that we bootstrapped that little bit, we can use the standard RT cli -# helpers to do what we need - -use RT::Interface::CLI qw(CleanEnv LoadConfig DBConnect - GetCurrentUser GetMessageContent); - -#Clean out all the nasties from the environment -CleanEnv(); - -#Load etc/config.pm and drop privs -LoadConfig(); - -#Connect to the database and get RT::SystemUser and RT::Nobody loaded -DBConnect(); - -$CurrentUser->LoadByName('RT_System'); - -# {{{ Users - -my @users; - -unless ($LastVersion) { - @users = ( - { - Name => 'Nobody', - RealName => 'Nobody in particular', - Comments => 'Do not delete or modify this user. It is integral ' - . 'to RT\'s internal data structures', - Privileged => '2', - }, - - { - Name => 'root', - Gecos => 'root', - RealName => 'Enoch Root', - Password => 'password', - EmailAddress => "root\@localhost", - Comments => 'SuperUser', - Privileged => '1', - } - ); -} - -# }}} - -# {{{ Groups - -my @groups; -unless ($LastVersion) { - @groups = ( - { - Name => 'Everyone', - Description => 'Pseudogroup for internal use', - Pseudo => '1', - }, - { - Name => 'Owner', - Description => 'Pseudogroup for internal use', - Pseudo => '1', - }, - { - Name => 'Requestor', - Description => 'Pseudogroup for internal use', - Pseudo => '1', - }, - { - Name => 'Cc', - Description => 'Pseudogroup for internal use', - Pseudo => '1', - }, - { - Name => 'AdminCc', - Description => 'Pseudogroup for internal use', - Pseudo => '1', - }, - ); -} - -# }}} - -# {{{ ACL -my @acl; - -unless ($LastVersion) { - @acl = ( #TODO: make this actually take the serial # granted to root. - { - PrincipalId => '1', - PrincipalType => 'User', - RightName => 'SuperUser', - RightScope => 'System', - RightAppliesTo => '0' - }, - { - PrincipalId => '2', - PrincipalType => 'User', - RightName => 'SuperUser', - RightScope => 'System', - RightAppliesTo => '0' - }, - - { - PrincipalId => '3', - PrincipalType => 'User', - RightName => 'SuperUser', - RightScope => 'System', - RightAppliesTo => '0' - } - - ); -} - -# }}} - -# {{{ Queues - -my @queues; -unless ($LastVersion) { - @queues = ( - { - Name => 'general', - Description => 'The default queue', - CorrespondAddress => "rt\@localhost", - CommentAddress => "rt-comment\@localhost" - } - ); -} - -# }}} - -# {{{ ScripActions - -my @ScripActions; - -unless ($LastVersion) { - @ScripActions = ( - - { - Name => 'AutoreplyToRequestors', - Description => -'Always sends a message to the requestors independent of message sender', - ExecModule => 'Autoreply', - Argument => 'Requestor' - }, - { - Name => 'NotifyRequestors', - Description => 'Sends a message to the requestors', - ExecModule => 'Notify', - Argument => 'Requestor' - }, - { - Name => 'NotifyOwnerAsComment', - Description => 'Sends mail to the owner', - ExecModule => 'NotifyAsComment', - Argument => 'Owner' - }, - { - Name => 'NotifyOwner', - Description => 'Sends mail to the owner', - ExecModule => 'Notify', - Argument => 'Owner' - }, - { - Name => 'NotifyAdminCcsAsComment', - Description => 'Sends mail to the administrative Ccs as a comment', - ExecModule => 'NotifyAsComment', - Argument => 'AdminCc' - }, - { - Name => 'NotifyAdminCcs', - Description => 'Sends mail to the administrative Ccs', - ExecModule => 'Notify', - Argument => 'AdminCc' - }, - - { - Name => 'NotifyRequestorsAndCcsAsComment', - Description => 'Send mail to requestors and Ccs as a comment', - ExecModule => 'NotifyAsComment', - Argument => 'Requestor,Cc' - }, - - { - Name => 'NotifyRequestorsAndCcs', - Description => 'Send mail to requestors and Ccs', - ExecModule => 'Notify', - Argument => 'Requestor,Cc' - }, - - { - Name => 'NotifyAllWatchersAsComment', - Description => 'Send mail to all watchers', - ExecModule => 'NotifyAsComment', - Argument => 'All' - }, - { - Name => 'NotifyAllWatchers', - Description => 'Send mail to all watchers', - ExecModule => 'Notify', - Argument => 'All' - }, - ); -} - -if ( $LastMinorVersion < 12 ) { - push ( - @ScripActions, - { - Name => 'NotifyOtherRecipientsAsComment', - Description => 'Sends mail to explicitly listed Ccs and Bccs', - ExecModule => 'NotifyAsComment', - Argument => 'OtherRecipients' - }, - { - Name => 'NotifyOtherRecipients', - Description => 'Sends mail to explicitly listed Ccs and Bccs', - ExecModule => 'Notify', - Argument => 'OtherRecipients' - }, - ); -} - -# }}} - -# {{{ ScripConditions - -my @ScripConditions; -unless ($LastVersion) { - @ScripConditions = ( - { - Name => 'OnCreate', - Description => 'When a ticket is created', - ApplicableTransTypes => 'Create', - ExecModule => 'AnyTransaction', - }, - - { - Name => 'OnTransaction', - Description => 'When anything happens', - ApplicableTransTypes => 'Any', - ExecModule => 'AnyTransaction', - }, - { - - Name => 'OnCorrespond', - Description => 'Whenever correspondence comes in', - ApplicableTransTypes => 'Correspond', - ExecModule => 'AnyTransaction', - }, - - { - - Name => 'OnComment', - Description => 'Whenever comments come in', - ApplicableTransTypes => 'Comment', - ExecModule => 'AnyTransaction' - }, - { - - Name => 'OnStatus', - Description => 'Whenever a ticket\'s status changes', - ApplicableTransTypes => 'Status', - ExecModule => 'AnyTransaction', - - }, - { - Name => 'OnResolve', - Description => 'Whenever a ticket is resolved.', - ApplicableTransTypes => 'Status', - ExecModule => 'StatusChange', - Argument => 'resolved' - - }, - - ); -} - -# }}} - -# {{{ Templates -my @templates; - -unless ($LastVersion) { - @templates = ( - { - Queue => '0', - Name => 'Autoreply', - Description => 'Default Autoresponse Template', - Content => 'Subject: AutoReply: {$Ticket->Subject} - - -Greetings, - -This message has been automatically generated in response to the -creation of a trouble ticket regarding: - "{$Ticket->Subject()}", -a summary of which appears below. - -There is no need to reply to this message right now. Your ticket has been -assigned an ID of [{$rtname} #{$Ticket->id()}]. - -Please include the string: - - [{$rtname} #{$Ticket->id}] - -in the subject line of all future correspondence about this issue. To do so, -you may reply to this message. - - Thank you, - {$Ticket->QueueObj->CorrespondAddress()} - -------------------------------------------------------------------------- -{$Transaction->Content()} -' - }, - - { - - # id => 2, - Queue => '0', - Name => 'Transaction', - Description => 'Default transaction template', - Content => ' - - -{$Transaction->CreatedAsString}: Request {$Ticket->id} was acted upon. -Transaction: {$Transaction->Description} - Queue: {$Ticket->QueueObj->Name} - Subject: {$Transaction->Subject || $Ticket->Subject || "(No subject given)"} - Owner: {$Ticket->OwnerObj->Name} - Requestors: {$Ticket->Requestors->EmailsAsString()} - Status: {$Ticket->Status} - Ticket <URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} > -------------------------------------------------------------------------- -{$Transaction->Content()}' - }, - - { - - Queue => '0', - Name => 'AdminCorrespondence', - Description => 'Default admin correspondence template', - Content => ' - - -<URL: {$RT::WebURL}Ticket/Display.html?id={$Ticket->id} > - -{$Transaction->Content()}' - }, - - { - Queue => '0', - Name => 'Correspondence', - Description => 'Default correspondence template', - Content => ' - -{$Transaction->Content()}' - }, - - { - Queue => '0', - Name => 'AdminComment', - Description => 'Default admin comment template', - Content => -'Subject: [Comment] {my $s=($Transaction->Subject||$Ticket->Subject); $s =~ s/\\[Comment\\]//g; $comment =~ s/^Re//i; $s;} - - -{$RT::WebURL}Ticket/Display.html?id={$Ticket->id} -This is a comment. It is not sent to the Requestor(s): - -{$Transaction->Content()} -' - }, - - { - Queue => '0', - Name => 'StatusChange', - Description => 'Ticket status changed', - Content => 'Subject: Status Changed to: {$Transaction->NewValue} - - -{$RT::WebURL}Ticket/Display.html?id={$Ticket->id} - -{$Transaction->Content()} -' - }, - - { - - Queue => '0', - Name => 'Resolved', - Description => 'Ticket Resolved', - Content => 'Subject: Ticket Resolved - -According to our records, your request has been resolved. If you have any -further questions or concerns, please respond to this message. -' - } - ); -} - -# }}} - -# {{{ Scrips; - -my @scrips; -unless ($LastVersion) { - @scrips = ( - { Queue => 0, - ScripCondition => 'OnCreate', - ScripAction => 'AutoreplyToRequestors', - Template => 'Autoreply' - }, - { Queue => 0, - ScripCondition => 'OnCreate', - ScripAction => 'NotifyAdminCcs', - Template => 'Transaction', - }, - { Queue => 0, - ScripCondition => 'OnCorrespond', - ScripAction => 'NotifyAllWatchers', - Template => 'Correspondence', - }, - { Queue => 0, - ScripCondition => 'OnComment', - ScripAction => 'NotifyAdminCcsAsComment', - Template => 'AdminComment', - }, - ) -} -if ( $LastMinorVersion < 12 ) { - push ( - @scrips, - { Queue => 0, - ScripCondition => 'OnComment', - ScripAction => 'NotifyOtherRecipientsAsComment', - Template => 'Correspondence', - }, - { Queue => 0, - ScripCondition => 'OnCorrespond', - ScripAction => 'NotifyOtherRecipients', - Template => 'Correspondence', - }, - ); -} -# }}} - -print "Creating ACL..."; -use RT::ACE; -for $item (@acl) { - my $new_entry = new RT::ACE($CurrentUser); - - #Using an internal function. this should never be used outside of the bootstrap script - my $return = $new_entry->_BootstrapRight(%$item); - print $return. "."; -} -print "done.\n"; - -print "Creating users..."; -use RT::User; -foreach $item (@users) { - my $new_entry = new RT::User($CurrentUser); - my ( $return, $msg ) = $new_entry->Create(%$item); - print "(Error: $msg)" unless ($return); - print $return. "."; -} -print "done.\n"; - -print "Creating groups..."; -use RT::Group; -foreach $item (@groups) { - my $new_entry = new RT::Group($CurrentUser); - my $return = $new_entry->Create(%$item); - print $return. "."; -} -print "done.\n"; - -print "Creating queues..."; -use RT::Queue; -for $item (@queues) { - my $new_entry = new RT::Queue($CurrentUser); - my ( $return, $msg ) = $new_entry->Create(%$item); - print "(Error: $msg)" unless ($return); - print $return. "."; -} - -print "done.\n"; -print "Creating ScripActions..."; - -use RT::ScripAction; -for $item (@ScripActions) { - my $new_entry = new RT::ScripAction($CurrentUser); - my $return = $new_entry->Create(%$item); - print $return. "."; -} - -print "done.\n"; -print "Creating ScripConditions..."; - -use RT::ScripCondition; -for $item (@ScripConditions) { - my $new_entry = new RT::ScripCondition($CurrentUser); - my $return = $new_entry->Create(%$item); - print $return. "."; -} - -print "done.\n"; - -print "Creating templates..."; - -use RT::Template; -for $item (@templates) { - my $new_entry = new RT::Template($CurrentUser); - my $return = $new_entry->Create(%$item); - print $return. "."; -} -print "done.\n"; - -print "Creating Scrips..."; - -use RT::Scrip; -for $item (@scrips) { - my $new_entry = RT::Scrip->new($CurrentUser); - my ($return,$msg) = $new_entry->Create(%$item); - print "(Error: $msg)" unless ($return); - print $return."."; - -} -print "done.\n"; - -$RT::Handle->Disconnect(); - -1; - |