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,
new_synonyms = set(synonyms) for synonym in PlaceSynonym.objects.filter(place=place).all(): 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',
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)
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}) assert response.status_code == 200 rows = csv.reader(StringIO(response.content)) count = 0 for row in rows: assert len(row) == 7 synonyms = set(row[5:]) if row[0] == 'Donut Palace': assert row[1] == '100 Bubble Street' assert row[2] == '2.0' assert row[3] == '1.0' assert row[4] == '' assert 'Donut Hole' in synonyms assert 'Donut Pally' in synonyms elif row[0] == 'Donut Sanctuary': assert row[1] == '101 Bubble Street' assert row[2] == '4.0' assert row[3] == '3.0' assert row[4] == 'http://www.example.org/bs' assert 'Sancy D' in synonyms assert 'D Sanc' in synonyms else: assert 0, 'Unexpected Place!' count += 1 assert count == 2