def __init__(self, options={}):
     self._astra = Client(settings.ASTRA_WSDL,
                          transport=HTTPSTransportV3())
     # prepare to map spans of control to campus and college resource values
     self._campuses = get_all_campuses()
     self._colleges = get_all_colleges()
     self._pid = os.getpid()
     self._log = getLogger(__name__)
     self._re_non_academic_code = re.compile(r'^canvas_([0-9]+)$')
     self._canvas_ids = {}
     self._verbosity = int(options.get('verbosity', 0))
    def build(self, **kwargs):
        root_id = getattr(settings, 'SIS_IMPORT_ROOT_ACCOUNT_ID', None)

        for campus in get_all_campuses():
            campus_id = account_sis_id([root_id, campus.label])
            self.data.add(AccountCSV(campus_id, root_id, campus))

        for college in get_all_colleges():
            college_id = account_sis_id(
                [root_id, college.campus_label, college.name])
            campus_id = account_sis_id([root_id, college.campus_label])
            self.data.add(AccountCSV(college_id, campus_id, college))

            for department in get_departments_by_college(college):
                dept_id = account_sis_id([
                    root_id, college.campus_label, college.name,
                    department.label
                ])

                self.data.add(AccountCSV(dept_id, college_id, department))

                for curriculum in get_curricula_by_department(
                        department, future_terms=2, view_unpublished=True):
                    curr_id = account_sis_id([
                        root_id, college.campus_label, college.name,
                        department.label, curriculum.label
                    ])

                    if self.data.add(AccountCSV(curr_id, dept_id, curriculum)):
                        # Update the Curriculum model for this curriculum
                        try:
                            model = Curriculum.objects.get(
                                curriculum_abbr=curriculum.label)
                        except Curriculum.DoesNotExist:
                            model = Curriculum(
                                curriculum_abbr=curriculum.label)

                        model.full_name = account_name(curriculum)
                        model.subaccount_id = curr_id
                        model.save()

        return self._write()
    def build(self, **kwargs):
        root_id = getattr(settings, 'SIS_IMPORT_ROOT_ACCOUNT_ID', None)

        for campus in get_all_campuses():
            campus_id = account_sis_id([root_id, campus.label])
            self.data.add(AccountCSV(campus_id, root_id, campus))

        for college in get_all_colleges():
            college_id = account_sis_id([root_id, college.campus_label,
                                         college.name])
            campus_id = account_sis_id([root_id, college.campus_label])
            self.data.add(AccountCSV(college_id, campus_id, college))

            for department in get_departments_by_college(college):
                dept_id = account_sis_id([root_id, college.campus_label,
                                          college.name, department.label])

                self.data.add(AccountCSV(dept_id, college_id, department))

                for curriculum in get_curricula_by_department(
                        department, future_terms=2):
                    curr_id = account_sis_id([root_id, college.campus_label,
                                              college.name, department.label,
                                              curriculum.label])

                    if self.data.add(AccountCSV(curr_id, dept_id, curriculum)):
                        # Update the Curriculum model for this curriculum
                        try:
                            model = Curriculum.objects.get(
                                curriculum_abbr=curriculum.label)
                        except Curriculum.DoesNotExist:
                            model = Curriculum(
                                curriculum_abbr=curriculum.label)

                        model.full_name = account_name(curriculum)
                        model.subaccount_id = curr_id
                        model.save()

        return self._write()