[Rt-commit] rt branch, 4.4/default-class, created. rt-4.2.11-164-gf0a9807

? sunnavy sunnavy at bestpractical.com
Sun Aug 16 11:16:24 EDT 2015


The branch, 4.4/default-class has been created
        at  f0a9807a30fac757fdb4e460e55ffd4a5b4672a0 (commit)

- Log -----------------------------------------------------------------
commit f0a9807a30fac757fdb4e460e55ffd4a5b4672a0
Author: sunnavy <sunnavy at bestpractical.com>
Date:   Sun Aug 16 22:53:45 2015 +0800

    create 'General' class by default

diff --git a/etc/initialdata b/etc/initialdata
index 21c8888..d3ebb01 100644
--- a/etc/initialdata
+++ b/etc/initialdata
@@ -912,3 +912,11 @@ Hour:         { $SubscriptionObj->SubValue('Hour') }
         },
     },
 );
+
+ at Classes = (
+    {
+        Name              => 'General',
+        Description       => 'The default class',
+        HotList           => 1,
+    },
+);
diff --git a/etc/upgrade/4.3.9/content b/etc/upgrade/4.3.9/content
new file mode 100644
index 0000000..fe79c7f
--- /dev/null
+++ b/etc/upgrade/4.3.9/content
@@ -0,0 +1,20 @@
+use strict;
+use warnings;
+
+our @Initial = (
+    sub {
+        my $class = RT::Class->new( RT->SystemUser );
+        $class->Load( 'General' );
+        return if $class->id;
+        my ( $ret, $msg ) = $class->Create( Name => 'General', Description => 'The default class', HotList => 1 );
+        if ( $ret ) {
+            my ($ret, $msg) = $class->AddToObject(RT::Queue->new(RT->SystemUser));
+            if ( !$ret ) {
+                RT->Logger->error("Failed to apply class 'General' globally: $msg");
+            }
+        }
+        else {
+            RT->Logger->error("Failed to create class 'General': $msg");
+        }
+    },
+);
diff --git a/lib/RT/Handle.pm b/lib/RT/Handle.pm
index e11a2a0..f5a5d50 100644
--- a/lib/RT/Handle.pm
+++ b/lib/RT/Handle.pm
@@ -828,9 +828,9 @@ sub InsertData {
     );
 
     # Slurp in stuff to insert from the datafile. Possible things to go in here:-
-    our (@Groups, @Users, @Members, @ACL, @Queues, @ScripActions, @ScripConditions,
+    our (@Groups, @Users, @Members, @ACL, @Queues, @Classes, @ScripActions, @ScripConditions,
            @Templates, @CustomFields, @Scrips, @Attributes, @Initial, @Final);
-    local (@Groups, @Users, @Members, @ACL, @Queues, @ScripActions, @ScripConditions,
+    local (@Groups, @Users, @Members, @ACL, @Queues, @Classes, @ScripActions, @ScripConditions,
            @Templates, @CustomFields, @Scrips, @Attributes, @Initial, @Final);
 
     local $@;
@@ -997,6 +997,45 @@ sub InsertData {
         }
         $RT::Logger->debug("done.");
     }
+    if ( @Classes ) {
+        $RT::Logger->debug("Creating classes...");
+        for my $item (@Classes) {
+            my $attributes = delete $item->{ Attributes };
+            # Back-compat for the old "Queue" argument
+            if ( exists $item->{'Queue'} ) {
+                $item->{'ApplyTo'} = delete $item->{'Queue'};
+            }
+
+            my $apply_to = delete $item->{'ApplyTo'};
+            my $new_entry = RT::Class->new(RT->SystemUser);
+            my ( $return, $msg ) = $new_entry->Create(%$item);
+            unless ( $return ) {
+                $RT::Logger->error( $msg );
+            } else {
+                $RT::Logger->debug( $return ."." );
+                if ( !$apply_to ) {
+                    ( $return, $msg) = $new_entry->AddToObject( RT::Queue->new(RT->SystemUser) );
+                    $RT::Logger->error( $msg ) unless $return;
+                } else {
+                    $apply_to = [ $apply_to ] unless ref $apply_to;
+                    for my $name ( @{ $apply_to } ) {
+                        my $queue = RT::Queue->new( RT->SystemUser );
+                        $queue->Load( $name );
+                        if ( $queue->id ) {
+                            ( $return, $msg) = $new_entry->AddToObject( $queue );
+                            $RT::Logger->error( $msg ) unless $return;
+                        }
+                        else {
+                            $RT::Logger->error( "Could not find RT::Queue $name to apply " . $new_entry->Name . " to" );
+                        }
+                    }
+                }
+                $_->{Object} = $new_entry for @{$attributes || []};
+                push @Attributes, @{$attributes || []};
+            }
+        }
+        $RT::Logger->debug("done.");
+    }
     if ( @CustomFields ) {
         $RT::Logger->debug("Creating custom fields...");
         for my $item ( @CustomFields ) {

-----------------------------------------------------------------------


More information about the rt-commit mailing list