#!/usr/bin/env python2
#
# $ ./bin/kofactl debug
# >>> import sys; sys.path.append("."); import dumper; dumper.export_all(root)
#

import glob
import os
from zope.component.hooks import setSite

from waeup.kofa.university.export import(
        FacultyExporter,
        DepartmentExporter,
        CourseExporter,
        CertificateExporter,
        CertificateCourseExporter,
    )
from waeup.kofa.students.export import (
        FirstStudentStudyCourseExporter,
        SecondStudentStudyCourseExporter,
        FirstStudentStudyLevelExporter,
        SecondStudentStudyLevelExporter,
        FirstCourseTicketExporter,
        SecondCourseTicketExporter,
        BedTicketExporter,
        get_students,)
from waeup.kofa.applicants.export import (
        ApplicantsContainerExporter)
from waeup.kofa.hostels.export import (
        HostelExporter,
        BedExporter)
from waeup.kofa.documents.export import (
        PDFDocumentExporter, HTMLDocumentExporter, RESTDocumentExporter)
from waeup.kofa.accesscodes.export import (
        AccessCodeBatchExporter, AccessCodeExporter)
from waeup.kofa.userscontainer import UserExporter
from waeup.kofa.configuration import ConfigurationContainerExporter

from waeup.uniben.applicants.export import (
        CustomApplicantExporter,
        CustomApplicantPaymentExporter,
        )
from waeup.uniben.students.export import (
        CustomStudentExporter,
        CustomStudentPaymentExporter,
        CustomStudentStudyCourseExporter,
        CustomStudentStudyLevelExporter,
        CustomCourseTicketExporter,
        )
try:
  from waeup.uniben.configuration import CustomSessionConfigurationExporter as SessionConfigurationExporter
except:
  from waeup.kofa.configuration import SessionConfigurationExporter

try:
  from waeup.uniben.applicants import CustomApplicantRefereeReportExporter as ApplicantRefereeReportExporter
except:
  from waeup.kofa.applicants.export import ApplicantRefereeReportExporter

try:
  from waeup.uniben.applicants import CustomApplicantPaymentExporter as ApplicantPaymentExporter
except:
  from kofacustom.nigeria.applicants.export import NigeriaApplicantPaymentExporter as ApplicantPaymentExporter


exporter_klasses = [

    HostelExporter,
    BedExporter,
    PDFDocumentExporter,
    HTMLDocumentExporter,
    RESTDocumentExporter,
    AccessCodeBatchExporter,
    AccessCodeExporter,
    SessionConfigurationExporter,
    UserExporter,
    ConfigurationContainerExporter,

    FacultyExporter,
    DepartmentExporter,
    CourseExporter,
    CertificateExporter,
    CertificateCourseExporter,

    ApplicantsContainerExporter,
    CustomApplicantExporter,
    ApplicantPaymentExporter,
    ApplicantRefereeReportExporter,

    CustomStudentExporter,
    CustomStudentPaymentExporter,
    CustomStudentStudyCourseExporter,
    CustomStudentStudyLevelExporter,
    CustomCourseTicketExporter,
    BedTicketExporter,

    FirstStudentStudyCourseExporter,
    SecondStudentStudyCourseExporter,
    FirstStudentStudyLevelExporter,
    SecondStudentStudyLevelExporter,
    FirstCourseTicketExporter,
    SecondCourseTicketExporter,
    ]

exporter_klasses = [
    FacultyExporter,
    DepartmentExporter,
    CourseExporter,
    CertificateExporter,
    CertificateCourseExporter,
    ]

def export_all(root):
    site = root["uniben"]
    setSite(site)
    for klass in exporter_klasses:
        c_name = "export_" + getattr(klass, "grokcore.component.directive.name")
        print(c_name)
        outfile = "csvdata/%s.csv" % c_name
        exporter = klass()
        print("Dump data to %s..." % outfile)
        exporter.export_all(site, outfile)
        #try:
        #    exporter.export_all(site, outfile)
        #except:
        #    print("CRASHED: " + c_name)
        #    if outfile in glob.glob("csvdata/*.csv"):
        #        os.remove(outfile)


