Changeset 207
- Timestamp:
- 12/28/10 07:26:44 (13 years ago)
- Location:
- server/trunk/web
- Files:
-
- 12 added
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
server/trunk/web/lib/Sophie/Controller/Analysis.pm
r127 r207 25 25 my ( $self, $c ) = @_; 26 26 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 35 sub 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 46 sub 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 ); 28 76 } 29 77 -
server/trunk/web/lib/Sophie/Controller/Analysis/Solver.pm
r148 r207 34 34 my %need_pkgid; 35 35 my %need_pool; 36 my %bydep; 36 37 my @unresolved; 37 38 foreach my $dep (@{ $deplist || []}) { … … 43 44 44 45 $depname =~ /^rpmlib\(/ and next; 46 my $depdisplay = $depname . ($sense ? " $sense $evr" : ''); 47 $bydep{$depdisplay} and next; # same already searched 48 $bydep{$depdisplay} = {}; 45 49 my $found = 0; 46 50 if ($depname =~ /^\//) { … … 48 52 if (@{$res}) { 49 53 $found = 1; 50 foreach (@{$res ->{results}}) {54 foreach (@{$res}) { 51 55 $need_pkgid{$_} = 1; 56 $bydep{$depdisplay}{pkg}{$_} = 1; 52 57 } 53 58 } … … 58 63 foreach (@{$res}) { 59 64 $need_pool{$_} = 1; 65 $bydep{$depdisplay}{pool}{$_} = 1; 66 60 67 } 61 68 } … … 70 77 foreach (@{$res}) { 71 78 $need_pkgid{$_} = 1; 79 $bydep{$depdisplay}{pkg}{$_} = 1; 72 80 } 73 81 } … … 82 90 foreach (@{$res}) { 83 91 $need_pool{$_} = 1; 92 $bydep{$depdisplay}{pool}{$_} = 1; 84 93 } 85 94 } … … 97 106 } 98 107 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 99 115 $c->stash->{xmlrpc} = { 100 116 unresolved => \@unresolved, 101 117 pkg => [ keys %need_pkgid ], 102 118 pool => [ keys %need_pool ], 119 bydep => \%bydep, 103 120 }; 104 121 } -
server/trunk/web/lib/Sophie/Controller/User/Folder.pm
r127 r207 28 28 29 29 $c->response->body('Matched Sophie::Controller::User::folder in User::folder.'); 30 } 31 32 sub 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 47 sub 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 72 sub 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'; 30 89 } 31 90 -
server/trunk/web/root/static/sophie.css
r189 r207 248 248 } 249 249 250 .alert { 251 color: red; 252 } 253 250 254 #w3c { 251 255 float: right; -
server/trunk/web/t/controller_User-Folder.t
r127 r207 2 2 use warnings; 3 3 use Test::More; 4 use FindBin; 5 require "$FindBin::Bin/xml.pl"; 4 6 5 7 BEGIN { use_ok 'Catalyst::Test', 'Sophie' } … … 7 9 8 10 ok( request('/user/folder')->is_success, 'Request should succeed' ); 11 ok( xmlrequest_ok('user.folder.list'), 'RPC user.folder.list'); 9 12 done_testing();
Note: See TracChangeset
for help on using the changeset viewer.