parsedmarc/__init__.py
def get_report_zip(results):
    """
    Creates a zip file of parsed report output

    Args:
        results (OrderedDict): The parsed results

    Returns:
        bytes: zip file bytes
    """
    def add_subdir(root_path, subdir):
        subdir_path = os.path.join(root_path, subdir)
        for subdir_root, subdir_dirs, subdir_files in os.walk(subdir_path):
            for subdir_file in subdir_files:
                subdir_file_path = os.path.join(root_path, subdir, subdir_file)
                if os.path.isfile(subdir_file_path):
                    rel_path = os.path.relpath(subdir_root, subdir_file_path)
                    subdir_arc_name = os.path.join(rel_path, subdir_file)
                    zip_file.write(subdir_file_path, subdir_arc_name)
            for subdir in subdir_dirs:
                add_subdir(subdir_path, subdir)

    storage = BytesIO()
    tmp_dir = tempfile.mkdtemp()
    try:
        save_output(results, tmp_dir)
        with zipfile.ZipFile(storage, 'w', zipfile.ZIP_DEFLATED) as zip_file:
            for root, dirs, files in os.walk(tmp_dir):
                for file in files:
                    file_path = os.path.join(root, file)
                    if os.path.isfile(file_path):
                        arcname = os.path.join(os.path.relpath(root, tmp_dir),
                                               file)
                        zip_file.write(file_path, arcname)
                for directory in dirs:
                    dir_path = os.path.join(root, directory)
                    if os.path.isdir(dir_path):
                        zip_file.write(dir_path, directory)
                        add_subdir(root, directory)
    finally:
        shutil.rmtree(tmp_dir)

    return storage.getvalue()
def get_report_zip(results):
    def add_subdir(root_path, subdir):
        subdir_path = os.path.join(root_path, subdir)
        for subdir_root, subdir_dirs, subdir_files in os.walk(subdir_path):
            for subdir_file in subdir_files:
                subdir_file_path = os.path.join(root_path, subdir, subdir_file)
                if os.path.isfile(subdir_file_path):
                    rel_path = os.path.relpath(subdir_root, subdir_file_path)
                    subdir_arc_name = os.path.join(rel_path, subdir_file)
                    zip_file.write(subdir_file_path, subdir_arc_name)
            for subdir in subdir_dirs:
                add_subdir(subdir_path, subdir)

    storage = BytesIO()
    tmp_dir = tempfile.mkdtemp()
    try:
        save_output(results, tmp_dir)
        with zipfile.ZipFile(storage, 'w', zipfile.ZIP_DEFLATED) as zip_file:
            for root, dirs, files in os.walk(tmp_dir):
                for file in files:
                    file_path = os.path.join(root, file)
                    if os.path.isfile(file_path):
                        arcname = os.path.join(os.path.relpath(root, tmp_dir),
                                               file)
                        zip_file.write(file_path, arcname)
                for directory in dirs:
                    dir_path = os.path.join(root, directory)
                    if os.path.isdir(dir_path):
                        zip_file.write(dir_path, directory)
                        add_subdir(root, directory)
    finally:
        shutil.rmtree(tmp_dir)

    return storage.getvalue()
def get_report_zip ( results ) : def add_subdir ( root_path , subdir ) : subdir_path = os . path . join ( root_path , subdir ) for subdir_root , subdir_dirs , subdir_files in os . walk ( subdir_path ) : for subdir_file in subdir_files : subdir_file_path = os . path . join ( root_path , subdir , subdir_file ) if os . path . isfile ( subdir_file_path ) : rel_path = os . path . relpath ( subdir_root , subdir_file_path ) subdir_arc_name = os . path . join ( rel_path , subdir_file ) zip_file . write ( subdir_file_path , subdir_arc_name ) for subdir in subdir_dirs : add_subdir ( subdir_path , subdir ) storage = BytesIO ( ) tmp_dir = tempfile . mkdtemp ( ) try : save_output ( results , tmp_dir ) with zipfile . ZipFile ( storage , 'w' , zipfile . ZIP_DEFLATED ) as zip_file : for root , dirs , files in os . walk ( tmp_dir ) : for file in files : file_path = os . path . join ( root , file ) if os . path . isfile ( file_path ) : arcname = os . path . join ( os . path . relpath ( root , tmp_dir ) , file ) zip_file . write ( file_path , arcname ) for directory in dirs : dir_path = os . path . join ( root , directory ) if os . path . isdir ( dir_path ) : zip_file . write ( dir_path , directory ) add_subdir ( root , directory ) finally : shutil . rmtree ( tmp_dir ) return storage . getvalue ( )
Creates a zip file of parsed report output

    Args:
        results (OrderedDict): The parsed results

    Returns:
        bytes: zip file bytes
Creates a zip file of parsed report output