def create_service_demarches(row, place: Place):
    print("in service: demarches")

    service_demarches = Service()
    service_demarches.place_id = place.id
    service_demarches.name = "Accompagnement aux démarches administratives en ligne"
    service_demarches.description = row["Type démarches"]
    service_demarches.support_access = utilities.process_support_access(
        row["Conditions accès démarches"]
    )
    service_demarches.support_mode = utilities.process_support_mode(
        row["Accompagnement démarches"]
    )
    service_demarches.is_free = utilities.process_price(row["Coût accès démarches"])
    service_demarches.schedule_hours_raw = row["Horaires démarches"]
    service_demarches.schedule_hours_osm_format = utilities.process_opening_hours_to_osm_format(
        service_demarches.schedule_hours_raw
    )

    service_demarches.additional_information = {
        "demarches_specifiques": row["Démarches spécifiques"],
        "frequence_demarches": row["Fréquence démarches"],
    }

    service_demarches.save()
    print(
        row["ID Exporter les données"], "-->", place.id, service_demarches.id,
    )
def create_service_mednum(row, place: Place):
    print("in service: mednum")

    service_mednum = Service()
    service_mednum.place_id = place.id
    service_mednum.name = "Acquisition de compétences numériques"
    service_mednum.description = row["Compétences médnum"]
    service_mednum.support_access = utilities.process_support_access(
        row["Conditions accès médnum"]
    )
    service_mednum.support_mode = utilities.process_support_mode(
        row["Accompagnement médnum"]
    )
    service_mednum.is_free = utilities.process_price(row["Coût accès démarches"])
    service_mednum.price_details = row["Coût accès démarches"]
    service_mednum.schedule_hours_raw = row["Horaires médnum"]
    service_mednum.schedule_hours_osm_format = utilities.process_opening_hours_to_osm_format(
        service_mednum.schedule_hours_raw
    )

    service_mednum.additional_information = {
        "support_access_raw": row["Conditions accès médnum"],
        "support_mode_raw": row["Accompagnement médnum"],
        "frequence_mednum": row["Fréquence médnum"],
    }

    service_mednum.save()
    print(
        row["ID Exporter les données"], "-->", place.id, service_mednum.id,
    )
def create_service_equipement(row, place: Place):
    print("in service: acces équipement")
    service_equipement = Service()
    service_equipement.place_id = place.id
    service_equipement.name = "Accès à un équipement informatique"
    service_equipement.description = row["Type équipement"]
    service_equipement.support_access = utilities.process_support_access(
        row["Conditions accès équipement"]
    )
    service_equipement.is_free = utilities.process_price(row["Coût accès équipement"])
    service_equipement.price_details = row["Coût accès équipement"]
    service_equipement.schedule_hours_raw = row["Horaires équipement"]
    service_equipement.schedule_hours_osm_format = utilities.process_opening_hours_to_osm_format(
        service_equipement.schedule_hours_raw
    )

    service_equipement.additional_information = {
        "support_access_raw": row["Conditions accès équipement"],
    }

    service_equipement.save()
    print(
        row["ID Exporter les données"], "-->", place.id, service_equipement.id,
    )
