diff options
Diffstat (limited to 'scripts/git-integration')
-rwxr-xr-x | scripts/git-integration/git-serve.py | 11 | ||||
-rwxr-xr-x | scripts/git-integration/git-update.py | 8 |
2 files changed, 12 insertions, 7 deletions
diff --git a/scripts/git-integration/git-serve.py b/scripts/git-integration/git-serve.py index a1c6e3a..d551dba 100755 --- a/scripts/git-integration/git-serve.py +++ b/scripts/git-integration/git-serve.py @@ -92,10 +92,13 @@ def check_permissions(pkgbase, user): unix_socket=aur_db_socket, buffered=True) cur = db.cursor() - cur.execute("SELECT COUNT(*) FROM PackageBases INNER JOIN Users " + - "ON Users.ID = PackageBases.MaintainerUID OR " + - "PackageBases.MaintainerUID IS NULL WHERE " + - "Name = %s AND Username = %s", [pkgbase, user]) + cur.execute("SELECT COUNT(*) FROM PackageBases " + + "LEFT JOIN PackageComaintainers " + + "ON PackageComaintainers.PackageBaseID = PackageBases.ID " + + "INNER JOIN Users ON Users.ID = PackageBases.MaintainerUID " + + "OR PackageBases.MaintainerUID IS NULL " + + "OR Users.ID = PackageComaintainers.UsersID " + + "WHERE Name = %s AND Username = %s", [pkgbase, user]) return cur.fetchone()[0] > 0 def die(msg): diff --git a/scripts/git-integration/git-update.py b/scripts/git-integration/git-update.py index 1ff09b8..b20c0a2 100755 --- a/scripts/git-integration/git-update.py +++ b/scripts/git-integration/git-update.py @@ -47,9 +47,11 @@ def save_srcinfo(srcinfo, db, cur, user): # Update package base details and delete current packages. cur.execute("UPDATE PackageBases SET ModifiedTS = UNIX_TIMESTAMP(), " + - "MaintainerUID = %s, PackagerUID = %s, " + - "OutOfDateTS = NULL WHERE ID = %s", - [user_id, user_id, pkgbase_id]) + "PackagerUID = %s, OutOfDateTS = NULL WHERE ID = %s", + [user_id, pkgbase_id]) + cur.execute("UPDATE PackageBases SET MaintainerUID = %s " + + "WHERE ID = %s AND MaintainerUID IS NULL", + [user_id, pkgbase_id]) cur.execute("DELETE FROM Packages WHERE PackageBaseID = %s", [pkgbase_id]) |