def test_import_from_csv_url(csvfile, monkeypatch, teacher): monkeypatch.setattr(urllib, 'urlopen', lambda url: open(csvfile)) created, found = bulk.import_from_csv( teacher, 'http://example.com/fake.csv') assert [p.name for p in created] == ['First Person', 'Second Person'] assert found == [] assert Profile.objects.count() == 5
def test_skip_found(csvfile, teacher): p = f.ProfileFactory.create(name='Second Person', phone='+13336660000') s = f.ProfileFactory.create(name='Second Person') f.RelationshipFactory.create(to_profile=s, from_profile=teacher) f.RelationshipFactory.create(to_profile=s, from_profile=p) created, found = bulk.import_from_csv(teacher, csvfile) assert [p.name for p in created] == ['First Person'] assert [p.name for p in found] == ['Second Person'] assert Profile.objects.count() == 5
def test_import_from_csv_file(csvfile, teacher): created, found = bulk.import_from_csv(teacher, csvfile) assert [p.name for p in created] == ['First Person', 'Second Person'] assert [ {g.name for g in p.students[0].student_in_groups.all()} for p in created ] == [{'groupA'}, {'groupB', 'groupA'}] assert found == [] assert Profile.objects.count() == 5
def handle(self, *args, **options): verbosity = int(options.get('verbosity', 1)) if len(args) == 2: teacher_email, fn = args source_phone = None elif len(args) == 3: teacher_email, fn, source_phone = args else: raise CommandError( "import_users accepts two or three arguments.") try: teacher = Profile.objects.get(user__email=teacher_email) except Profile.DoesNotExist: raise CommandError( "Teacher with email %r not found." % teacher_email) if verbosity: self.stdout.write("\nLoading %s for %r:\n" % (fn, teacher_email)) created, found = import_from_csv(teacher, fn, source_phone) if verbosity: for p in created: self.stdout.write(" Created %s.\n" % p.name) for p in found: self.stdout.write(" Found %s.\n" % p.name)
def test_set_source_phone(csvfile, teacher): created, found = bulk.import_from_csv(teacher, csvfile, '+13216540987') assert [p.source_phone for p in created] == ['+13216540987', '+13216540987']