def inna_import(request, filename): pretend = True if request.method == "POST": if "commit" in request.POST: pretend = False ip = InnaParser(os.path.join(INNA_ROOT, "%s.csv" % filename), pretend=pretend) error = None try: ip.update() except InnaParserException, e: error = e.message
def testParserIncorrectSeparator(self): parser = InnaParser("student/test_files/inna_invalid_separator.csv", pretend=False) with self.assertRaises(InnaParserException): parser.update()
def testParserMissingValue(self): parser = InnaParser("student/test_files/inna_invalid_missing_value.csv", pretend=False) with self.assertRaises(InnaParserException): parser.update()
def testParserValid(self): self.assertEqual(Student.objects.count(), 0) self.assertEqual(Klass.objects.count(), 0) self.assertEqual(LegalGuardian.objects.count(), 0) # Import year 1 parser = InnaParser("student/test_files/inna_year1.csv", pretend=False) parser.update() self.assertEqual(parser.stats["create"], 2) self.assertEqual(parser.stats["update"], 0) self.assertEqual(parser.stats["delete"], 0) self.assertEqual(Student.objects.count(), 2) self.assertEqual(Klass.objects.count(), 2) self.assertEqual(LegalGuardian.objects.count(), 4) # Import year 1 again, should update parser = InnaParser("student/test_files/inna_year1.csv", pretend=False) parser.update() self.assertEqual(parser.stats["create"], 0) self.assertEqual(parser.stats["update"], 2) self.assertEqual(parser.stats["delete"], 0) # Import year 2, should remove 1, update 1, delete 1 parser = InnaParser("student/test_files/inna_year2.csv", pretend=False) parser.update() self.assertEqual(parser.stats["create"], 1) self.assertEqual(parser.stats["update"], 1) self.assertEqual(parser.stats["delete"], 1) self.assertEqual(Student.objects.count(), 3) self.assertEqual(Klass.objects.count(), 4) self.assertEqual(LegalGuardian.objects.count(), 6) # Import year 2 again, should update parser = InnaParser("student/test_files/inna_year2.csv", pretend=False) parser.update() self.assertEqual(parser.stats["create"], 0) self.assertEqual(parser.stats["update"], 2) self.assertEqual(parser.stats["delete"], 0) # Import year 2 once more, but now from a file with a # missing leading zero in the kennitala field parser = InnaParser("student/test_files/inna_year2_missing_leading_zero.csv", pretend=False) parser.update() self.assertEqual(parser.stats["create"], 0) self.assertEqual(parser.stats["update"], 2) self.assertEqual(parser.stats["delete"], 0) # Verify that the prev student has been deactivated self.assertEqual(Student.objects.filter(status__active=True).count(), 2) self.assertEqual(Student.objects.filter(status__active=False).count(), 1)