def get_commits(args): """ Main function to mine commits """ repo_path = args.repo_path file_extension = args.file_extension # dictionary to store snapshots of methods from previous commits existing_methods = dict() # stores csv entries csv_data = list() for commit in RepositoryMining(repo_path, only_modifications_with_file_types=[ file_extension ]).traverse_commits(): # retrieve files with extn 'file_extension' that were modified in current commit current_modified_files = get_modified_files(commit, file_extension) # fetch entries for csv report data_to_add = fetch(args, commit, current_modified_files, existing_methods) # accumulate csv report data for d in data_to_add: csv_data.append(d) # generate csv report csv_report(args, repo_path, csv_data)
def snapshot_query(query_id): logger.info("Starting snapshot for query %s..." % query_id) q = Query.objects.get(pk=query_id) r = csv_report(q) k = 'query-%s.snap-%s.csv' % (q.id, date.today().strftime('%Y%m%d-%H:%M:%S')) logger.info("Uploading snapshot for query %s as %s..." % (query_id, k)) resp = _upload(k, r) logger.info("Done uploading snapshot for query %s. URL: %s" % (query_id, resp.url))
def _build_zip(queries): temp = tempfile.TemporaryFile() zip_file = ZipFile(temp, 'w') for r in queries: zip_file.writestr('%s.csv' % r.title, csv_report(r) or "Error!") zip_file.close() ret = FileWrapper(temp) temp.seek(0) return ret
def execute_query(query_id, email_address): q = Query.objects.get(pk=query_id) r = csv_report(q) random_part = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(20)) resp = _upload('%s.csv' % random_part, r) subj = '[SQL Explorer] Report "%s" is ready' % q.title msg = 'Download results:\n\r%s' % resp.url send_mail(subj, msg, app_settings.FROM_EMAIL, [email_address])
def _package(queries): ret = {} is_one = len(queries) == 1 name_root = lambda n: "attachment; filename=%s" % n ret["content_type"] = (is_one and 'text/csv') or 'application/zip' ret["filename"] = (is_one and name_root('%s.csv' % queries[0].title.replace(',', ''))) or name_root( "Report_%s.zip" % date.today()) ret["data"] = (is_one and csv_report(queries[0])) or _build_zip(queries) ret["length"] = (is_one and len(ret["data"]) or ret["data"].blksize) return ret