def _get_department_from_code(self, college, code):
        depts = get_departments_by_college(college)
        for dept in depts:
            if dept.label.lower() == code.lower():
                return dept

        raise ASTRAException('Unknown Department Code: %s' % code)
    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()