[Rt-commit] rt branch, 4.4/dump-and-merge-initialdata, repushed

? sunnavy sunnavy at bestpractical.com
Mon Aug 20 16:04:39 EDT 2018


The branch 4.4/dump-and-merge-initialdata was deleted and repushed:
       was 095ea6e672d9516c46db38daaf43461b087d83b6
       now 95de5b37167c3aa9c6693611794a77f5c21c18ec

  1: 819a7b31e =   1: 819a7b31e Fix typo to make @Assets really work
  2: 88e298039 =   2: 88e298039 Add support for asset and catalog attributes for initialdata
  3: 8e0dd77be =   3: 8e0dd77be Add support for OCFVs in initialdata
  4: 6dbe32935 =   4: 6dbe32935 Insert @Members later, after queues, assets, custom roles etc have been created
  5: b913d8ec6 =   5: b913d8ec6 Support all the role group domains for @ACL
  6: cd9a04b07 =   6: cd9a04b07 initialdata support for @Articles
  7: 6a5e96997 =   7: 6a5e96997 Defer setting BasedOn for CFs later in the @CustomFields list
  8: 1de0a488e =   8: 1de0a488e Handle ObjectScrip Stage in initialdata
  9: ee902438a =   9: ee902438a Handle passing a hash with Stage as first param to Queue
 10: c21aab9bd =  10: c21aab9bd Fixing up ObjectScrip sort order
 11: 33edad4e6 =  11: 33edad4e6 Support GroupDomain for item in @Members
 12: b9eab0387 =  12: b9eab0387 NoAutoGlobal option for @Scrips
 13: 984db7969 =  13: 984db7969 Support import of queue watcher groups
 14: 05d21ca3a =  14: 05d21ca3a Handle explicit ApplyTo => 0 to make a CF which is global
 15: c92316ec9 =  15: c92316ec9 Handle RightName in initialdata
 16: c84eb72e7 =  16: c84eb72e7 Handle global Class records more consistently in initialdata
 17: a713a7b5a =  17: a713a7b5a Correctly load ACLs granted on user-defined groups
 18: db9ee856c =  18: db9ee856c Avoid creating duplicate SystemInternal and RT::Role-System groups
 19: 41d321072 =  19: 41d321072 Allow passing SortOrder to CustomField->Create
 20: 0ae4036e4 =  20: 0ae4036e4 Avoid undef warnings when checking a new queue for name uniqueness
 21: 5896c8acc =  21: 5896c8acc When serializing an ACE, make sure its user is too
 22: 8308c70e1 =  22: 8308c70e1 Make sure queue-specific templates get serialized
 23: dbb9fd851 =  23: dbb9fd851 Skip tickets ASAP as an optimization
 24: 01e4fdd19 =  24: 01e4fdd19 Migrate Storable-related concerns from Serializer to File
 25: 522fcee95 =  25: 522fcee95 First pass at initialdata.json serializer export format
 26: 66df5d7d8 =  26: 66df5d7d8 Sort JSON keys so its output can be versioned
 27: d6a0f6f8a =  27: d6a0f6f8a Store records by id
 28: 6f7163d21 =  28: 6f7163d21 For now, rather than deleting references, dereference them
 29: 5a009e56e =  29: 5a009e56e Use initialdata's type names rather than RT class names
 30: 56f3d4b97 =  30: 56f3d4b97 Defer canonicalizing away "RT::" from class names
 31: 68a8ac9ca =  31: 68a8ac9ca Canonicalize references by name
 32: 66db10a45 =  32: 66db10a45 Canonicalize OCFs as CF.ApplyTo
 33: f89c2196a =  33: f89c2196a Canonicalize ObjectClass into Class.ApplyTo
 34: ab6de43c9 =  34: ab6de43c9 Factor out _GetRecordByRef
 35: 6024bcc9b =  35: 6024bcc9b Canonicalize ObjectScrips as Scrips.Queue
 36: fe0e99f43 =  36: fe0e99f43 Handle ObjectScrip Stage in serializer importer
 37: e350e59b7 =  37: e350e59b7 Canonicalize ObjectCustomRole as CustomRole.ApplyTo
 38: 8f17953f0 =  38: 8f17953f0 Avoid serializing attributes (for now)
 39: d33b6ad9e =  39: d33b6ad9e Only serialize user-defined groups for initialdata
 40: 7cb1f3459 =  40: 7cb1f3459 Have _GetRecordByRef dereference if needed
 41: c40f76ca1 =  41: c40f76ca1 Try harder to load references
 42: 45243d74a =  42: 45243d74a Canonicalize ACLs the way initialdata needs them
 43: 3db856210 =  43: 3db856210 Disambiguate _GetSerializedByRef from _GetObjectByRef
 44: 30f78bcbf =  44: 30f78bcbf Handle systemuser
 45: 6ebadd606 =  45: 6ebadd606 Creator and LastUpdatedBy are always user ids
 46: 2b8d4b9cc =  46: 2b8d4b9cc Avoid uniqueness violations (for now) by skipping id from initialdata output
 47: 67663b950 =  47: 67663b950 CanonicalizeUsers
 48: 6f166613e =  48: 6f166613e Fix serialized OCFs for queues
 49: 6bb58b4f9 =  49: 6bb58b4f9 Roundtrip CFVs
 50: ab3d46496 =  50: ab3d46496 Roundtrip group members
 51: 7e21d67a7 =  51: 7e21d67a7 Fixing up ObjectScrip sort order
 52: 98b5f0bc1 =  52: 98b5f0bc1 Round-trip unapplied scrips using a NoAutoGlobal key
 53: ce4bb242f =  53: ce4bb242f Export OCFVs as CustomFields key on object for initialdata
 54: a7dbcdf24 =  54: a7dbcdf24 No need to rewrite LargeContent as Content
 55: 2081fc158 =  55: 2081fc158 Remove create/update metadata on initialdata export
 56: a0bbc30b3 =  56: a0bbc30b3 Remove spurious Principal and PrincipalId fields on Groups
 57: 64113d416 =  57: 64113d416 Remove spurious NoAutoGlobal
 58: 80f8a8b00 =  58: 80f8a8b00 ACLs without object type are for RT::System
 59: 727320200 =  59: 727320200 ACL PrincipalType is implicit
 60: cb83c6b79 =  60: cb83c6b79 Instance doesn't make sense for UserDefined or SystemInternal groups
 61: 2e1a00b3c =  61: 2e1a00b3c Avoid serializing some empty keys for CFs
 62: 9c9d6e06b =  62: 9c9d6e06b Avoid serializing Disabled:0 for all objects
 63: 2b0a32ebd =  63: 2b0a32ebd Avoid exporting crucial system objects like RT_System user
 64: 779787d31 =  64: 779787d31 Improve export of group membership
 65: c54abcd5c =  65: c54abcd5c Refactor ShouldExcludeObject for clarity
 66: 751e44ab9 =  66: 751e44ab9 Serialize role members but not role groups
 67: 0798a710c =  67: 0798a710c Support export of queue watcher groups
 68: 3b1efa0e0 =  68: 3b1efa0e0 Handle group, role, and user ACLs
 69: 18efb3178 =  69: 18efb3178 Round-trip articles
 70: e4b810ecc =  70: e4b810ecc Avoid throwing errors on disabled many-to-many relationships
 71: e4672182d =  71: e4672182d Avoid undef warnings on CFs without a pattern
 72: 4ca88f8d4 =  72: 4ca88f8d4 Skip serializing OCFVs on live objects for disabled CFs
 73: b1dff1024 =  73: b1dff1024 For stability, sort records consistently
 74: 9b8a088c1 =  74: 9b8a088c1 Clear user passwords and authtokens
 75: 60590ae9c =  75: 60590ae9c Remove more empty fields
 76: 1f624c94f =  76: 1f624c94f Handle disabled OCFVs by skipping them
 77: d9f8bf98f =  77: d9f8bf98f Remove empty user keys
 78: 759ad60da =  78: 759ad60da Avoid undef warnings with sorting by sortorder
 79: f6ad69b91 =  79: f6ad69b91 Sort ObjectScrips by queue name for stability
 80: 7048bee5b =  80: 7048bee5b Don't serialized disabled OCFVs
 81: cd50567a3 =  81: cd50567a3 Factor out repeated deep hash lookups
 82: 99b8357c4 =  82: 99b8357c4 No need to include nobody member for single-member groups
 83: a6910b6d0 =  83: a6910b6d0 Add Sync option for JSON serializer
 84: 4acf32f76 =  84: 4acf32f76 Delete empty Values => [] from custom fields
 85: db38a18d7 =  85: db38a18d7 Default FollowTickets and FollowTransactions to 0 for initialdata
 86: f2abed891 =  86: f2abed891 Default to exporting scrips and ACLs
 87: de00f1109 =  87: de00f1109 Add FollowDisabled option to serializer
 88: 846d2a979 =  88: 846d2a979 Avoid serializing ACLs and GroupMembers if either parent is disabled
 89: 907847003 =  89: 907847003 Avoid error on broken ACLEquivalence principals
 90: 5ce7c84c7 =  90: 5ce7c84c7 Sort OCFV values to keep the original id order
 91: da4a2279e =  91: da4a2279e Add a --no-disabled flag to serializer
 92: 3341a6510 =  92: 3341a6510 Add --no-transactions flag to rt-serializer
 93: 816e1e892 =  93: 816e1e892 Initial rt-dump-initialdata
 94: fdf741074 =  94: fdf741074 Make label column a bit wider considering we have ObjectCustomFieldValues now
 95: c4f4df2ad =  95: c4f4df2ad Fix plural of words like "Class" in the progress bar of migration
 96: 42a5b5e07 =  96: 42a5b5e07 Fix plural of "ACE" in the progress bar of migration
 97: 43a17b797 =  97: 43a17b797 First initialdata roundtrip tests
 98: 7b35ecf83 =  98: 7b35ecf83 Skip tests if required RT::Extension::Initialdata::JSON is not available
 99: 59b1a1267 =  99: 59b1a1267 Make sure RT::Extension::Initialdata::JSON is available for perls prior to 5.14
