Index: third_party/gsutil/boto/tests/mturk/cleanup_tests.py |
diff --git a/third_party/gsutil/boto/tests/mturk/cleanup_tests.py b/third_party/gsutil/boto/tests/mturk/cleanup_tests.py |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bda5167514eebbd554168ea700bd7da9e00a192f |
--- /dev/null |
+++ b/third_party/gsutil/boto/tests/mturk/cleanup_tests.py |
@@ -0,0 +1,47 @@ |
+import itertools |
+ |
+from _init_environment import SetHostMTurkConnection |
+from _init_environment import config_environment |
+ |
+def description_filter(substring): |
+ return lambda hit: substring in hit.Title |
+ |
+def disable_hit(hit): |
+ return conn.disable_hit(hit.HITId) |
+ |
+def dispose_hit(hit): |
+ # assignments must be first approved or rejected |
+ for assignment in conn.get_assignments(hit.HITId): |
+ if assignment.AssignmentStatus == 'Submitted': |
+ conn.approve_assignment(assignment.AssignmentId) |
+ return conn.dispose_hit(hit.HITId) |
+ |
+def cleanup(): |
+ """Remove any boto test related HIT's""" |
+ config_environment() |
+ |
+ global conn |
+ |
+ conn = SetHostMTurkConnection() |
+ |
+ |
+ is_boto = description_filter('Boto') |
+ print 'getting hits...' |
+ all_hits = list(conn.get_all_hits()) |
+ is_reviewable = lambda hit: hit.HITStatus == 'Reviewable' |
+ is_not_reviewable = lambda hit: not is_reviewable(hit) |
+ hits_to_process = filter(is_boto, all_hits) |
+ hits_to_disable = filter(is_not_reviewable, hits_to_process) |
+ hits_to_dispose = filter(is_reviewable, hits_to_process) |
+ print 'disabling/disposing %d/%d hits' % (len(hits_to_disable), len(hits_to_dispose)) |
+ map(disable_hit, hits_to_disable) |
+ map(dispose_hit, hits_to_dispose) |
+ |
+ total_hits = len(all_hits) |
+ hits_processed = len(hits_to_process) |
+ skipped = total_hits - hits_processed |
+ fmt = 'Processed: %(total_hits)d HITs, disabled/disposed: %(hits_processed)d, skipped: %(skipped)d' |
+ print fmt % vars() |
+ |
+if __name__ == '__main__': |
+ cleanup() |