Skip to content

Instantly share code, notes, and snippets.

@bobsilverberg
Created March 11, 2013 15:04
Show Gist options
  • Save bobsilverberg/5134863 to your computer and use it in GitHub Desktop.
Save bobsilverberg/5134863 to your computer and use it in GitHub Desktop.
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 = 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 = 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
exit(0)
print "Deleted %s products." % number
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment