def test_generate_creates_proper_json(self):
        generate_counselor_json(self.counselors, self.zipcodes, self.tempdir)
        with open(os.path.join(self.tempdir, '20001.json')) as f:
            data = json.load(f)

        self.assertEqual(data['zip'], {
            'lat': 115.5,
            'lng': 97.5,
            'zipcode': '20001',
        })

        agencies = data['counseling_agencies']
        self.assertEqual(len(agencies), 2)

        expected_agencies = [
            {
                'agc_ADDR_LATITUDE': 120,
                'agc_ADDR_LONGITUDE': 98,
                'distance': 311.35243783709234,
            },
            {
                'agc_ADDR_LATITUDE': 125,
                'agc_ADDR_LONGITUDE': 99,
                'distance': 658.4536705140896,
            },
        ]

        for a, b in zip(agencies, expected_agencies):
            self.assertCountEqual(a.keys(), b.keys())

            for k in a:
                self.assertAlmostEqual(a[k], b[k])
    def handle(self, *args, **options):
        zipcode_csv_file = options['zipcode_csv_file']
        zipcode_gazetteer_file = options['zipcode_gazetteer_file']

        if zipcode_csv_file:
            zipcodes = GeocodedZipCodeCsv.read(zipcode_csv_file)
        elif zipcode_gazetteer_file:
            zipcodes = GazetteerZipCodeFile.read(zipcode_gazetteer_file)
        else:
            raise CommandError(
                'One of --zipcode-csv-file or --zipcode-gazetteer-file '
                'must be provided to enable mapping from zipcode to '
                'latitude/longitude coordinates.')

        # Retrieve counselors from the HUD website.
        counselors = fetch_counselors()

        # Standardize formatting of counselor data.
        counselors = clean_counselors(counselors)

        # Add in any missing latitude/longitude information for counselors.
        counselors = geocode_counselors(counselors, zipcodes=zipcodes)

        # Generate JSON files for each zipcode.
        generate_counselor_json(counselors, zipcodes, options['target'])
示例#3
0
    def handle(self, *args, **options):
        zipcode_csv_file = options['zipcode_csv_file']
        zipcode_gazetteer_file = options['zipcode_gazetteer_file']

        if zipcode_csv_file:
            zipcodes = GeocodedZipCodeCsv.read(zipcode_csv_file)
        elif zipcode_gazetteer_file:
            zipcodes = GazetteerZipCodeFile.read(zipcode_gazetteer_file)
        else:
            raise CommandError(
                'One of --zipcode-csv-file or --zipcode-gazetteer-file '
                'must be provided to enable mapping from zipcode to '
                'latitude/longitude coordinates.'
            )

        # Retrieve counselors from the HUD website.
        counselors = fetch_counselors()

        # Standardize formatting of counselor data.
        counselors = clean_counselors(counselors)

        # Add in any missing latitude/longitude information for counselors.
        counselors = geocode_counselors(counselors, zipcodes=zipcodes)

        # Generate JSON files for each zipcode.
        generate_counselor_json(counselors, zipcodes, options['target'])
示例#4
0
    def test_generate_creates_proper_json(self):
        generate_counselor_json(self.counselors, self.zipcodes, self.tempdir)
        with open(os.path.join(self.tempdir, '20001.json')) as f:
            data = json.load(f)

        self.assertEqual(data['zip'], {
            'lat': 115.5,
            'lng': 97.5,
            'zipcode': '20001',
        })

        agencies = data['counseling_agencies']
        self.assertEqual(len(agencies), 2)

        expected_agencies = [
            {
                'agc_ADDR_LATITUDE': 120,
                'agc_ADDR_LONGITUDE': 98,
                'distance': 311.35243783709234,
            },
            {
                'agc_ADDR_LATITUDE': 125,
                'agc_ADDR_LONGITUDE': 99,
                'distance': 658.4536705140896,
            },
        ]

        for a, b in zip(agencies, expected_agencies):
            six.assertCountEqual(self, a.keys(), b.keys())

            for k in a:
                self.assertAlmostEqual(a[k], b[k])
示例#5
0
 def test_generate_creates_json_files(self):
     generate_counselor_json(self.counselors, self.zipcodes, self.tempdir)
     six.assertCountEqual(
         self,
         os.listdir(self.tempdir),  # os.listdir order not guaranteed.
         ['20001.json', '20002.json']
     )
 def test_generate_creates_json_files(self):
     generate_counselor_json(self.counselors, self.zipcodes, self.tempdir)
     self.assertCountEqual(
         os.listdir(self.tempdir),  # os.listdir order not guaranteed.
         ['20001.json', '20002.json']
     )