def METHOD_NAME(event: Event, shredders: List[str], session_key=None, cfid=None) -> None:
    known_shredders = event.get_data_shredders()
    with NamedTemporaryFile() as rawfile:
        with ZipFile(rawfile, 'w') as zipfile:
            ccode = get_random_string(6)
            zipfile.writestr(
                'CONFIRM_CODE.txt',
                ccode,
            )
            zipfile.writestr(
                'index.json',
                json.dumps({
                    'instance': settings.SITE_URL,
                    'organizer': event.organizer.slug,
                    'event': event.slug,
                    'time': now().isoformat(),
                    'shredders': shredders,
                    'confirm_code': ccode
                }, indent=4)
            )
            for s in shredders:
                shredder = known_shredders.get(s)
                if not shredder:
                    continue
                it = shredder.generate_files()
                if not it:
                    continue
                for fname, ftype, content in it:
                    zipfile.writestr(fname, content)
        rawfile.seek(0)
        if cfid:
            cf = CachedFile.objects.get(pk=cfid)
        else:
            cf = CachedFile()
            cf.date = now()
            cf.session_key = session_key
            cf.web_download = True
            cf.expires = now() + timedelta(hours=1)
        cf.filename = event.slug + '.zip'
        cf.type = 'application/zip'
        cf.save()
        cf.file.save(cachedfile_name(cf, cf.filename), rawfile)
    return cf.pk