Last active
December 14, 2015 19:09
-
-
Save bobsilverberg/5134679 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import requests | |
import json | |
import argparse | |
# parse the arguments | |
parser = argparse.ArgumentParser() | |
parser.add_argument("user", | |
help="moztrap username") | |
parser.add_argument("api_key", | |
help="moztrap api_key for user") | |
parser.add_argument("--url", | |
help="url for the moztrap server. " + | |
"(default: https://moztrap-dev.allizom.org", | |
default="https://moztrap-dev.allizom.org") | |
parser.add_argument("--search_term", | |
help="term to look for in product's name. (default 'Test Product ')", | |
default="Test Product ") | |
parser.add_argument("--limit", | |
type=int, | |
help="only delete the first X items") | |
args = parser.parse_args() | |
# some things we need | |
uri = "api/v1/product" | |
get_params = { | |
'format': "json", | |
'limit': 100, | |
'name__startswith': args.search_term, | |
} | |
delete_params = { | |
'username': args.user, | |
'api_key': args.api_key, | |
'permanent': True, | |
} | |
# find all of the products that meet the criteria | |
response = requests.get("%s/%s" % (args.url, uri), params=get_params) | |
response.raise_for_status() | |
text = json.loads(response.text) | |
objects = text["objects"] | |
next = (not args.limit or len(objects) < args.limit) and text["meta"]["next"] | |
while next: | |
response = requests.get("%s/%s" % (args.url, next)) | |
response.raise_for_status() | |
text = json.loads(response.text) | |
objects.extend(text["objects"]) | |
next = (not args.limit or len(objects) < args.limit) and text["meta"]["next"] | |
# delete them | |
print "%s products to delete:" % len(objects) | |
number = 0 | |
for prod in objects: | |
response = requests.delete("%s/%s/%s" % (args.url, uri, prod['id']), params=delete_params) | |
if response.status_code != 204: | |
print "Failed to delete %s.\n%s\nTerminating script." % (prod['name'], response.text) | |
exit(1) | |
else: | |
print "Deleted %s" % prod['name'] | |
number = number + 1 | |
if args.limit and number >= args.limit: | |
print "Reached limit for deleting %s products" % args.limit | |
break | |
print "Deleted %s products." % number |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment