Files @ f56ce514599a
Branch filter:

Location: symposion_app/symposion/sponsorship/management/commands/export_sponsors_data.py - annotation

Scott Bragg
Merge pull request #18 from lca2017/chrisjrn/017-cfp-models-and-forms

CFP models and forms
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"))