100: ca42b410e = 100: ca42b410e Support more string formats for Object in @Attributes
101: d2c7fbe98 = 101: d2c7fbe98 Support import/export of @Attribute for JSON serializer
102: 289733ae5 = 102: 289733ae5 Support @Topics and @ObjectTopics in initialdata
103: e5206f656 = 103: e5206f656 Support Topics for json serializer
104: 6b88728eb = 104: 6b88728eb Support disabled CustomRoles creation in initialdata
105: e853c699e = 105: e853c699e Encode LargeContent to base64 for upload custom fields in json serializer
106: fdc64d83d ! 106: b691ef49d Support update/delete actions in initialdata
    @@ -493,11 +493,6 @@
     +        my $old_value = $object->can( $field ) ? $object->$field : $object->_Value( $field );
     +
     +        if ( ( $old_value // '' ) ne ( $values->{$field} // '' ) ) {
    -+
    -+            if ( ( $object->$field // '' ) ne ( $original->{$field} // '' ) ) {
    -+                # TODO conflict found, need to ask, for now, just do the changes.
    -+            }
    -+
     +            my $set_method = "Set$field";
     +            if ( $object->can( $set_method ) || $object->_Accessible( $field, 'write' ) ) {
     +                my ( $ret, $msg );
    @@ -568,7 +563,7 @@
     +                $principal_type = 'User';
     +            }
     +            else {
    -+                die "Couldn't load user $values->{_Original}{UserId}";
    ++                RT->Logger->error( "Couldn't load user $values->{_Original}{UserId}" );
     +                return;
     +            }
     +        }
    @@ -580,11 +575,13 @@
     +                $principal_type = 'Group';
     +            }
     +            else {
    -+                die "Couldn't load group $values->{_Original}{UserId}";
    ++                RT->Logger->error( "Couldn't load group $values->{_Original}{UserId}" );
    ++                return;
     +            }
     +        }
     +        else {
    -+            die "Invalid principal type in $class";
    ++            RT->Logger->error( "Invalid principal type in $class" );
    ++            return;
     +        }
     +
     +        $object->LoadByValues(
    @@ -596,27 +593,32 @@
     +    elsif ( $class eq 'RT::GroupMember' ) {
     +        my $group = RT::Group->new( RT->SystemUser );
     +        $group->LoadUserDefinedGroup( $values->{_Original}{Group} );
    -+        die "Couldn't load group $values->{_Original}{Group}" unless $group->id;
    ++        unless ( $group->id ) {
    ++            RT->Logger->error( "Couldn't load group $values->{_Original}{Group}" );
    ++            return;
    ++        }
     +
     +        my $member;
     +        if ( $values->{_Original}{Class} eq 'RT::User' ) {
     +            $member = RT::User->new( RT->SystemUser );
     +            $member->Load( $values->{_Original}{Name} );
    -+            die "Couldn't load user $values->{_Original}{Name}" unless $member->id;
    ++            unless ( $member->id ) {
    ++                RT->Logger->error( "Couldn't load user $values->{_Original}{Name}" );
    ++                return;
    ++            }
     +        }
     +        else {
     +            $member = RT::Group->new( RT->SystemUser );
     +            $member->LoadUserDefinedGroup( $values->{_Original}{Name} );
    -+            die "Couldn't load group $values->{_Original}{Name}" unless $member->id;
    ++            unless ( $member->id ) {
    ++                RT->Logger->error( "Couldn't load group $values->{_Original}{Name}" );
    ++                return;
    ++            }
     +        }
     +        $object->LoadByCols( Group => $group->PrincipalObj, Member => $member->PrincipalObj );
     +    }
     +    elsif ( $class eq 'RT::Scrip' ) {
     +        $object->LoadByCols( Description => $values->{_Original}{Description} );
    -+    }
    -+    elsif ( $class eq 'RT::ObjectCustomFieldValue' ) {
    -+        my $cf = RT::CustomField->new( RT->SystemUser );
    -+        # TODO
          }
          else {
     -        $object->Load( $id );
    @@ -639,6 +641,7 @@
     +                }
     +                if ( !$obj->id ) {
     +                    $RT::Logger->error( "Failed to load object $class-$id" );
    ++                    return;
     +                }
     +            }
     +            else {
107: 095ea6e67 = 107: 95de5b371 Add --base option to generate changes between 2 initialdata.json files



More information about the rt-commit mailing list