Ejemplo n.º 4
0
def create_place(row, data_set):
    print("in place")

    place_dict = {}
    """
    place_fields_set
    """
    for elem in data_set.import_config.get("place_fields_set", []):
        if "type" in elem:
            if elem["type"] == "boolean":
                place_dict[elem["place_field"]] = bool(elem["value"] == "true")
        else:
            place_dict[elem["place_field"]] = elem["value"]
    """
    place_fields_mapping_auto
    """
    for elem in data_set.import_config.get("place_fields_mapping_auto", []):
        place_dict[elem["place_field"]] = row[elem["file_field"]]
    """
    place_fields_mapping_boolean
    """
    for elem in data_set.import_config.get("place_fields_mapping_boolean", []):
        place_dict[elem["place_field"]] = utilities.process_boolean(
            row[elem["file_field"]])
    """
    place_fields_mapping_process
    - type
    - status
    - legal_entity_type
    - target_audience_raw
    - support_access_raw
    - support_mode_raw
    - contact_phone_raw
    - price_details
    - labels_raw
    - address_raw
    - opening_hours_raw
    """
    for elem in data_set.import_config.get("place_fields_mapping_process", []):
        if elem["place_field"] == "type":
            place_dict["type"] = utilities.process_type(
                row[elem["file_field"]])

        if elem["place_field"] == "status":
            place_dict["status"] = utilities.process_status(
                row[elem["file_field"]])

        if elem["place_field"] == "legal_entity_type":
            place_dict[
                "legal_entity_type"] = utilities.process_legal_entity_type(
                    row[elem["file_field"]])

        if elem["place_field"] == "target_audience_raw":
            place_dict["target_audience_raw"] = row[elem["file_field"]]
            place_dict["target_audience"] = utilities.process_target_audience(
                place_dict["target_audience_raw"])

        if elem["place_field"] == "support_access_raw":
            place_dict["support_access_raw"] = row[elem["file_field"]]
            place_dict["support_access"] = utilities.process_support_access(
                place_dict["support_access_raw"])

        if elem["place_field"] == "support_mode_raw":
            place_dict["support_mode_raw"] = row[elem["file_field"]]
            place_dict["support_mode"] = utilities.process_support_mode(
                place_dict["support_mode_raw"])

        if elem["place_field"] == "labels_raw":
            place_dict["labels_raw"] = row[elem["file_field"]]
            place_dict["labels"] = utilities.process_labels(
                place_dict["labels_raw"])

        if elem["place_field"] == "contact_phone_raw":
            place_dict["contact_phone_raw"] = row[elem["file_field"]]
            place_dict["contact_phone"] = utilities.process_phone_number(
                place_dict["contact_phone_raw"])

        if elem["place_field"] == "price_details":
            place_dict["price_details"] = row[elem["file_field"]]
            place_dict["is_free"] = utilities.process_price(
                place_dict["price_details"])

        if elem["place_field"] == "address_raw":
            """
            Different options:
            - "20 Avenue de Ségur 75007 Paris"
            - ["20 Avenue de Ségur", "75007", "Paris"]
            - [["20", "Avenue", "de Ségur"], "75007", "Paris"]
            - ""
            """
            if type(elem["file_field"]) == list:
                address_temp = ""
                if type(elem["file_field"][0]) == list:
                    address_temp = " ".join([
                        row[item].strip() for item in elem["file_field"][0]
                        if item not in ["", "0", 0, False, None]
                    ])
                else:
                    address_temp = row[elem["file_field"][0]]
                place_dict["address_raw"] = utilities.clean_address_raw_list(
                    address=address_temp,
                    postcode=row[elem["file_field"][1]],
                    city=row[elem["file_field"][2]],
                )
            else:
                place_dict["address_raw"] = row[elem["file_field"]]
            address_api_results_processed = utilities.process_address(
                place_dict["address_raw"])
            if address_api_results_processed:
                place_dict[
                    "address_housenumber"] = address_api_results_processed[
                        "housenumber"]
                place_dict["address_street"] = address_api_results_processed[
                    "street"]
                place_dict["address_postcode"] = address_api_results_processed[
                    "postcode"]
                place_dict["address_citycode"] = address_api_results_processed[
                    "citycode"]
                place_dict["address_city"] = address_api_results_processed[
                    "city"]
                place_dict[
                    "address_departement_code"] = address_api_results_processed[
                        "departement_code"]
                place_dict[
                    "address_departement_name"] = address_api_results_processed[
                        "departement_name"]
                place_dict[
                    "address_region_name"] = address_api_results_processed[
                        "region_name"]
                place_dict["latitude"] = address_api_results_processed[
                    "latitude"]
                place_dict["longitude"] = address_api_results_processed[
                    "longitude"]

        if elem["place_field"] == "opening_hours_raw":
            """
            Different options:
            - "du lundi au vendredi de 9h à 18h"
            - ["Lundi: 9h-18h", "Mardi: 9h-12h"]
            - ""
            """
            if type(elem["file_field"]) == list:
                place_dict["opening_hours_raw"] = [
                    row[item] for item in elem["file_field"]
                ]
            else:
                place_dict["opening_hours_raw"] = row[elem["file_field"]]
            place_dict[
                "opening_hours_osm_format"] = utilities.process_opening_hours_to_osm_format(
                    place_dict["opening_hours_raw"])
    """
    additional_information
    """
    place_dict["additional_information"] = {}
    for elem in data_set.import_config.get(
            "place_fields_mapping_additional_information", []):
        if type(elem) == dict:
            # elem["place_field"]
            place_dict["additional_information"][elem["file_field"]] = row[
                elem["file_field"]]
        if type(elem) == str:
            place_dict["additional_information"][elem] = row[elem]

    place_dict["data_set_id"] = data_set.id

    print(place_dict)
    place = Place.objects.create(**place_dict)
    # print(row["ID"], "-->", place.id)
    print("-->", place.id)
    return place
 def test_process_support_access_to_file(self):
     for support_access in self.support_access_list:
         self.assertEqual(
             utilities.process_support_access(support_access[0], destination="file"),
             support_access[2],
         )
 def test_process_support_access(self):
     for support_access in self.support_access_list:
         self.assertEqual(
             utilities.process_support_access(support_access[0]), support_access[1],
         )
