Esempio n. 1
0
    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)
Esempio n. 2
0
                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,