[bugzilla-gnome-org-extensions] developers: Add some utils and use them



commit 98e4f007dfe0bc9fc7aa1aaa7b7be5cd786e93ea
Author: Krzesimir Nowak <qdlacz gmail com>
Date:   Sat Nov 8 18:52:07 2014 +0100

    developers: Add some utils and use them

 Developers/lib/Ops.pm     |   31 ++++++++++++++++---------------
 Developers/lib/Product.pm |   11 ++++++-----
 Developers/lib/User.pm    |    5 ++++-
 Developers/lib/Util.pm    |   31 +++++++++++++++++++++++++++++++
 4 files changed, 57 insertions(+), 21 deletions(-)
---
diff --git a/Developers/lib/Ops.pm b/Developers/lib/Ops.pm
index 193d698..9038b23 100644
--- a/Developers/lib/Ops.pm
+++ b/Developers/lib/Ops.pm
@@ -27,6 +27,7 @@ use Bugzilla;
 use Bugzilla::Constants;
 use Bugzilla::Group;
 use Bugzilla::Product;
+use Bugzilla::Extension::Developers::Util;
 
 our @EXPORT = qw(
     migrate_gnome_developers
@@ -46,8 +47,8 @@ sub _create_developer {
     # "<product_name>_developers".
     # Every developer in the product should be made a member of this group.
     my $new_group = Bugzilla::Group->create({
-        name        => $product->{'name'} . '_developers',
-        description => $product->{'name'} . ' Developers',
+        name        => dev_group_name($product),
+        description => dev_group_desc($product),
         isactive    => 1,
         isbuggroup  => 1,
     });
@@ -72,12 +73,12 @@ sub _create_developer {
 
     # The new <product_name>_developers groups should be automatically
     # made a member of the global developers group
-    my $dev_group = Bugzilla::Group->new({ name => 'developers' });
+    my $dev_group = Bugzilla::Group->new({ name => dev() });
 
     if (!$dev_group) {
         $dev_group = Bugzilla::Group->create({
-            name        => 'developers',
-            description => 'Developers',
+            name        => dev(),
+            description => Dev(),
             isbuggroup  => 1,
             isactive    => 1,
         });
@@ -99,14 +100,14 @@ sub _create_developer {
 sub migrate_gnome_developers {
     my $dbh = Bugzilla->dbh;
     # Create the global developer group if it doesn't yet exist
-    my $dev_group = Bugzilla::Group->new({ name => 'developers' });
+    my $dev_group = Bugzilla::Group->new({ name => dev() });
 
     return 1 if $dev_group;
 
     # Create product specific groups:
     foreach my $product (Bugzilla::Product->get_all) {
         my $group = Bugzilla::Group->new(
-            { name => $product->name . '_developers' });
+            { name => dev_group_name($product) });
 
         if (!$group) {
             _create_developer($product);
@@ -117,7 +118,7 @@ sub migrate_gnome_developers {
 sub maybe_create_developer {
     my ($class, $object) = @_;
 
-    if ($class->isa('Bugzilla::Product')) {
+    if ($class->isa(b_p())) {
         _create_developer($object);
     }
 }
@@ -126,7 +127,7 @@ sub _delete_developer {
     my $product = shift;
     my $dbh = Bugzilla->dbh;
     # Delete this product's developer group and its members
-    my $group = Bugzilla::Group->new({ name => $product->name . '_developers' });
+    my $group = Bugzilla::Group->new({ name => dev_group_name($product) });
 
     if ($group) {
         $dbh->do('DELETE FROM user_group_map WHERE group_id = ?',
@@ -146,7 +147,7 @@ sub _delete_developer {
 sub maybe_remove_developers {
     my ($object) = @_;
 
-    if ($object->isa('Bugzilla::Product')) {
+    if ($object->isa(b_p())) {
         _delete_developer($object);
     }
 }
@@ -154,13 +155,13 @@ sub maybe_remove_developers {
 sub _rename_developer {
     my ($product, $old_product, $changes) = @_;
     my $developer_group = new Bugzilla::Group(
-        { name => $old_product->name . "_developers" });
+        { name => dev_group_name($old_product) });
     my $new_group = new Bugzilla::Group(
-        { name => $product->name . '_developers' });
+        { name => dev_group_name($product) });
 
     if ($developer_group && !$new_group) {
-        $developer_group->set_name($product->name . "_developers");
-        $developer_group->set_description($product->name . " Developers");
+        $developer_group->set_name(dev_group_name($product));
+        $developer_group->set_description(dev_group_desc($product));
         $developer_group->update();
     }
 }
@@ -168,7 +169,7 @@ sub _rename_developer {
 sub maybe_rename_developers_group {
     my ($object, $old_object, $changes) = @_;
 
-    if ($object->isa('Bugzilla::Product')) {
+    if ($object->isa(b_p())) {
         if (defined $changes->{'name'}) {
             _rename_developer($object, $old_object, $changes);
         }
diff --git a/Developers/lib/Product.pm b/Developers/lib/Product.pm
index 45c7534..3d3643a 100644
--- a/Developers/lib/Product.pm
+++ b/Developers/lib/Product.pm
@@ -4,18 +4,19 @@ use strict;
 use warnings;
 use Bugzilla::Group;
 use Bugzilla::Product;
+use Bugzilla::Extension::Developers::Util;
 
 sub developers {
     my ($self) = @_;
 
-    if (!defined $self->{'developers'}) {
-        $self->{'developers'} = [];
+    if (!defined $self->{dev()}) {
+        $self->{dev()} = [];
 
-        my $group = Bugzilla::Group->new({ name => $self->name . '_developers' });
-        $self->{developers} = $group ? $group->members_non_inherited : [];
+        my $group = Bugzilla::Group->new({ name => dev_group_name($self) });
+        $self->{dev()} = $group ? $group->members_non_inherited : [];
     }
 
-    return $self->{'developers'};
+    return $self->{dev()};
 }
 
 BEGIN {
diff --git a/Developers/lib/User.pm b/Developers/lib/User.pm
index b359739..02f6123 100644
--- a/Developers/lib/User.pm
+++ b/Developers/lib/User.pm
@@ -3,7 +3,9 @@ package Bugzilla::Extension::Developers::User;
 use strict;
 use warnings;
 use Bugzilla::User;
+use Bugzilla::Extension::Developers::Util;
 use Bugzilla::Extension::Developers::Product;
+
 sub is_developer {
     my ($self, $product) = @_;
 
@@ -12,10 +14,11 @@ sub is_developer {
         # at the moment the performance of this should be fine.
         my $devs = $product->developers;
         my $is_dev = grep { $_->id == $self->id } @$devs;
+
         return $is_dev ? 1 : 0;
     }
     else {
-        return $self->in_group("developers") ? 1 : 0;
+        return $self->in_group(dev()) ? 1 : 0;
     }
 
     return 0;
diff --git a/Developers/lib/Util.pm b/Developers/lib/Util.pm
index 9e2d8df..e787cb5 100644
--- a/Developers/lib/Util.pm
+++ b/Developers/lib/Util.pm
@@ -21,8 +21,15 @@
 
 package Bugzilla::Extension::Developers::Util;
 use strict;
+use warnings;
 use base qw(Exporter);
+
 our @EXPORT = qw(
+    b_p
+    dev
+    Dev
+    dev_group_name
+    dev_group_desc
 );
 
 # This file can be loaded by your extension via
@@ -30,4 +37,28 @@ our @EXPORT = qw(
 # used by your extension in here. (Make sure you also list them in
 # @EXPORT.)
 
+sub b_p {
+    'Bugzilla::Product';
+}
+
+sub dev {
+    'developers'
+}
+
+sub Dev {
+    'Developers'
+}
+
+sub dev_group_name {
+    my ($product) = @_;
+
+    $product->{'name'} . '_' . dev();
+}
+
+sub dev_group_desc {
+    my ($product) = @_;
+
+    $product->{'name'} . ' ' . Dev();
+}
+
 1;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]