[Rt-commit] rt branch, 4.4/custom-role-serializer, updated. rt-4.4.2-5-g426a61e

Shawn Moore shawn at bestpractical.com
Tue Oct 10 11:47:20 EDT 2017


The branch, 4.4/custom-role-serializer has been updated
       via  426a61ec1e856d0af1a175884bd6ed09794847b5 (commit)
       via  670a49c84f92f35db574bbbf59c2a65697812a9b (commit)
      from  a338922877f1e0eae85f473a448ad1d4938b046f (commit)

Summary of changes:
 lib/RT/Group.pm | 35 ++++++++++++++++++++++++++---------
 1 file changed, 26 insertions(+), 9 deletions(-)

- Log -----------------------------------------------------------------
commit 670a49c84f92f35db574bbbf59c2a65697812a9b
Author: Shawn M Moore <shawn at bestpractical.com>
Date:   Tue Oct 10 15:36:02 2017 +0000

    Factor out an RT::Group->_CustomRoleObj

diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index e6fe7dd..e3dc4fa 100644
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -1339,15 +1339,9 @@ sub Label {
         return $self->Name;
     }
 
-    if ($self->Domain =~ /-Role$/) {
-        my ($id) = $self->Name =~ /^RT::CustomRole-(\d+)$/;
-        if ($id) {
-            my $role = RT::CustomRole->new($self->CurrentUser);
-            $role->Load($id);
-
-            # don't loc user-defined role names
-            return $role->Name;
-        }
+    if (my $role = $self->_CustomRoleObj) {
+        # don't loc user-defined role names
+        return $role->Name;
     }
 
     return $self->loc($self->Name);
@@ -1702,6 +1696,21 @@ sub PostInflate {
     );
 }
 
+# If this group represents the members of a custom role, then return
+# the RT::CustomRole object. Otherwise, return undef
+sub _CustomRoleObj {
+    my $self = shift;
+    if ($self->Domain =~ /-Role$/) {
+        my ($id) = $self->Name =~ /^RT::CustomRole-(\d+)$/;
+        if ($id) {
+            my $role = RT::CustomRole->new($self->CurrentUser);
+            $role->Load($id);
+            return $role;
+        }
+    }
+    return;
+}
+
 RT::Base->_ImportOverlays();
 
 1;

commit 426a61ec1e856d0af1a175884bd6ed09794847b5
Author: Shawn M Moore <shawn at bestpractical.com>
Date:   Tue Oct 10 15:36:36 2017 +0000

    Serialize Group -> CustomRole link using indirection

diff --git a/lib/RT/Group.pm b/lib/RT/Group.pm
index e3dc4fa..5ed026e 100644
--- a/lib/RT/Group.pm
+++ b/lib/RT/Group.pm
@@ -1512,6 +1512,9 @@ sub FindDependencies {
     my $instance = $self->InstanceObj;
     $deps->Add( out => $instance ) if $instance;
 
+    my $custom_role = $self->_CustomRoleObj;
+    $deps->Add( out => $custom_role ) if $custom_role;
+
     # Group members records, unless we're a system group
     if ($self->Domain ne "SystemInternal") {
         my $objs = RT::GroupMembers->new( $self->CurrentUser );
@@ -1619,6 +1622,11 @@ sub Serialize {
     $store{Disabled} = $self->PrincipalObj->Disabled;
     $store{Principal} = $self->PrincipalObj->UID;
     $store{PrincipalId} = $self->PrincipalObj->Id;
+
+    if (my $role = $self->_CustomRoleObj) {
+        $store{Name} = \($role->UID);
+    }
+
     return %store;
 }
 

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


More information about the rt-commit mailing list