def create_place_output_dict(place_input_dict, data_set_import_config):
    """
    Process each field from the data_set_import_config
    Fields adresse_brut & horaires_ouverture_brut have a special processing, because they update collateral fields
    """
    place_output_dict = {}

    for champ in data_set_import_config:
        # champ example : {'modele': 'contact_telephone', 'fichier': 'telephone', 'commentaire': ''}
        if champ["modele"] not in place_output_dict:
            if re.match(f"^{DEFAULT_QUOTES_CUSTOM_VALUE}.*$",
                        champ["fichier"]):
                place_output_dict[champ["modele"]] = champ["fichier"].split(
                    DEFAULT_QUOTES_CUSTOM_VALUE)[1]
            else:
                if champ["modele"] == "type_lieu":
                    if champ["fichier"]:
                        place_output_dict[
                            champ["modele"]] = utilities.process_type(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "statut":
                    if champ["fichier"]:
                        place_output_dict[
                            champ["modele"]] = utilities.process_status(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "nature_juridique":
                    if champ["fichier"]:
                        place_output_dict[champ[
                            "modele"]] = utilities.process_legal_entity_type(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "adresse_brut":
                    place_output_dict = process_place_address(
                        place_output_dict, place_input_dict, champ["fichier"])
                elif champ["modele"] == "en_ligne":
                    input_field = (place_input_dict[champ["fichier"]]
                                   if champ["fichier"] else None)
                    place_output_dict[
                        champ["modele"]] = utilities.process_is_online(
                            input_field, destination="file")
                elif champ["modele"] == "contact_telephone":
                    if champ["fichier"]:
                        # place_output_dict["contact_phone_raw"] = place_input_dict[champ["fichier"]]
                        place_output_dict[
                            champ["modele"]] = utilities.process_phone_number(
                                place_input_dict[champ["fichier"]])
                elif champ["modele"] == "horaires_ouverture_brut":
                    place_output_dict = process_place_opening_hours(
                        place_output_dict, place_input_dict, champ["fichier"])
                elif champ["modele"] == "public_cible":
                    if champ["fichier"]:
                        # place_output_dict["target_audience_raw"] = place_input_dict[champ["fichier"]]
                        place_output_dict[champ[
                            "modele"]] = utilities.process_target_audience(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "modalites_acces":
                    if champ["fichier"]:
                        # place_output_dict["support_access_raw"] = place_input_dict[champ["fichier"]]
                        place_output_dict[champ[
                            "modele"]] = utilities.process_support_access(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "modalites_accompagnement":
                    if champ["fichier"]:
                        # place_output_dict["support_mode_raw"] = place_input_dict[champ["fichier"]]
                        place_output_dict[
                            champ["modele"]] = utilities.process_support_mode(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "labels":
                    if champ["fichier"]:
                        # place_output_dict["labels_raw"] = place_input_dict[champ["fichier"]]
                        place_output_dict[
                            champ["modele"]] = utilities.process_labels(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                elif champ["modele"] == "services":
                    if champ["fichier"]:
                        # place_output_dict["services_raw"] = place_input_dict[champ["fichier"]]
                        place_output_dict[
                            champ["modele"]] = utilities.process_services(
                                place_input_dict[champ["fichier"]],
                                destination="file")
                # elif champ["modele"] == "price_details":
                #     place_output_dict["price_details"] = place_input_dict[champ["fichier"]]
                #     place_output_dict["is_free"] = utilities.process_price(place_input_dict[champ["fichier"]])
                # elif place_fields_mapping_boolean
                else:
                    place_output_dict[champ["modele"]] = (
                        place_input_dict[champ["fichier"]]
                        if champ["fichier"] else "")

    # TODO: to be removed, by updating the utilities
    # Some fields are set as arrays, we need to transform them back to strings
    for champ in place_output_dict:
        if type(place_output_dict[champ]) == list:
            place_output_dict[
                champ] = DEFAULT_SEPARATEUR_CHAMPS_MULTIPLES.join(
                    place_output_dict[champ])

    return place_output_dict