Пример #1
0
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)
Пример #2
0
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))
Пример #3
0
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
Пример #4
0
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])
Пример #5
0
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