Fix deletion of labels and add tests

This commit is contained in:
Joseph Schorr 2016-08-26 16:07:49 -04:00
parent b3c592c09a
commit 1a2666be07
4 changed files with 151 additions and 105 deletions

View file

@ -57,16 +57,17 @@ def _purge_all_repository_tags(namespace_name, repository_name):
return
# Find all labels to delete.
labels = list(TagManifestLabel
.select(TagManifestLabel.label)
.where(TagManifestLabel.repository == repo))
manifest_labels_query = (TagManifestLabel
.select()
.where(TagManifestLabel.repository == repo))
# Delete all the mapping entries.
TagManifestLabel.delete().where(TagManifestLabel.repository == repo).execute()
label_ids = [manifest_label.label_id for manifest_label in manifest_labels_query]
if label_ids:
# Delete all the mapping entries.
TagManifestLabel.delete().where(TagManifestLabel.repository == repo).execute()
# Delete all the matching labels.
if labels:
Label.delete().where(Label.id << [label.id for label in labels]).execute()
# Delete all the matching labels.
Label.delete().where(Label.id << label_ids).execute()
# Delete all the manifests.
TagManifest.delete().where(TagManifest.tag << repo_tags).execute()