Ejemplo n.º 1
0
    def make_import_dict(self, row):
        def row_value(row, key, default, _type):
            if key in row and row[key] not in (None, ""):
                return _type(row[key])
            return default

        data = {}
        data["created"] = datetime.fromtimestamp(row_value(row, "created", 0, int))

        data["modified"] = datetime.fromtimestamp(row_value(row, "updated", 0, int))

        data["lat"] = row_value(row, "lat", None, float)
        data["lon"] = row_value(row, "lon", None, float)

        try:
            radio = row["radio"].lower()
            if radio == "umts":
                radio = "wcdma"
            data["radio"] = Radio[radio]
        except KeyError:  # pragma: no cover
            return None

        if data["radio"] == Radio.cdma:  # pragma: no cover
            # ignore CDMA networks
            return None

        for field in ("mcc", "mnc", "lac", "cid", "psc"):
            data[field] = row_value(row, field, None, int)

        data["range"] = int(row_value(row, "range", 0, float))
        data["total_measures"] = row_value(row, "samples", 0, int)
        if self.cell_type == "ocid":
            data["changeable"] = row_value(row, "changeable", True, bool)
        elif self.cell_type == "cell":  # pragma: no cover
            data["max_lat"] = geocalc.latitude_add(data["lat"], data["lon"], data["range"])
            data["min_lat"] = geocalc.latitude_add(data["lat"], data["lon"], -data["range"])
            data["max_lon"] = geocalc.longitude_add(data["lat"], data["lon"], data["range"])
            data["min_lon"] = geocalc.longitude_add(data["lat"], data["lon"], -data["range"])

        validated = self.cell_model.validate(data)
        if validated is None:
            return None
        for field in ("radio", "mcc", "mnc", "lac", "cid"):
            if validated[field] is None:
                return None
        return validated
Ejemplo n.º 2
0
 def test_adds_meters_to_latitude(self):
     self.assertAlmostEqual(latitude_add(1.0, 1.0, 1000),
                            1.009000009, 9)
Ejemplo n.º 3
0
 def test_returns_max_lat(self):
     self.assertEqual(latitude_add(1.0, 1.0, 10 ** 10),
                      constants.MAX_LAT)
Ejemplo n.º 4
0
 def test_returns_min_lat(self):
     self.assertEqual(latitude_add(1.0, 1.0, -(10 ** 10)),
                      constants.MIN_LAT)
Ejemplo n.º 5
0
 def test_adds_meters_to_latitude(self):
     self.assertAlmostEqual(latitude_add(1.0, 1.0, 1000), 1.009000009, 9)
Ejemplo n.º 6
0
 def test_returns_max_lat(self):
     self.assertEqual(latitude_add(1.0, 1.0, 10**10), constants.MAX_LAT)
Ejemplo n.º 7
0
 def test_returns_min_lat(self):
     self.assertEqual(latitude_add(1.0, 1.0, -(10**10)), constants.MIN_LAT)
Ejemplo n.º 8
0
 def max_lat(self):
     return geocalc.latitude_add(self.lat, self.lon, self.range)
Ejemplo n.º 9
0
 def test_adds_meters_to_latitude(self):
     assert round(latitude_add(1.0, 1.0, 1000), 7) == 1.0090437
Ejemplo n.º 10
0
 def test_returns_max_lat(self):
     assert latitude_add(85.0, 0.0, 1000000) == constants.MAX_LAT
Ejemplo n.º 11
0
 def test_returns_min_lat(self):
     assert latitude_add(-85.0, 0.0, -1000000) == constants.MIN_LAT