[Rt-commit] rt branch 5.0/dump-initialdata-include-configurations created. rt-5.0.1-428-gb487173a6c
BPS Git Server
git at git.bestpractical.com
Wed Sep 8 14:37:08 UTC 2021
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "rt".
The branch, 5.0/dump-initialdata-include-configurations has been created
at b487173a6c15e0b04e6bc9ac2be61d00b096cec9 (commit)
- Log -----------------------------------------------------------------
commit b487173a6c15e0b04e6bc9ac2be61d00b096cec9
Author: craig kaiser <craig at bestpractical.com>
Date: Wed Sep 8 10:04:02 2021 -0400
Add tests for Configurations export/import
diff --git a/t/api/initialdata-roundtrip.t b/t/api/initialdata-roundtrip.t
index a5b2b68329..8045270959 100644
--- a/t/api/initialdata-roundtrip.t
+++ b/t/api/initialdata-roundtrip.t
@@ -1051,6 +1051,35 @@ my @tests = (
);
},
},
+ {
+ name => 'Configurations',
+ create => sub {
+ my $configuration = RT::Configuration->new( RT->SystemUser );
+ my ($ok, $msg) = $configuration->Create(
+ Name => 'PriorityAsString',
+ Content => "{ 'Default' => { 'High' => 100, 'Low' => 0, 'Medium' => 50 } }",
+ ContentType => 'perl',
+ );
+ ok($ok, $msg);
+
+ ($ok, $msg) = $configuration->Create(
+ Name => 'EnablePriorityAsString',
+ Content => "1",
+ );
+ ok($ok, $msg);
+ },
+ present => sub {
+ my $configuration = RT::Configuration->new( RT->SystemUser );
+ $configuration->Load( 'PriorityAsString' );
+ ok($configuration->Id, 'Loaded PriorityAsString configuration');
+ is($configuration->Content, "{ 'Default' => { 'High' => 100, 'Low' => 0, 'Medium' => 50 } }", 'PriorityAsString content is correct');
+ is($configuration->ContentType, 'perl', 'ContentType is perl');
+
+ $configuration->Load( 'EnablePriorityAsString' );
+ ok($configuration->Id, 'Loaded EnablePriorityAsString configuration');
+ is($configuration->Content, "1", 'EnablePriorityAsString content is correct');
+ },
+ },
);
my $id = 0;
commit e1dd347335bcddb6cee4e6228c8504a86558472c
Author: craig kaiser <craig at bestpractical.com>
Date: Tue Sep 7 13:20:04 2021 -0400
Support import/export of @Configuration for JSON serializer
diff --git a/lib/RT/Handle.pm b/lib/RT/Handle.pm
index 5be8caa452..34e0ecae96 100644
--- a/lib/RT/Handle.pm
+++ b/lib/RT/Handle.pm
@@ -855,10 +855,10 @@ sub InsertData {
# Slurp in stuff to insert from the datafile. Possible things to go in here:-
our (@Groups, @Users, @Members, @ACL, @Queues, @Classes, @ScripActions, @ScripConditions,
- @Templates, @CustomFields, @CustomRoles, @Scrips, @Attributes, @Initial, @Final,
+ @Templates, @CustomFields, @CustomRoles, @Scrips, @Attributes, @Configurations, @Initial, @Final,
@Catalogs, @Assets, @Articles, @OCFVs, @Topics, @ObjectTopics);
local (@Groups, @Users, @Members, @ACL, @Queues, @Classes, @ScripActions, @ScripConditions,
- @Templates, @CustomFields, @CustomRoles, @Scrips, @Attributes, @Initial, @Final,
+ @Templates, @CustomFields, @CustomRoles, @Scrips, @Attributes, @Configurations, @Initial, @Final,
@Catalogs, @Assets, @Articles, @OCFVs, @Topics, @ObjectTopics);
local $@;
@@ -906,6 +906,7 @@ sub InsertData {
CustomRoles => \@CustomRoles,
Scrips => \@Scrips,
Attributes => \@Attributes,
+ Configurations => \@Configurations,
Initial => \@Initial,
Final => \@Final,
Catalogs => \@Catalogs,
@@ -1853,6 +1854,29 @@ sub InsertData {
}
$RT::Logger->debug("done.");
}
+
+ if ( @Configurations ) {
+ $RT::Logger->debug("Creating configurations...");
+ my $sys = RT::System->new( RT->SystemUser );
+ my $configuration_obj = RT::Configuration->new( RT->SystemUser );
+
+ foreach my $item ( @Configurations ) {
+ if ( $item->{_Updated} || $item->{_Deleted} ) {
+ $self->_UpdateOrDeleteObject( 'RT::Configuration', $item );
+ next;
+ }
+
+ my ( $return, $msg ) = $configuration_obj->Create ( %$item );
+ unless ( $return ) {
+ $RT::Logger->error( $msg );
+ }
+ else {
+ $RT::Logger->debug( $return ."." );
+ }
+ }
+ $RT::Logger->debug("done.");
+ }
+
if ( @Final ) {
$RT::Logger->debug("Running final actions...");
for ( @Final ) {
@@ -2401,7 +2425,7 @@ sub _UpdateObject {
my $original = delete $values->{_Original};
- for my $type ( qw/Attributes CustomFields Topics/ ) {
+ for my $type ( qw/Attributes CustomFields Topics Configurations/ ) {
if ( my $items = delete $values->{$type} ) {
if ( $type eq 'Attributes' ) {
for my $item ( @$items ) {
@@ -2502,7 +2526,6 @@ sub _UpdateObject {
}
for my $field ( sort { $a eq 'ApplyTo' || $b eq 'ApplyTo' ? 1 : 0 } keys %$values ) {
-
if ( $class eq 'RT::Attribute' ) {
if ( $field eq 'Content' ) {
$self->_CanonilizeAttributeContent( $values );
@@ -2510,6 +2533,9 @@ sub _UpdateObject {
}
my $value = $values->{$field};
+ if ( $class eq 'RT::Configuration' ) {
+ $value = RT::Configuration->_DeserializeContent( $value );
+ }
if ( $class eq 'RT::CustomField' ) {
if ( $field eq 'ApplyTo' ) {
@@ -2631,7 +2657,7 @@ sub _UpdateObject {
if ( $object->can( $set_method ) || $object->_Accessible( $field, 'write' ) ) {
my ( $ret, $msg );
if ( $object->can( $set_method ) ) {
- ( $ret, $msg ) = $object->$set_method( $values->{$field} );
+ ( $ret, $msg ) = $object->$set_method( $value );
}
elsif ( $object->_Accessible( $field, 'write' ) ) {
( $ret, $msg ) = $object->_Set( Field => $field, Value => $value );
@@ -2752,6 +2778,9 @@ sub _LoadObject {
elsif ( $class eq 'RT::Scrip' ) {
$object->LoadByCols( Description => $values->{_Original}{Description} );
}
+ elsif ( $class eq 'RT::Configuration' ) {
+ $object->Load( $values->{_Original}{Name} );
+ }
else {
if ( $class eq 'RT::Group' ) {
$object->LoadByCols( Domain => $values->{Domain}, Name => $values->{_Original}{Name} );
diff --git a/lib/RT/Migrate/Serializer.pm b/lib/RT/Migrate/Serializer.pm
index e967fdf5e9..7ff0c8cf51 100644
--- a/lib/RT/Migrate/Serializer.pm
+++ b/lib/RT/Migrate/Serializer.pm
@@ -191,6 +191,9 @@ sub PushAll {
# Attributes
$self->PushCollections(qw(Attributes));
+
+ # Configurations
+ $self->PushCollections(qw(Configurations));
}
sub PushCollections {
@@ -201,6 +204,7 @@ sub PushCollections {
$class->require or next;
my $collection = $class->new( RT->SystemUser );
+
$collection->FindAllRows if $self->{FollowDisabled};
$collection->CleanSlate; # some collections (like groups and users) join in _Init
$collection->UnLimit;
@@ -281,6 +285,10 @@ sub PushBasics {
$attributes->LimitToObject( $RT::System );
$self->PushObj( $attributes );
+ my $configurations = RT::Configurations->new( RT->SystemUser );
+ $configurations->UnLimit();
+ $self->PushObj( $configurations );
+
# Global ACLs
if ($self->{FollowACL}) {
my $acls = RT::ACL->new( RT->SystemUser );
diff --git a/lib/RT/Migrate/Serializer/JSON.pm b/lib/RT/Migrate/Serializer/JSON.pm
index 6dde64ce3c..8edb846ae5 100644
--- a/lib/RT/Migrate/Serializer/JSON.pm
+++ b/lib/RT/Migrate/Serializer/JSON.pm
@@ -571,6 +571,10 @@ sub CanonicalizeAttributes {
}
}
+sub CanonicalizeConfigurations {
+ my $self = shift;
+}
+
sub CanonicalizeObjects {
my $self = shift;
@@ -711,6 +715,7 @@ sub WriteFile {
$self->CanonicalizeCustomFields;
$self->CanonicalizeArticles;
$self->CanonicalizeAttributes;
+ $self->CanonicalizeConfigurations;
my $all_records = $self->{Records};
my $sync = $self->{Sync};
diff --git a/sbin/rt-dump-initialdata.in b/sbin/rt-dump-initialdata.in
index 1ecfa8449e..35c15e9de1 100644
--- a/sbin/rt-dump-initialdata.in
+++ b/sbin/rt-dump-initialdata.in
@@ -148,7 +148,7 @@ if (-t STDOUT and not $OPT{verbose} and not $OPT{quiet}) {
bars => [
qw/Queue User Group GroupMember Attribute CustomField CustomFieldValue
ObjectCustomField ObjectCustomFieldValue Catalog Asset ACE CustomRole
- Class Article ScripAction ScripCondition Template Scrip/
+ Class Article ScripAction ScripCondition Template Scrip Configuration/
],
max => { estimate() },
);
@@ -193,7 +193,7 @@ sub estimate {
my @types = map { "RT::$_" } qw/
Queue User Group GroupMember Attribute CustomField CustomFieldValue
ObjectCustomField ObjectCustomFieldValue Catalog Asset ACE CustomRole
- Class Article ScripAction ScripCondition Template Scrip/;
+ Class Article ScripAction ScripCondition Template Scrip Configuration/;
for my $class (@types) {
print "Estimating $class count...";
-----------------------------------------------------------------------
hooks/post-receive
--
rt
More information about the rt-commit
mailing list