def test_export_csv_synonyms(self): """ test exporting a place with synonyms """ assert test_client_login(self.client, username='******', password='******') == True place_type = PlaceType.objects.get(slug='poi') place = Place(pretty_name='Donut Palace', place_type=place_type, address='100 Bubble Street', location=geos.Point(1.0, 2.0)) place.save() ps = PlaceSynonym(pretty_name='Donut Hole', place=place) ps.save() ps = PlaceSynonym(pretty_name='Donut Pally', place=place) ps.save() place = Place(pretty_name='Donut Sanctuary', place_type=place_type, address='101 Bubble Street', location=geos.Point(3.0, 4.0), url='http://www.example.org/bs') place.save() ps = PlaceSynonym(pretty_name='Sancy D', place=place) ps.save() ps = PlaceSynonym(pretty_name='D Sanc', place=place) ps.save() response = self.client.post(self.export_url, {'place_type': place_type.id}) self.assertEqual(response.status_code, 200) rows = csv.reader(StringIO(response.content)) count = 0 for row in rows: self.assertEqual(len(row), 7) synonyms = set(row[5:]) if row[0] == 'Donut Palace': self.assertEqual(row[1], '100 Bubble Street') self.assertEqual(row[2], '2.0') self.assertEqual(row[3], '1.0') self.assertEqual(row[4], '') assert 'Donut Hole' in synonyms assert 'Donut Pally' in synonyms elif row[0] == 'Donut Sanctuary': self.assertEqual(row[1], '101 Bubble Street') self.assertEqual(row[2], '4.0') self.assertEqual(row[3], '3.0') self.assertEqual(row[4], 'http://www.example.org/bs') assert 'Sancy D' in synonyms assert 'D Sanc' in synonyms else: self.fail('Unexpected Place!' % row[0]) count += 1 self.assertEqual(count, 2)
if synonym.pretty_name not in new_synonyms: synonym.delete() message = 'Removing old synonym "%s" for "%s"' % ( synonym.pretty_name, pretty_name) context['actions_taken'].append(message) else: # seen it in the database, don't make a new one new_synonyms.remove(synonym.pretty_name) message = 'Keeping synonym "%s" for "%s"' % ( synonym.pretty_name, pretty_name) context['actions_taken'].append(message) for synonym in new_synonyms: try: ns = PlaceSynonym(pretty_name=synonym, normalized_name=normalize(synonym), place=place) ns.save() message = 'Created new synonym "%s" for "%s"' % ( synonym, pretty_name) context['actions_taken'].append(message) except: message = 'Unable to add synonym "%s" for "%s"' % ( synonym, pretty_name) context['errors'].append(message) return self._show_import_csv_results(request, context) def _show_import_csv_results(self, request, context): return self._render_admin_template( 'admin/streets/place/import_places_csv_result.html', request,