Skip to content

Commit

Permalink
"purge-revisions" removed as its not been in the UI for a long while
Browse files Browse the repository at this point in the history
  • Loading branch information
David Read committed Jul 19, 2019
1 parent ac34d15 commit 7ad68f3
Showing 1 changed file with 34 additions and 39 deletions.
73 changes: 34 additions & 39 deletions ckan/views/admin.py
Expand Up @@ -149,7 +149,6 @@ def get(self):
return base.render(u'admin/trash.html', extra_vars=data)

def post(self):

deleted_revisions = model.Session.query(
model.Revision).filter_by(state=model.State.DELETED)
# NB: we repeat retrieval of of revisions
Expand All @@ -158,44 +157,40 @@ def post(self):
# purge packages) of form: "this object already exists in the
# session"
msgs = []
if (u'purge-packages' in request.form) or (
u'purge-revisions' in request.form):
if u'purge-packages' in request.form:
# Delete the packages first
for pkg in self.deleted_packages:
logic.get_action(u'dataset_purge')(
{u'user': g.user}, {u'id': pkg.id})
model.Session.remove()

# Delete associated revisions
revs_to_purge = []
for pkg in self.deleted_packages:
revisions = [x[0] for x in pkg.all_related_revisions]
# ensure no accidental purging of other(non-deleted)
# packages initially just avoided purging revisions
# where non-deleted packages were affected
# however this lead to confusing outcomes e.g.
# we succesfully deleted revision in which package
# was deleted (so package now active again) but no
# other revisions
problem = False
for r in revisions:
affected_pkgs = set(r.packages).\
difference(set(self.deleted_packages))
if affected_pkgs:
msg = _(u'Cannot purge package %s as '
u'associated revision %s includes '
u'non-deleted packages %s')
msg = msg % (pkg.id, r.id,
[pkg.id for r in affected_pkgs])
msgs.append(msg)
problem = True
break
if not problem:
revs_to_purge += [r.id for r in revisions]
model.Session.remove()
else:
revs_to_purge = [rev.id for rev in deleted_revisions]
if (u'purge-packages' in request.form):
# Delete the packages first
for pkg in self.deleted_packages:
logic.get_action(u'dataset_purge')(
{u'user': g.user}, {u'id': pkg.id})
model.Session.remove()

# Delete associated revisions
revs_to_purge = []
for pkg in self.deleted_packages:
revisions = [x[0] for x in pkg.all_related_revisions]
# ensure no accidental purging of other(non-deleted)
# packages initially just avoided purging revisions
# where non-deleted packages were affected
# however this lead to confusing outcomes e.g.
# we succesfully deleted revision in which package
# was deleted (so package now active again) but no
# other revisions
problem = False
for r in revisions:
affected_pkgs = set(r.packages).\
difference(set(self.deleted_packages))
if affected_pkgs:
msg = _(u'Cannot purge package %s as '
u'associated revision %s includes '
u'non-deleted packages %s')
msg = msg % (pkg.id, r.id,
[pkg.id for r in affected_pkgs])
msgs.append(msg)
problem = True
break
if not problem:
revs_to_purge += [r.id for r in revisions]
model.Session.remove()
revs_to_purge = list(set(revs_to_purge))
for id in revs_to_purge:
revision = model.Session.query(model.Revision).get(id)
Expand Down

0 comments on commit 7ad68f3

Please sign in to comment.