summaryrefslogtreecommitdiff
path: root/packages/utils.py
diff options
context:
space:
mode:
authorParabola <dev@list.parabolagnulinux.org>2011-03-06 14:13:36 +0000
committerParabola <dev@list.parabolagnulinux.org>2011-03-06 14:13:36 +0000
commit3ee286527f1ec23ead2c11201b9fa504a5bf6208 (patch)
tree8a9f605f751126c884139a6b3baa2835684ed22b /packages/utils.py
parent2c2614c48957c32334aa9ba317db935a979cd67f (diff)
parentfee4c20e9607ccc479c33b2476fa1ba709efe607 (diff)
Merge branch 'master' of /srv/git/projects/parabolaweb
Conflicts: .gitignore
Diffstat (limited to 'packages/utils.py')
-rw-r--r--packages/utils.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/packages/utils.py b/packages/utils.py
index aaec0ec4..8d9f13ab 100644
--- a/packages/utils.py
+++ b/packages/utils.py
@@ -5,7 +5,7 @@ from operator import itemgetter
from main.models import Package
from main.utils import cache_function
-from .models import PackageGroup
+from .models import PackageGroup, PackageRelation
@cache_function(300)
def get_group_info(include_arches=None):
@@ -128,4 +128,26 @@ SELECT p.id, q.id
differences.sort(key=lambda a: (a.repo.name, a.pkgname))
return differences
+def get_wrong_permissions():
+ sql = """
+SELECT DISTINCT id
+ FROM (
+ SELECT pr.id, p.repo_id, pr.user_id
+ FROM packages p
+ JOIN packages_packagerelation pr ON p.pkgbase = pr.pkgbase
+ WHERE pr.type = %s
+ ) pkgs
+ WHERE pkgs.repo_id NOT IN (
+ SELECT repo_id FROM user_profiles_allowed_repos ar
+ INNER JOIN user_profiles up ON ar.userprofile_id = up.id
+ WHERE up.user_id = pkgs.user_id
+ )
+"""
+ cursor = connection.cursor()
+ cursor.execute(sql, [PackageRelation.MAINTAINER])
+ to_fetch = [row[0] for row in cursor.fetchall()]
+ relations = PackageRelation.objects.select_related('user').filter(
+ id__in=to_fetch)
+ return relations
+
# vim: set ts=4 sw=4 et: