From 2f1696e48eb8ef7b1738ebcdd3a072c4c105811a Mon Sep 17 00:00:00 2001 From: Aristotle Pagaltzis Date: Sat, 21 Apr 2018 19:03:22 +0200 Subject: [PATCH 1/2] Add counts to permission table header --- lib/MetaCPAN/Web/Controller/Permission.pm | 7 +++++++ root/inc/permission.html | 6 +++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/MetaCPAN/Web/Controller/Permission.pm b/lib/MetaCPAN/Web/Controller/Permission.pm index 5bae02c567..5c0c183b12 100644 --- a/lib/MetaCPAN/Web/Controller/Permission.pm +++ b/lib/MetaCPAN/Web/Controller/Permission.pm @@ -1,6 +1,7 @@ package MetaCPAN::Web::Controller::Permission; use Moose; +use List::Util qw(uniq); use namespace::autoclean; BEGIN { extends 'MetaCPAN::Web::Controller' } @@ -38,6 +39,12 @@ sub get : Private { } $c->stash( { search_term => $name, permission => $perms } ); + + return if $type eq 'module'; + $c->stash( { + num_owners => scalar( uniq map $_->{owner}, @$perms ), + num_comaints => scalar( uniq map @{ $_->{co_maintainers} }, @$perms ), + } ); } __PACKAGE__->meta->make_immutable; diff --git a/root/inc/permission.html b/root/inc/permission.html index 3527c11cd8..dd8a22818c 100644 --- a/root/inc/permission.html +++ b/root/inc/permission.html @@ -1,8 +1,8 @@ - - - + + + <% FOREACH module IN permission %> From 010bda596dc969de8fc07e4ecfc159c675c5c36f Mon Sep 17 00:00:00 2001 From: Aristotle Pagaltzis Date: Sat, 21 Apr 2018 19:21:15 +0200 Subject: [PATCH 2/2] Display authorized releasers of a distribution --- lib/MetaCPAN/Web/Controller/Permission.pm | 12 ++++++++++++ root/permission/distribution.html | 20 ++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/lib/MetaCPAN/Web/Controller/Permission.pm b/lib/MetaCPAN/Web/Controller/Permission.pm index 5c0c183b12..669646c1df 100644 --- a/lib/MetaCPAN/Web/Controller/Permission.pm +++ b/lib/MetaCPAN/Web/Controller/Permission.pm @@ -16,6 +16,18 @@ sub distribution : Local Args(1) { my ( $self, $c, $distribution ) = @_; $c->forward( 'get', $c, [ 'distribution', $distribution ] ); + + my $modules = $c->stash->{permission}; + my $total_modules = scalar @$modules; + my %num_modules_of; + for my $module (@$modules) { + ++$num_modules_of{ $module->{owner} }; + ++$num_modules_of{$_} for @{ $module->{co_maintainers} }; + } + my @releaser = sort grep { $num_modules_of{$_} == $total_modules } + keys %num_modules_of; + + $c->stash( releaser => \@releaser ); } sub module : Local Args(1) { diff --git a/root/permission/distribution.html b/root/permission/distribution.html index 33f5b656d4..c572473524 100644 --- a/root/permission/distribution.html +++ b/root/permission/distribution.html @@ -2,4 +2,24 @@

Module Permissions for <% search_term %>

+
NameOwnerCo-MaintainersModule (<% permission.size %>)Owner (<% num_owners %>)Co-Maintainers (<% num_comaints %>)
+ + + + <% FOREACH author IN releaser %> + + + + <% END %> + <% IF releaser.size == 0 %> + + + + <% END %> +
Authorized Releasers (<% releaser.size %>)
+ <% author %> +
+ No owner<% IF num_comaints %> or co-maintainer<% END %> has permissions for all modules in this distribution. +
+ <% INCLUDE 'inc/permission.html' %>