コード例 #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)
コード例 #2
0
ファイル: tests.py プロジェクト: peudadayusuf/openblock
    def test_export_csv(self):
        """
        test exporting a place type as csv
        """
        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()
        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()

        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) == 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] == ''
            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'
            else:
                assert 0, 'Unexpected Place!'
            count += 1

        assert count == 2
コード例 #3
0
    def _update_place(self, listing):

        place_name = listing.get('name')
        location = listing.get('location')
        address = listing.get('address1')         
        
        if not location:
            if not address: 
                log.info("Skipping listing %s with no location" % place_name)
                return
            
            log.info("Geocoding address for place %s (%s)" % (place_name, address))
            try:
                result = SmartGeocoder().geocode(address)
                location = result['point']
            except:
                log.info('skipping listing %s with unknown address %s' % (place_name, address))
                return 
    
        # try to find or create the 'place type' for this place
        type_slug = listing.get('business_type', {}).get('codename')
        try: 
            place_type = PlaceType.objects.get(slug=type_slug)
        except PlaceType.DoesNotExist: 
            type_name = listing.get('business_type', {}).get('name')
            log.info("Creating new place type %s (%s)" % (type_slug, type_name))
            if type_name[0].lower() in ('a','e','i','o','u'): 
                article = 'an'
            else: 
                article = 'a'

            place_type = PlaceType(slug=type_slug, name=type_name, 
                                   plural_name=type_name,
                                   indefinite_article=article)
            place_type.save()

        url = listing.get('absolute_url')
        url = self.BASE_LINK + url
        try: 
            place = Place.objects.get(url=url)
            log.info("updating place %s" % listing.get('name'))
        except Place.DoesNotExist:
            log.info("creating place %s" % listing.get('name'))
            place = Place(url=url)

        place.place_type = place_type
        place.pretty_name = listing.get('name')
        place.location = location
        place.address = address
        place.save()
コード例 #4
0
ファイル: tests.py プロジェクト: mesrut/openblock
 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
コード例 #5
0
ファイル: tests.py プロジェクト: IdahoInstitute/openblock
    def test_export_csv(self):
        """
        test exporting a place type as csv
        """
        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()
        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()

        
        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:
            self.assertEqual(len(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], '')
            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')
            else: 
                self.fail('Unexpected Place! %s' % row[0])
            count += 1

        self.assertEqual(count, 2)
コード例 #6
0
ファイル: admin.py プロジェクト: slinkp/openblock
        except Exception, e:
            message = "Stopped on line %d: %s" % (rows.line_num, e)
            context['errors'].append(message)
            return self._show_import_csv_results(request, context)

        # wonderful, now do something...
        for pretty_name, address, point, place_url, synonyms in validated_rows:
            normalized_name = normalize(pretty_name)

            try:
                place = Place.objects.get(normalized_name=normalized_name,
                                          location__distance_lte=(point,
                                                                  D(m=1)))
                created = False
            except Place.DoesNotExist:
                place = Place(normalized_name=normalized_name)
                created = True

            try:
                place.pretty_name = pretty_name
                place.address = address
                place.location = point
                place.url = place_url
                place.place_type = place_type
                place.save()

                if created:
                    message = 'Created new place %s' % (pretty_name)
                else:
                    message = 'Updated place %s' % (pretty_name)
                context['actions_taken'].append(message)
コード例 #7
0
ファイル: admin.py プロジェクト: DotNetWebs/openblock
        except Exception, e:
            message = "Stopped on line %d: %s" % (rows.line_num, e)
            context['errors'].append(message)
            return self._show_import_csv_results(request, context)
        
        
        # wonderful, now do something...
        for pretty_name, address, point, place_url, synonyms in validated_rows: 
            normalized_name = normalize(pretty_name)
            
            try: 
                place = Place.objects.get(normalized_name=normalized_name,
                                          location__distance_lte=(point, D(m=1)))
                created = False
            except Place.DoesNotExist:
                place = Place(normalized_name=normalized_name)
                created = True
            
            try:
                place.pretty_name = pretty_name
                place.address = address
                place.location = point
                place.url = place_url
                place.place_type = place_type
                place.save()

                if created: 
                    message = 'Created new place %s' % (pretty_name)
                else: 
                    message = 'Updated place %s' % (pretty_name)
                context['actions_taken'].append(message)