Changeset 207


Ignore:
Timestamp:
12/28/10 07:26:44 (13 years ago)
Author:
nanardon
Message:
  • add analyse functions (need yet to be improve)
Location:
server/trunk/web
Files:
12 added
5 edited

Legend:

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

    r127 r207  
    2525    my ( $self, $c ) = @_; 
    2626 
    27     $c->response->body('Matched Sophie::Controller::Analysis in Analysis.'); 
     27    if (my $upload = $c->req->upload('file')) { 
     28        if ($upload->size < 5 * 1024 * 1024) { # 5Mo 
     29            $c->forward('/user/folder/load_rpm', [ $upload->slurp ]); 
     30        } 
     31    } 
     32    $c->forward('analyse_folder'); 
     33} 
     34 
     35sub analyse_folder : Local { 
     36    my ($self, $c) = @_; 
     37 
     38    $c->session->{analyse_dist} = { 
     39        distribution => $c->req->param('distribution') || undef, 
     40        release => $c->req->param('release') || undef, 
     41        arch => $c->req->param('arch') || undef, 
     42    }; 
     43 
     44} 
     45 
     46sub required_by :Local { 
     47    my ($self, $c, $id) = @_; 
     48    $id ||= $c->req->param('id'); 
     49 
     50    my @deplist; 
     51    foreach my $dep ($c->model('Base::UsersDeps')->search( 
     52        { 
     53            pid => [ $id ], 
     54            deptype => 'R', 
     55        }, 
     56        { 
     57            select => [ 'rpmsenseflag("flags")', 
     58                qw(depname flags evr deptype) ], 
     59            as => [ qw'sense depname flags evr deptype' ], 
     60        } 
     61        )->all) { 
     62        $dep->get_column('depname') =~ /^rpmlib\(/ and next; 
     63        push(@deplist, [ 
     64                $dep->get_column('depname'), 
     65                $dep->get_column('sense'), 
     66                $dep->get_column('evr') ]); 
     67    } 
     68 
     69    my @folderid = map { $_->{id} } @{ $c->forward('/user/folder/list') }; 
     70     
     71    $c->stash->{xmlrpc} = $c->forward( 
     72        '/analysis/solver/find_requirements', 
     73        [ $c->session->{analyse_dist}, 
     74            'P', \@deplist, \@folderid ] 
     75    ); 
    2876} 
    2977 
  • server/trunk/web/lib/Sophie/Controller/Analysis/Solver.pm

    r148 r207  
    3434    my %need_pkgid; 
    3535    my %need_pool; 
     36    my %bydep; 
    3637    my @unresolved; 
    3738    foreach my $dep (@{ $deplist || []}) { 
     
    4344 
    4445        $depname =~ /^rpmlib\(/ and next; 
     46        my $depdisplay = $depname . ($sense ? " $sense $evr" : ''); 
     47        $bydep{$depdisplay} and next; # same already searched 
     48        $bydep{$depdisplay} = {}; 
    4549        my $found = 0; 
    4650        if ($depname =~ /^\//) { 
     
    4852            if (@{$res}) { 
    4953                $found = 1; 
    50                 foreach (@{$res->{results}}) { 
     54                foreach (@{$res}) { 
    5155                    $need_pkgid{$_} = 1; 
     56                    $bydep{$depdisplay}{pkg}{$_} = 1; 
    5257                } 
    5358            }  
     
    5863                    foreach (@{$res}) { 
    5964                        $need_pool{$_} = 1; 
     65                        $bydep{$depdisplay}{pool}{$_} = 1; 
     66 
    6067                    } 
    6168                } 
     
    7077                foreach (@{$res}) { 
    7178                    $need_pkgid{$_} = 1; 
     79                    $bydep{$depdisplay}{pkg}{$_} = 1; 
    7280                } 
    7381            }  
     
    8290                    foreach (@{$res}) { 
    8391                        $need_pool{$_} = 1; 
     92                        $bydep{$depdisplay}{pool}{$_} = 1; 
    8493                    } 
    8594                } 
     
    97106    } 
    98107 
     108    foreach my $d (keys %bydep) { 
     109        foreach my $t (keys %{ $bydep{$d} || {} }) { 
     110            $bydep{$d}{$t} = [ keys %{ $bydep{$d}{$t} } ]; 
     111        } 
     112    } 
     113 
     114 
    99115    $c->stash->{xmlrpc} = { 
    100116        unresolved => \@unresolved, 
    101117        pkg => [ keys %need_pkgid ], 
    102118        pool => [ keys %need_pool ], 
     119        bydep => \%bydep, 
    103120    }; 
    104121} 
  • server/trunk/web/lib/Sophie/Controller/User/Folder.pm

    r127 r207  
    2828 
    2929    $c->response->body('Matched Sophie::Controller::User::folder in User::folder.'); 
     30} 
     31 
     32sub list :XMLRPC :Local { 
     33    my ($self, $c ) = @_; 
     34 
     35    $c->stash->{xmlrpc} = [ 
     36        map { { $_->get_columns } } 
     37        $c->model('Base::UsersRpms')->search( 
     38        { 
     39            ($c->user_exists 
     40            ? ( user_fkey => $c->model('Base::Users')->find({ mail => 
     41                        $c->user->mail })->ukey ) 
     42            : ( sessions_fkey => 'session:' . $c->sessionid ) ), 
     43        } 
     44    )->all ] 
     45} 
     46 
     47sub delete :XMLRPC :Local { 
     48    my ($self, $c, $pid ) = @_; 
     49    $pid ||= $c->req->param('delete'); 
     50 
     51    my $pkg = $c->model('Base::UsersRpms')->search( 
     52        { 
     53            -and => [ { 
     54            ($c->user_exists 
     55            ? ( user_fkey => $c->model('Base::Users')->find({ mail => 
     56                        $c->user->mail })->ukey ) 
     57            : ( sessions_fkey => 'session:' . $c->sessionid ) ), 
     58            }, 
     59            { id => $pid }, 
     60            ] 
     61        } 
     62    )->first; 
     63    if ($pkg) { 
     64        $pkg->delete; 
     65        $c->model('Base')->storage->dbh->commit; 
     66        $c->stash->{xmlrpc} = 'Delete'; 
     67    } else { 
     68        $c->stash->{xmlrpc} = 'No package found'; 
     69    } 
     70} 
     71 
     72sub clear : XMLRPC : Local { 
     73    my ($self, $c, $pid ) = @_; 
     74    $pid ||= $c->req->param('delete'); 
     75 
     76    my $pkg = $c->model('Base::UsersRpms')->search( 
     77        { 
     78            -and => [ { 
     79            ($c->user_exists 
     80            ? ( user_fkey => $c->model('Base::Users')->find({ mail => 
     81                        $c->user->mail })->ukey ) 
     82            : ( sessions_fkey => 'session:' . $c->sessionid ) ), 
     83            }, 
     84            ] 
     85        } 
     86    )->delete; 
     87    $c->model('Base')->storage->dbh->commit; 
     88    $c->stash->{xmlrpc} = 'Empty'; 
    3089} 
    3190 
  • server/trunk/web/root/static/sophie.css

    r189 r207  
    248248} 
    249249 
     250.alert { 
     251    color: red; 
     252} 
     253 
    250254#w3c { 
    251255    float: right; 
  • server/trunk/web/t/controller_User-Folder.t

    r127 r207  
    22use warnings; 
    33use Test::More; 
     4use FindBin; 
     5require "$FindBin::Bin/xml.pl"; 
    46 
    57BEGIN { use_ok 'Catalyst::Test', 'Sophie' } 
     
    79 
    810ok( request('/user/folder')->is_success, 'Request should succeed' ); 
     11ok( xmlrequest_ok('user.folder.list'), 'RPC user.folder.list'); 
    912done_testing(); 
Note: See TracChangeset for help on using the changeset viewer.