Merge pull request #2063 from dannon/dryrun

Change user disk usage pgcalc function up a bit to make a slightly sa…
This commit is contained in:
Dannon Baker
2016-03-31 18:52:32 -04:00
+20 -21
View File
@@ -10,25 +10,24 @@ def pgcalc( sa_session, id, dryrun=False ):
TODO: Check against the recently updated versions of sqlalchemy if this
'special' postgresql version is even necessary.
"""
sql = """
UPDATE galaxy_user
SET disk_usage = (SELECT COALESCE(SUM(total_size), 0)
FROM ( SELECT DISTINCT ON (d.id) d.total_size, d.id
FROM history_dataset_association hda
JOIN history h ON h.id = hda.history_id
JOIN dataset d ON hda.dataset_id = d.id
WHERE h.user_id = :id
AND h.purged = false
AND hda.purged = false
AND d.purged = false
AND d.id NOT IN (SELECT dataset_id
FROM library_dataset_dataset_association)
) sizes)
WHERE id = :id
RETURNING disk_usage;
"""
r = sa_session.execute(sql, {'id': id})
new = r.fetchone()[0]
sql_calc = """SELECT COALESCE(SUM(total_size), 0)
FROM ( SELECT DISTINCT ON (d.id) d.total_size, d.id
FROM history_dataset_association hda
JOIN history h ON h.id = hda.history_id
JOIN dataset d ON hda.dataset_id = d.id
WHERE h.user_id = :id
AND h.purged = false
AND hda.purged = false
AND d.purged = false
AND d.id NOT IN (SELECT dataset_id
FROM library_dataset_dataset_association)
) sizes"""
sql_update = """UPDATE galaxy_user
SET disk_usage = (%s)
WHERE id = :id
RETURNING disk_usage;""" % sql_calc
if dryrun:
sa_session.rollback()
return new
r = sa_session.execute(sql_calc, {'id': id})
else:
r = sa_session.execute(sql_update, {'id': id})
return r.fetchone()[0]