Beispiel #1
0
def get_searched_commune(code_insee, search):
    commune = Commune.objects.filter(code_insee=code_insee).first()
    if commune:
        return commune.nom
    # lookup arrondissements
    arrdt = arrondissements.get_by_code_insee(code_insee)
    return arrdt["commune"] if arrdt else ""
Beispiel #2
0
    def _retrieve_commune_ext(self):
        "Assigne une commune normalisée à l'Erp en cours de génération"
        if self.erp.code_insee:
            commune_ext = Commune.objects.filter(code_insee=self.erp.code_insee).first()
            if not commune_ext:
                arrdt = arrondissements.get_by_code_insee(self.erp.code_insee)
                if arrdt:
                    commune_ext = Commune.objects.filter(
                        nom__iexact=arrdt["commune"]
                    ).first()
        elif self.erp.code_postal:
            commune_ext = Commune.objects.filter(
                code_postaux__contains=[self.erp.code_postal]
            ).first()
        else:
            raise RuntimeError(
                f"Champ code_insee et code_postal nuls (commune: {self.erp.commune})"
            )

        if not commune_ext:
            raise RuntimeError(
                f"Impossible de résoudre la commune depuis le code INSEE ({self.erp.code_insee}) "
                f"ou le code postal ({self.erp.code_postal}) "
            )

        self.erp.commune_ext = commune_ext
        self.erp.commune = commune_ext.nom
Beispiel #3
0
def normalize_commune(code_insee):
    # First, a cheap check if code_insee is an arrondissement
    arrondissement = arrondissements.get_by_code_insee(code_insee)
    if arrondissement:
        return arrondissement["nom"].split(" ")[0] if arrondissement else None
    # Else, a db check to retrieve the normalized commune name
    commune_ext = Commune.objects.filter(code_insee=code_insee).first()
    return commune_ext.nom if commune_ext else None
Beispiel #4
0
def get_district_search(code_insee):
    # In case we search in a global commune code insee which has districts
    # (arrondissements: Paris, Marseille, Lyon), prefer searching with the
    # commune name rather than the INSEE code, for accuracy.
    arrdt = arrondissements.get_by_code_insee(code_insee)
    if arrdt:
        return arrdt["commune"]
    elif code_insee == "75056":
        return "Paris"
    elif code_insee == "13055":
        return "Marseille"
    elif code_insee == "69123":
        return "Lyon"
Beispiel #5
0
    def _retrieve_or_create_commune_ext(
        self, commune, code_insee=None, code_postal=None, xml=None
    ):
        "Assigne une commune normalisée à l'Erp en cours de génération"
        if code_insee:
            commune_ext = Commune.objects.filter(code_insee=code_insee).first()
            if not commune_ext:
                arrdt = arrondissements.get_by_code_insee(code_insee)
                if arrdt:
                    commune_ext = Commune.objects.filter(
                        nom__iexact=arrdt["commune"]
                    ).first()
        elif code_postal:
            commune_ext = Commune.objects.filter(
                code_postaux__contains=[code_postal]
            ).first()
        else:
            raise RuntimeError(
                f"Champ code_insee et code_postal nuls (commune: {commune})"
            )

        if not commune_ext:
            print(
                f"Impossible de résoudre la commune depuis le code INSEE ({code_insee}) "
                f"ou le code postal ({code_postal}) "
            )
            try:
                commune_ext = Commune(
                    departement=code_insee[:2],
                    nom=commune,
                    code_insee=code_insee,
                    geom=Point(
                        float(extract(xml, fieldname="**Longitude")),
                        float(extract(xml, fieldname="**Latitude")),
                    ),
                    code_postaux=[code_postal],
                )
            except ValueError:
                return None
            else:
                commune_ext.save()
                return commune_ext.pk
        return commune_ext.pk
def test_get_by_code_insee():
    assert arrondissements.get_by_code_insee("75120") is not None
    assert arrondissements.get_by_code_insee(75120) is not None
    assert arrondissements.get_by_code_insee("xxx") is None