]> git.proxmox.com Git - pve-manager.git/commitdiff
apt: group by Origin
authorDietmar Maurer <dietmar@proxmox.com>
Wed, 19 Jun 2013 07:39:00 +0000 (09:39 +0200)
committerDietmar Maurer <dietmar@proxmox.com>
Wed, 19 Jun 2013 07:41:35 +0000 (09:41 +0200)
code cleanups

PVE/API2/APT.pm
www/manager/node/APT.js

index 78188aab494b43558f13d5cfa678fb10323c6c7a..ea970e50a737b0a7ee30e11d450516d059409a28 100644 (file)
@@ -67,25 +67,32 @@ __PACKAGE__->register_method({
        return $res;
     }});
 
-my $get_changelug_url = sub {
-    my ($pkgname, $info, $candidate_ver) = @_;
+my $get_pkgfile = sub {
+    my ($veriter)  = @_;
 
-    my $changelog_url;
-    foreach my $verfile (@{$candidate_ver->{FileList}}) {
+    foreach my $verfile (@{$veriter->{FileList}}) {
        my $pkgfile = $verfile->{File};
-       my $origin = $pkgfile->{Origin};
-       my $base = dirname($info->{FileName});
-       if ($origin && $base) {
-           my $pkgver = $candidate_ver->{VerStr};
-           $pkgver =~ s/^\d+://; # strip epoch
-           my $srcpkg = $info->{SourcePkg} || $pkgname;
-           if ($origin eq 'Debian') {
-               $changelog_url = "http://packages.debian.org/changelogs/$base/" . 
-                   "${srcpkg}_$pkgver/changelog";
-           }
-           last;
+       next if !$pkgfile->{Origin};
+       return $pkgfile;
+    }
+
+    return undef;
+};
+
+my $get_changelog_url =sub {
+    my ($pkgname, $info, $pkgver, $origin) = @_;
+
+    my $changelog_url;
+    my $base = dirname($info->{FileName});
+    if ($origin && $base) {
+       $pkgver =~ s/^\d+://; # strip epoch
+       my $srcpkg = $info->{SourcePkg} || $pkgname;
+       if ($origin eq 'Debian') {
+           $changelog_url = "http://packages.debian.org/changelogs/$base/" . 
+               "${srcpkg}_$pkgver/changelog";
        }
     }
+
     return $changelog_url;
 };
 
@@ -95,10 +102,15 @@ my $assemble_pkginfo = sub {
     my $data = { 
        Package => $info->{Name},
        Title => $info->{ShortDesc},
+       Origin => 'unknown',
     };
 
-    if (my $changelog_url = &$get_changelug_url($pkgname, $info, $candidate_ver)) {
-       $data->{ChangeLogUrl} = $changelog_url;
+    if (my $pkgfile = &$get_pkgfile($candidate_ver)) {
+       my $origin = $pkgfile->{Origin};
+       $data->{Origin} = $origin;
+       if (my $changelog_url = &$get_changelog_url($pkgname, $info, $candidate_ver->{VerStr}, $origin)) {
+           $data->{ChangeLogUrl} = $changelog_url;
+       }
     }
 
     if (my $desc = $info->{LongDesc}) {
@@ -345,8 +357,11 @@ __PACKAGE__->register_method({
 
        my $info = $pkgrecords->lookup($pkgname);
 
-       my $url = &$get_changelug_url($pkgname, $info, $ver) ||
-           die "changelog for '${pkgname}_$ver->{VerStr}' not available\n";
+       my $pkgfile = &$get_pkgfile($ver);
+       my $url;
+
+       die "changelog for '${pkgname}_$ver->{VerStr}' not available\n"
+           if !($pkgfile && ($url = &$get_changelog_url($pkgname, $info, $ver->{VerStr}, $pkgfile->{Origin})));
 
        my $data = "";
 
index d3382c94c07429076fb455eeca6911abe2c80766..144f26d23290f7b7ef98d8afad45d7d6ac81492c 100644 (file)
@@ -13,7 +13,7 @@ Ext.define('PVE.node.APT', {
 
        var store = Ext.create('Ext.data.Store', {
            model: 'apt-pkglist',
-           groupField: 'Section',
+           groupField: 'Origin',
            proxy: {
                 type: 'pve',
                 url: "/api2/json/nodes/" + nodename + "/apt/update"
@@ -27,7 +27,8 @@ Ext.define('PVE.node.APT', {
        });
 
        var groupingFeature = Ext.create('Ext.grid.feature.Grouping', {
-            groupHeaderTpl: '{[ "Section: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})'
+            groupHeaderTpl: '{[ "Origin: " + values.name ]} ({rows.length} Item{[values.rows.length > 1 ? "s" : ""]})',
+           enableGroupingMenu: false
        });
 
        var rowBodyFeature = Ext.create('Ext.grid.feature.RowBody', {
@@ -203,7 +204,7 @@ Ext.define('PVE.node.APT', {
     Ext.define('apt-pkglist', {
        extend: 'Ext.data.Model',
        fields: [ 'Package', 'Title', 'Description', 'Section', 'Arch',
-                 'Priority', 'Version', 'OldVersion', 'ChangeLogUrl' ],
+                 'Priority', 'Version', 'OldVersion', 'ChangeLogUrl', 'Origin' ],
        idProperty: 'Package'
     });