Skip to content

Commit

Permalink
Merge branch 'beerdeaap-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
palewire committed Feb 12, 2016
2 parents 8235d62 + d82455d commit 5dce1a4
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 4 deletions.
8 changes: 4 additions & 4 deletions postgres_copy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -202,13 +202,13 @@ def prep_insert(self):
)

model_fields = []

for field, header in self.field_header_crosswalk:
if field.db_column:
model_fields.append('"%s"' % field.db_column)
else:
model_fields.append('"%s"' % field.name)
model_fields.append('"%s"' % field.get_attname_column()[1])

for k in self.static_mapping.keys():
model_fields.append('"%s"' % k)

options['model_fields'] = ", ".join(model_fields)

temp_fields = []
Expand Down
4 changes: 4 additions & 0 deletions tests/data/foreignkeys.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
NAME,NUMBER,DATE,PARENT
ben,1,2012-01-01,4
joe,2,2012-01-02,5
jane,3,2012-01-03,6
1 change: 1 addition & 0 deletions tests/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ class MockObject(models.Model):
name = models.CharField(max_length=500)
number = MyIntegerField(null=True, db_column='num')
dt = models.DateField(null=True)
parent = models.ForeignKey('MockObject', null=True)

class Meta:
app_label = 'tests'
Expand Down
31 changes: 31 additions & 0 deletions tests/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ class PostgresCopyTest(TestCase):
def setUp(self):
self.data_dir = os.path.join(os.path.dirname(__file__), 'data')
self.name_path = os.path.join(self.data_dir, 'names.csv')
self.foreign_path = os.path.join(self.data_dir, 'foreignkeys.csv')
self.pipe_path = os.path.join(self.data_dir, 'pipes.csv')
self.null_path = os.path.join(self.data_dir, 'nulls.csv')
self.backwards_path = os.path.join(self.data_dir, 'backwards.csv')
Expand Down Expand Up @@ -70,6 +71,21 @@ def test_simple_save(self):
date(2012, 1, 1)
)

def test_save_foreign_key(self):
c = CopyMapping(
MockObject,
self.foreign_path,
dict(name='NAME', number='NUMBER', dt='DATE', parent='PARENT')
)

c.save()
self.assertEqual(MockObject.objects.count(), 3)
self.assertEqual(MockObject.objects.get(name='BEN').parent_id, 4)
self.assertEqual(
MockObject.objects.get(name='BEN').dt,
date(2012, 1, 1)
)

def test_silent_save(self):
c = CopyMapping(
MockObject,
Expand Down Expand Up @@ -186,3 +202,18 @@ def test_bad_static_values(self):
static_mapping={'static_bad':1,}
)
c.save()

def test_save_foreign_key(self):
c = CopyMapping(
MockObject,
self.foreign_path,
dict(name='NAME', number='NUMBER', dt='DATE', parent='PARENT')
)

c.save()
self.assertEqual(MockObject.objects.count(), 3)
self.assertEqual(MockObject.objects.get(name='BEN').parent_id, 4)
self.assertEqual(
MockObject.objects.get(name='BEN').dt,
date(2012, 1, 1)
)

0 comments on commit 5dce1a4

Please sign in to comment.