def test_write_files(self, mock_open):
        # Test empty
        csv = Collector()
        self.assertEquals(csv.has_data(), False)
        self.assertEquals(csv.write_files(), None)

        # Test with data
        csv = Collector()
        csv.enrollments.append(1)
        self.assertEquals(csv.has_data(), True)

        with self.settings(SIS_IMPORT_CSV_DEBUG=False):
            path = csv.write_files()
            mock_open.assert_called_with(path + '/enrollments.csv', mode='w')
            self.assertEquals(csv.has_data(), False)
    def test_admins(self):
        formatter = AdminCSV('user_id', 'account_id', 'admin', 'active')

        csv = Collector()
        self.assertEquals(len(csv.admins), 0)
        self.assertEquals(csv.add(formatter), True)
        self.assertEquals(len(csv.admins), 1)
        self.assertEquals(csv.has_data(), True)
    def test_users(self):
        user = PWS().get_person_by_netid('javerage')

        csv = Collector()
        self.assertEquals(len(csv.users), 0)
        self.assertEquals(csv.add(UserCSV(user, 'active')), True)
        self.assertEquals(len(csv.users), 1)
        self.assertEquals(csv.add(UserCSV(user, 'active')), False)
        self.assertEquals(csv.has_data(), True)
    def test_terms(self):
        section = get_section_by_label('2013,summer,TRAIN,101/A')
        formatter = TermCSV(section)

        csv = Collector()
        self.assertEquals(len(csv.terms), 0)
        self.assertEquals(csv.add(formatter), True)
        self.assertEquals(len(csv.terms), 1)
        self.assertEquals(csv.add(formatter), False)
        self.assertEquals(csv.has_data(), True)
    def test_accounts(self):
        context = Curriculum(full_name='abc')
        formatter = AccountCSV('account_id', 'parent_id', context)

        csv = Collector()
        self.assertEquals(len(csv.accounts), 0)
        self.assertEquals(csv.add(formatter), True)
        self.assertEquals(len(csv.accounts), 1)
        self.assertEquals(csv.add(formatter), False)
        self.assertEquals(csv.has_data(), True)
    def test_enrollments(self):
        user = PWS().get_person_by_netid('javerage')

        csv = Collector()
        self.assertEquals(len(csv.enrollments), 0)
        self.assertEquals(
            csv.add(
                EnrollmentCSV(section_id='abc',
                              person=user,
                              role='Student',
                              status='active')), True)
        self.assertEquals(len(csv.enrollments), 1)

        section = get_section_by_label('2013,winter,DROP_T,100/B')
        for registration in get_registrations_by_section(section):
            self.assertEquals(
                csv.add(EnrollmentCSV(registration=registration)), True)
        self.assertEquals(len(csv.enrollments), 3)

        section = get_section_by_label('2013,spring,TRAIN,101/A')
        for user in section.get_instructors():
            self.assertEquals(
                csv.add(
                    EnrollmentCSV(section=section,
                                  instructor=user,
                                  status='active')), True)

            # Duplicate
            self.assertEquals(
                csv.add(
                    EnrollmentCSV(section=section,
                                  instructor=user,
                                  status='active')), False)

        self.assertEquals(len(csv.enrollments), 5)
        self.assertEquals(csv.has_data(), True)

        # Ad-hoc enrollment
        self.assertEquals(
            csv.add(
                EnrollmentCSV(course_id='course_123',
                              section_id='section_123',
                              person=user,
                              role='Observer',
                              status='active')), True)
        self.assertEquals(len(csv.enrollments), 6)

        # Duplicate
        self.assertEquals(
            csv.add(
                EnrollmentCSV(course_id='course_123',
                              section_id='section_123',
                              person=user,
                              role='Observer',
                              status='active')), False)
    def test_courses(self):
        section = get_section_by_label('2013,spring,TRAIN,101/A')
        section.course_campus = 'PCE'
        formatter = CourseCSV(section=section)

        csv = Collector()
        self.assertEquals(len(csv.courses), 0)
        self.assertEquals(csv.add(formatter), True)
        self.assertEquals(len(csv.courses), 1)
        self.assertEquals(csv.add(formatter), False)
        self.assertEquals(csv.has_data(), True)
    def handle(self, *args, **options):
        file_path = options.get('file_path')
        workshop_name = options.get('workshop_name')
        term_sis_id = options.get('term_sis_id')
        account_sis_id = options.get('account_sis_id')

        with open(file_path, 'r') as infile:
            file_data = infile.read()
        netids = file_data.splitlines()

        csvdata = Collector()

        for netid in netids:
            try:
                person = get_person_by_netid(netid.strip())
            except UserPolicyException as err:
                print("Skipped user '{}': {}".format(netid, err))
                continue

            if not csvdata.add(UserCSV(person)):
                continue

            course_sis_id = '-'.join([
                term_sis_id,
                re.sub(r'[^\w]', '-', workshop_name.lower()), person.uwnetid
            ])
            short_name = '{} {}'.format(date.today().year, workshop_name)
            long_name = '{} Sandbox'.format(short_name)

            csvdata.add(
                CourseCSV(course_id=course_sis_id,
                          short_name=short_name,
                          long_name=long_name,
                          account_id=account_sis_id,
                          term_id=term_sis_id,
                          status='active'))

            csvdata.add(
                EnrollmentCSV(course_id=course_sis_id,
                              person=person,
                              role=get_instructor_sis_import_role(),
                              status=ENROLLMENT_ACTIVE))

        csv_path = csvdata.write_files()

        if csv_path:
            imp = Import(priority=Course.PRIORITY_DEFAULT,
                         csv_type='course',
                         csv_path=csv_path)
            imp.save()
            imp.import_csv()
    def test_sections(self):
        section = get_section_by_label('2013,spring,TRAIN,101/A')
        formatter = SectionCSV(section=section)

        csv = Collector()
        self.assertEquals(len(csv.sections), 0)
        self.assertEquals(csv.add(formatter), True)
        self.assertEquals(len(csv.sections), 1)
        self.assertEquals(csv.add(formatter), False)
        self.assertEquals(
            csv.add(
                SectionCSV(section_id='abc',
                           course_id='abc',
                           name='abc',
                           status='active')), True)
        self.assertEquals(len(csv.sections), 2)
        self.assertEquals(csv.has_data(), True)
Beispiel #10
0
 def __init__(self, items=[]):
     self.data = Collector()
     self.queue_id = None
     self.invalid_users = {}
     self.items = items
     self.logger = getLogger(__name__)
 def test_invalid_format(self):
     csv = Collector()
     self.assertRaises(TypeError, csv.add, InvalidFormat)
     self.assertEquals(csv.has_data(), False)
 def test_xlists(self):
     csv = Collector()
     self.assertEquals(len(csv.xlists), 0)
     self.assertEquals(csv.add(XlistCSV('abc', 'def')), True)
     self.assertEquals(len(csv.xlists), 1)
     self.assertEquals(csv.has_data(), True)