Files
@ f7caf1435737
Branch filter:
Location: symposion_app/symposion/sponsorship/management/commands/export_sponsors_data.py - annotation
f7caf1435737
2.5 KiB
text/x-python
Merge pull request #85 from miurahr/export_sponsor_zip
Enhanced sponsorship: export files
Enhanced sponsorship: export files
fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de fbf356b335de | import csv
import os
import shutil
import zipfile
from contextlib import closing
from django.core.management.base import BaseCommand
from django.template.defaultfilters import slugify
from sotmjp.sponsorship.models import Sponsor
def zipdir(basedir, archivename):
assert os.path.isdir(basedir)
with closing(zipfile.ZipFile(archivename, "w", zipfile.ZIP_DEFLATED)) as z:
for root, dirs, files in os.walk(basedir):
#NOTE: ignore empty directories
for fn in files:
absfn = os.path.join(root, fn)
zfn = absfn[len(basedir) + len(os.sep):] # XXX: relative path
z.write(absfn, zfn)
class Command(BaseCommand):
def handle(self, *args, **options):
try:
os.makedirs(os.path.join(os.getcwd(), "build"))
except:
pass
csv_file = csv.writer(
open(os.path.join(os.getcwd(), "build", "sponsors.csv"), "wb")
)
csv_file.writerow(["Name", "URL", "Level", "Description"])
for sponsor in Sponsor.objects.all():
path = os.path.join(os.getcwd(), "build", slugify(sponsor.name))
try:
os.makedirs(path)
except:
pass
data = {
"name": sponsor.name,
"url": sponsor.external_url,
"level": sponsor.level.name,
"description": "",
}
for sponsor_benefit in sponsor.sponsor_benefits.all():
if sponsor_benefit.benefit_id == 2:
data["description"] = sponsor_benefit.text
if sponsor_benefit.benefit_id == 1:
if sponsor_benefit.upload:
data["ad"] = sponsor_benefit.upload.path
if sponsor_benefit.benefit_id == 7:
if sponsor_benefit.upload:
data["logo"] = sponsor_benefit.upload.path
if "ad" in data:
ad_path = data.pop("ad")
shutil.copy(ad_path, path)
if "logo" in data:
logo_path = data.pop("logo")
shutil.copy(logo_path, path)
csv_file.writerow([
data["name"].encode("utf-8"),
data["url"].encode("utf-8"),
data["level"].encode("utf-8"),
data["description"].encode("utf-8")
])
zipdir(
os.path.join(os.getcwd(), "build"),
os.path.join(os.getcwd(), "sponsors.zip"))
|