Example #1
0
 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)
Example #2
0
 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
     )
Example #3
0
    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)
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
 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()
Example #7
0
    def testImport(self):
        testimport = SpreadsheetImport(StringIO(csv_file), [self.collection])

        self.assertFalse(testimport.analyzed)

        data = testimport.analyze()

        self.assertTrue(testimport.analyzed)
Example #8
0
 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()
Example #9
0
    def testImport(self):
        testimport = SpreadsheetImport(StringIO(csv_file), [self.collection])

        self.assertFalse(testimport.analyzed)

        data = testimport.analyze()

        self.assertTrue(testimport.analyzed)
Example #10
0
    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'))
Example #11
0
    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'))
Example #12
0
    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'))
Example #13
0
    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())
Example #14
0
    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())