diff options
author | Jelle van der Waa <jelle@vdwaa.nl> | 2019-05-17 22:43:00 +0200 |
---|---|---|
committer | Jelle van der Waa <jelle@vdwaa.nl> | 2019-05-17 22:46:50 +0200 |
commit | e3584454a39dd8803a0af41ebbc6766feaa2fcc9 (patch) | |
tree | 3888f4768ab110ece97ef9965e6086554ebdf679 | |
parent | 068df3cdb42a1e121600eebb40f3834ab16b8b6e (diff) | |
download | archweb-e3584454a39dd8803a0af41ebbc6766feaa2fcc9.tar.gz archweb-e3584454a39dd8803a0af41ebbc6766feaa2fcc9.zip |
devel: add non existing dependencies report
Add a new devel report which shows packages which have non-existing
make, opt or normal dependencies.
Closes: #111
-rw-r--r-- | devel/reports.py | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/devel/reports.py b/devel/reports.py index 3d8b0fbd..8c659ed8 100644 --- a/devel/reports.py +++ b/devel/reports.py @@ -3,8 +3,9 @@ from datetime import timedelta import pytz from django.db.models import F from django.template.defaultfilters import filesizeformat +from django.db import connection from django.utils.timezone import now -from main.models import PackageFile +from main.models import Package, PackageFile from packages.models import Depend, PackageRelation from .models import DeveloperKey @@ -144,6 +145,28 @@ def signature_time(packages): return filtered +def non_existing_dependencies(packages): + cursor = connection.cursor() + query = """ + select p.pkgname "pkgname", pd.name "dependency pkgname", depp.pkgname, provp.pkgname + from packages_depend pd + join packages p on p.id = pd.pkg_id + left join packages depp on depp.pkgname = pd.name + left join packages_provision depp_prov on depp_prov.name = pd.name + left join packages provp on provp.id = depp_prov.pkg_id;""" + + packages = [] + cursor.execute(query) + for row in cursor.fetchall(): + pkgname, pdname, dep_pkgname, prov_pkgname = row + if not prov_pkgname and not dep_pkgname: + package = Package.objects.normal().filter(pkgname=pkgname).first() + package.nonexistingdep = pdname + packages.append(package) + + return packages + + REPORT_OLD = DeveloperReport( 'old', 'Old', 'Packages last built more than two years ago', old) @@ -191,6 +214,14 @@ REPORT_SIG_TIME = DeveloperReport( 'after the build timestamp', signature_time, ['Signature Date', 'Packager'], ['sig_date', 'packager']) +NON_EXISTING_DEPENDENCIES = DeveloperReport( + 'non-existing-dependencies', + 'Non existing dependencies', + 'Packages that have dependencies that do not exists in the repository', + non_existing_dependencies, + ['Non existing dependency'], + ['nonexistingdep'], + personal=False) def available_reports(): return (REPORT_OLD, @@ -201,4 +232,5 @@ def available_reports(): REPORT_INFO, REPORT_ORPHANS, REPORT_SIGNATURE, - REPORT_SIG_TIME, ) + REPORT_SIG_TIME, + NON_EXISTING_DEPENDENCIES, ) |