Changeset 297


Ignore:
Timestamp:
01/12/11 14:10:48 (13 years ago)
Author:
nanardon
Message:
  • resurect nb_rpm chat command
Location:
server/trunk/web/lib/Sophie/Controller
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • server/trunk/web/lib/Sophie/Controller/Chat/Cmd.pm

    r292 r297  
    982982} 
    983983 
     984=head2 nb_rpm [-d distrib] NAME 
     985 
     986Show the count of rpm maintains by packager matching C<NAME>. 
     987 
     988=cut 
     989 
     990sub nb_rpm : XMLRPC { 
     991    my ($self, $c, $reqspec, @args) = @_; 
     992    my @message; 
     993    my $dist = { distribution => $reqspec->{distribution} }; 
     994    @args = @{ $c->forward('_getopt', [ 
     995        { 
     996            'd=s' => \$dist->{distribution}, 
     997        }, @args ]) }; 
     998    if (!$c->forward('/distrib/exists', [ $dist ])) { 
     999        return $c->stash->{xmlrpc} = { 
     1000            message => [ "I don't have such distribution" ] 
     1001        }; 
     1002    } 
     1003 
     1004    my $maints = $c->forward('/maintainers/search', 
     1005        [ $args[0], $dist->{distribution} ]); 
     1006    if (@$maints > 3) { 
     1007        return $c->stash->{xmlrpc} = { 
     1008            message => [  
     1009                scalar(@$maints) . " maintainers found matching `$args[0]'" 
     1010            ] 
     1011        }; 
     1012    } elsif (! @$maints) { 
     1013        return $c->stash->{xmlrpc} = { 
     1014            message => [ "No maintainers found matching `$args[0]'" ] 
     1015        }; 
     1016    } else { 
     1017        my @messages; 
     1018        foreach (@$maints) { 
     1019            my $rpms = $c->forward('/maintainers/bymaintainer', [ 
     1020                $_->{owner}, $dist->{distribution} ]); 
     1021            push(@messages, sprintf('%s (%s) maintains %d rpms', 
     1022                    $_->{owner}, 
     1023                    $_->{vendor}, 
     1024                    scalar(@$rpms), 
     1025                ) 
     1026            ); 
     1027        } 
     1028        return $c->stash->{xmlrpc} = { 
     1029            message => \@messages, 
     1030        }; 
     1031    } 
     1032} 
     1033 
    9841034=head1 AUTHOR 
    9851035 
  • server/trunk/web/lib/Sophie/Controller/Maintainers.pm

    r164 r297  
    7474} 
    7575 
     76sub bymaintainer : XMLRPC { 
     77    my ($self, $c, $maint, $distrib) = @_; 
     78    $c->stash->{xmlrpc} = [ map { { $_->get_columns } }  
     79    $c->model('Base::MaintRpm')-> 
     80        search( 
     81            { owner => $maint }, 
     82            { select => [ qw(rpm) ] }, 
     83        )-> 
     84        search_related('MaintSources')-> 
     85        search_related('MaintDistrib')-> 
     86        search_related('Distribution', 
     87            $distrib ? { 
     88                '-or' => [ 
     89                    { shortname => $distrib }, 
     90                    { name => $distrib }, 
     91                ], 
     92            } : (), 
     93        )->search({}, 
     94            { 
     95                'select' => [ qw'rpm name label' ], 
     96                'as'     => [ qw'rpm distribution vendor' ], 
     97            } 
     98        )->all ]; 
     99     
     100} 
     101 
     102sub search :XMLRPC { 
     103    my ($self, $c, $maint, $distrib) = @_; 
     104 
     105    $c->stash->{xmlrpc} = [ map { { $_->get_columns } } 
     106        $c->model('Base::MaintRpm')->search( 
     107            { owner => { 'LIKE' => "%$maint%" } } 
     108        )->search_related('MaintSources' 
     109        )->search_related('MaintDistrib' 
     110        )->search_related('Distribution', 
     111            $distrib ? { 
     112                '-or' => [ 
     113                    { shortname => $distrib }, 
     114                    { name => $distrib }, 
     115                ], 
     116            } : (), 
     117        )->search({}, 
     118            { 
     119                'select' => [ qw'owner name label' ], 
     120                'as'     => [ qw'owner distribution vendor' ], 
     121                'group_by' => [ qw'owner name label' ], 
     122                'order_by' => [ qw'owner name label' ], 
     123            } 
     124        )->all ]; 
     125} 
    76126 
    77127=head1 AUTHOR 
Note: See TracChangeset for help on using the changeset viewer.