def testSplitValuesImport(self): testimport = SpreadsheetImport( StringIO("ID,Split,NoSplit\nA999,a;b,a;b"), [self.collection]) testimport.analyze() dc = dict( identifier=Field.objects.get(name='identifier', standard__prefix='dc'), title=Field.objects.get(name='title', standard__prefix='dc'), creator=Field.objects.get(name='creator', standard__prefix='dc'), ) testimport.mapping = { 'ID': dc['identifier'], 'Split': dc['title'], 'NoSplit': dc['creator'], } testimport.name_field = 'ID' testimport.separate_fields = { 'Split': True, } testimport.run() r = self.collection.records.get(name='A999'.lower()) self.assertEqual( 'a', r.fieldvalue_set.filter( field=testimport.mapping['Split'])[0].value) self.assertEqual( 'b', r.fieldvalue_set.filter( field=testimport.mapping['Split'])[1].value) self.assertEqual( 'a;b', r.fieldvalue_set.filter( field=testimport.mapping['NoSplit'])[0].value)
def test_split_values_import(self): testimport = SpreadsheetImport( StringIO("ID,Split,NoSplit\nA999,a;b,a;b"), [self.collection]) testimport.analyze() dc = dict( identifier=Field.objects.get( name='identifier', standard__prefix='dc'), title=Field.objects.get(name='title', standard__prefix='dc'), creator=Field.objects.get(name='creator', standard__prefix='dc'), ) testimport.mapping = { 'ID': dc['identifier'], 'Split': dc['title'], 'NoSplit': dc['creator'], } testimport.name_field = 'ID' testimport.separate_fields = { 'Split': True, } testimport.run() r = self.collection.records.get(name='A999'.lower()) self.assertEqual( 'a', r.fieldvalue_set.filter(field=testimport.mapping['Split'])[0].value ) self.assertEqual( 'b', r.fieldvalue_set.filter(field=testimport.mapping['Split'])[1].value ) self.assertEqual( 'a;b', r.fieldvalue_set.filter( field=testimport.mapping['NoSplit'])[0].value )
def testImportSimple(self): testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) self.assertEqual(0, self.collection.records.count()) testimport.analyze() dc = dict( identifier=Field.objects.get(name='identifier', standard__prefix='dc'), title=Field.objects.get(name='title', standard__prefix='dc'), creator=Field.objects.get(name='creator', standard__prefix='dc'), coverage=Field.objects.get(name='coverage', standard__prefix='dc'), ) testimport.mapping = { 'ID': dc['identifier'], 'Filename': None, 'Title': dc['title'], 'Creator': dc['creator'], 'Location': dc['coverage'], } testimport.name_field = 'ID' self.assertNotEqual(None, testimport.get_identifier_field()) testimport.run() self.assertEquals(2, self.collection.records.count()) r1 = self.collection.records.get(name='A001'.lower()) self.assertEqual('A001', r1.fieldvalue_set.get(field=dc['identifier']).value)
def testImportSimple(self): no_signals() testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) self.assertEqual(0, self.collection.records.count()) testimport.analyze() dc = dict( identifier=Field.objects.get(name='identifier', standard__prefix='dc'), title=Field.objects.get(name='title', standard__prefix='dc'), creator=Field.objects.get(name='creator', standard__prefix='dc'), coverage=Field.objects.get(name='coverage', standard__prefix='dc'), ) testimport.mapping = { 'ID': dc['identifier'], 'Filename': None, 'Title': dc['title'], 'Creator': dc['creator'], 'Location': dc['coverage'], } testimport.name_field = 'ID' self.assertNotEqual(None, testimport.get_identifier_field()) testimport.run() self.assertEquals(2, self.collection.records.count()) r1 = self.collection.records.get(name='A001'.lower()) self.assertEqual('A001', r1.fieldvalue_set.get(field=dc['identifier']).value)
def test_no_bom(self): """Make sure the import can handle the lack of BOM at the beginning of some UTF-8 files""" testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) testimport.analyze() self.assertTrue('ID' in testimport.mapping) self.assertTrue('Filename' in testimport.mapping) self.assertTrue('Unused' in testimport.mapping) self.assertTrue('Title' in testimport.mapping) self.assertTrue('Creator' in testimport.mapping) self.assertTrue('Location' in testimport.mapping)
def analyze(collections=None, separator=None, separate_fields=None, fieldset=None): try: with open(os.path.join(_get_scratch_dir(), _get_filename(request, file)), 'rU') as csvfile: imp = SpreadsheetImport(csvfile, collections, separator=separator, separate_fields=separate_fields, preferred_fieldset=fieldset) return imp, imp.analyze() except IOError: raise Http404()
def testImport(self): testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) self.assertFalse(testimport.analyzed) data = testimport.analyze() self.assertTrue(testimport.analyzed)
def testNoBOM(self): """Make sure the import can handle the lack of BOM at the beginning of some UTF-8 files""" testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) data = testimport.analyze() self.assertTrue(testimport.mapping.has_key('ID')) self.assertTrue(testimport.mapping.has_key('Filename')) self.assertTrue(testimport.mapping.has_key('Unused')) self.assertTrue(testimport.mapping.has_key('Title')) self.assertTrue(testimport.mapping.has_key('Creator')) self.assertTrue(testimport.mapping.has_key('Location'))
def testNoBOM(self): """Make sure the import can handle the lack of BOM at the beginning of some UTF-8 files""" no_signals() testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) data = testimport.analyze() self.assertTrue(testimport.mapping.has_key('ID')) self.assertTrue(testimport.mapping.has_key('Filename')) self.assertTrue(testimport.mapping.has_key('Unused')) self.assertTrue(testimport.mapping.has_key('Title')) self.assertTrue(testimport.mapping.has_key('Creator')) self.assertTrue(testimport.mapping.has_key('Location'))
def testBOM(self): """Make sure the import can handle the BOM at the beginning of some UTF-8 files""" BOM = "\xef\xbb\xbf" testimport = SpreadsheetImport(StringIO(BOM + csv_file), [self.collection]) data = testimport.analyze() self.assertTrue(testimport.mapping.has_key('ID')) self.assertTrue(testimport.mapping.has_key('Filename')) self.assertTrue(testimport.mapping.has_key('Unused')) self.assertTrue(testimport.mapping.has_key('Title')) self.assertTrue(testimport.mapping.has_key('Creator')) self.assertTrue(testimport.mapping.has_key('Location'))
def testAnalyze(self): testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) self.assertFalse(testimport.analyzed) data = testimport.analyze() self.assertTrue(testimport.analyzed) self.assertEqual(2, len(data)) self.assertEqual('A001', data[0]['ID'][0]) self.assertEqual('a001.jpg', data[0]['Filename'][0]) self.assertEqual('Test', data[0]['Title'][0]) self.assertEqual('Knab, Andreas', data[0]['Creator'][0]) self.assertEqual('Harrisonburg, VA', data[0]['Location'][0]) self.assertEqual(None, data[0]['Unused']) self.assertEqual('A002', data[1]['ID'][0]) self.assertEqual('a002.jpg', data[1]['Filename'][0]) self.assertEqual('Another Test', data[1]['Title'][0]) self.assertEqual('Andreas Knab;John Doe', data[1]['Creator'][0]) self.assertEqual('Virginia', data[1]['Location'][0]) self.assertEqual(None, data[1]['Unused']) # These don't match anything self.assertEqual(None, testimport.mapping['ID']) self.assertEqual(None, testimport.mapping['Filename']) self.assertEqual(None, testimport.mapping['Unused']) # These should match standards fields self.assertNotEqual(None, testimport.mapping['Title']) self.assertNotEqual(None, testimport.mapping['Creator']) self.assertNotEqual(None, testimport.mapping['Location']) self.assertEqual(None, testimport.get_identifier_field()) # Map the ID field and try again testimport.mapping['ID'] = Field.objects.get(name='identifier', standard__prefix='dc') self.assertEqual('ID', testimport.get_identifier_field())
def test_analyze(self): testimport = SpreadsheetImport(StringIO(csv_file), [self.collection]) self.assertFalse(testimport.analyzed) data = testimport.analyze() self.assertTrue(testimport.analyzed) self.assertEqual(2, len(data)) self.assertEqual('A001', data[0]['ID'][0]) self.assertEqual('a001.jpg', data[0]['Filename'][0]) self.assertEqual('Test', data[0]['Title'][0]) self.assertEqual('Knab, Andreas', data[0]['Creator'][0]) self.assertEqual('Harrisonburg, VA', data[0]['Location'][0]) self.assertEqual(None, data[0]['Unused']) self.assertEqual('A002', data[1]['ID'][0]) self.assertEqual('a002.jpg', data[1]['Filename'][0]) self.assertEqual('Another Test', data[1]['Title'][0]) self.assertEqual('Andreas Knab;John Doe', data[1]['Creator'][0]) self.assertEqual('Virginia', data[1]['Location'][0]) self.assertEqual(None, data[1]['Unused']) # These don't match anything self.assertEqual(None, testimport.mapping['ID']) self.assertEqual(None, testimport.mapping['Filename']) self.assertEqual(None, testimport.mapping['Unused']) # These should match standards fields self.assertNotEqual(None, testimport.mapping['Title']) self.assertNotEqual(None, testimport.mapping['Creator']) self.assertNotEqual(None, testimport.mapping['Location']) self.assertEqual(None, testimport.get_identifier_field()) # Map the ID field and try again testimport.mapping['ID'] = Field.objects.get( name='identifier', standard__prefix='dc') self.assertEqual('ID', testimport.get_identifier_field())