Beispiel #1
0
def reservation_numeros_new_view(request):
    """
    Add new numeros in affaire
    """
    # Check authorization
    if not Utils.has_permission(request, request.registry.settings['affaire_numero_edition']):
        raise exc.HTTPForbidden()

    nombre = int(request.params["nombre"]) if "nombre" in request.params else None
    affaire_id = int(request.params["affaire_id"]) if "affaire_id" in request.params else None
    cadastre_id = int(request.params["cadastre_id"]) if "cadastre_id" in request.params else None
    etat_id = int(request.params["etat_id"]) if "etat_id" in request.params else None
    type_id = int(request.params["type_id"]) if "type_id" in request.params else None
    numero_base_id = int(request.params["numero_base_id"]) if "numero_base_id" in request.params else None
    ppe_suffixe_start = request.params["ppe_suffixe_start"] if "ppe_suffixe_start" in request.params else None

    if not (affaire_id and nombre and cadastre_id and etat_id and type_id):
        raise CustomError(CustomError.GENERAL_EXCEPTION)

    settings = request.registry.settings

    # Récupère les id des états des biens-fonds de la config
    numero_projet_id = int(settings['numero_projet_id'])

    # Récupère les id des biens-fonds de la config
    numero_bf_id = int(settings['numero_bf_id'])
    numero_ddp_id = int(settings['numero_ddp_id'])
    numero_ppe_id = int(settings['numero_ppe_id'])
    numero_pcop_id = int(settings['numero_pcop_id'])
    affaire_numero_type_nouveau_id = int(settings['affaire_numero_type_nouveau_id'])
    numero_relation_mutation_id = int(settings['numero_relation_mutation_id'])
    numero_relation_ddp_id = int(settings['numero_relation_ddp_id'])
    numero_relation_ppe_id = int(settings['numero_relation_ppe_id'])
    numero_relation_pcop_id = int(settings['numero_relation_pcop_id'])
    

    if type_id in [numero_ddp_id, numero_ppe_id, numero_pcop_id] and numero_base_id is None:
        raise CustomError(CustomError.RESERVATION_NUMBER_WITHOUT_BASE_NUMBER)


    # Définit la relation entre le numéro de base et le numéro associé
    # + Récupère l'id du suffixe de l'unité PPE de départ
    suffixe = None
    if type_id == numero_ddp_id:
        relation_type_id = numero_relation_ddp_id
    elif type_id == numero_ppe_id:
        relation_type_id = numero_relation_ppe_id
        unite_start_idx = Utils.get_index_from_unite(request.params["ppe_suffixe_start"].upper()) if "ppe_suffixe_start" in request.params else 0
    elif type_id == numero_pcop_id:
        relation_type_id = numero_relation_pcop_id
        suffixe = "part"

    # Récupère le dernier numéro de bien-fonds réservé dans le cadastre
    ln = Utils.last_number(request, cadastre_id, [numero_bf_id, numero_ddp_id, numero_ppe_id, numero_pcop_id])

    # Enregistrer le numéro
    for i in range(nombre):

        if type_id == numero_ppe_id:
            # Update 
            suffixe = Utils.get_unite_from_index(unite_start_idx + i)
        
        params = Utils._params(cadastre_id=cadastre_id, type_id=type_id, etat_id=etat_id, numero=ln+i+1, suffixe=suffixe, no_access="_".join([str(cadastre_id), str(ln+i+1)]))
        numero_id = numeros_new_view(request, params)
        # enregistrer le lien affaire-numéro
        params = Utils._params(affaire_id=affaire_id, numero_id=numero_id, actif=True, type_id=affaire_numero_type_nouveau_id, no_access="_".join([str(cadastre_id), str(ln+i+1)]))
        affaire_numero_new_view(request, params)
        # enregistrer l'historique de l'état
        params = Utils._params(numero_id=numero_id, numero_etat_id=etat_id, no_access="_".join([str(cadastre_id), str(ln+i+1)]))
        numeros_etat_histo_new_view(request, params)
        # enregistrer le numéro sur un bien-fonds de base si nécessaire
        if numero_base_id:
            params = Utils._params(numero_id_base=numero_base_id, numero_id_associe=numero_id, relation_type_id=relation_type_id, affaire_id=affaire_id)
            numeros_relations_new_view(request, params)


    return Utils.get_data_save_response(Constant.SUCCESS_SAVE.format(Numero.__tablename__))
def savePointMO(request, affaire_id, cadastre_id, numero_type, n_numeros,
                etat_id):
    settings = request.registry.settings
    cadastres_ChauxDeFonds_Eplatures_id = settings[
        'cadastres_ChauxDeFonds_Eplatures_id'].split(",")
    cadastres_ChauxDeFonds_Eplatures_id = [
        int(cadastres_ChauxDeFonds_Eplatures_id[0]),
        int(cadastres_ChauxDeFonds_Eplatures_id[1])
    ]
    cadastres_BrotPlamboz_Plamboz_id = settings[
        'cadastres_BrotPlamboz_Plamboz_id'].split(",")
    cadastres_BrotPlamboz_Plamboz_id = [
        int(cadastres_BrotPlamboz_Plamboz_id[0]),
        int(cadastres_BrotPlamboz_Plamboz_id[1])
    ]
    cadastres_Neuchatel_Coudre_id = settings[
        'cadastres_Neuchatel_Coudre_id'].split(",")
    cadastres_Neuchatel_Coudre_id = [
        int(cadastres_Neuchatel_Coudre_id[0]),
        int(cadastres_Neuchatel_Coudre_id[1])
    ]
    cadastres_Sauge_StAubin_id = settings['cadastres_Sauge_StAubin_id'].split(
        ",")
    cadastres_Sauge_StAubin_id = [
        int(cadastres_Sauge_StAubin_id[0]),
        int(cadastres_Sauge_StAubin_id[1])
    ]

    # Corriger la liste des cadastres où la réservation de numéros se fait sur deux cadastres
    if cadastre_id == cadastres_ChauxDeFonds_Eplatures_id[
            0] or cadastre_id == cadastres_ChauxDeFonds_Eplatures_id[1]:
        # Cadastre de la Chaux-de-Fonds et des Eplatures
        ln = max(
            Utils.last_number(request, cadastres_ChauxDeFonds_Eplatures_id[0],
                              [numero_type]),
            Utils.last_number(request, cadastres_ChauxDeFonds_Eplatures_id[1],
                              [numero_type]))
    elif cadastre_id == cadastres_BrotPlamboz_Plamboz_id[
            0] or cadastre_id == cadastres_BrotPlamboz_Plamboz_id[1]:
        # Cadastre de Brot-Plamboz et Plamboz
        ln = max(
            Utils.last_number(request, cadastres_BrotPlamboz_Plamboz_id[0],
                              [numero_type]),
            Utils.last_number(request, cadastres_BrotPlamboz_Plamboz_id[1],
                              [numero_type]))
    elif cadastre_id == cadastres_Neuchatel_Coudre_id[
            0] or cadastre_id == cadastres_Neuchatel_Coudre_id[1]:
        # Cadastre de Neuchâtel et de la Coudre
        ln = max(
            Utils.last_number(request, cadastres_Neuchatel_Coudre_id[0],
                              [numero_type]),
            Utils.last_number(request, cadastres_Neuchatel_Coudre_id[1],
                              [numero_type]))
    elif cadastre_id == cadastres_Sauge_StAubin_id[
            0] or cadastre_id == cadastres_Sauge_StAubin_id[1]:
        # Cadastre de Sauge et de Saint-Aubin
        ln = max(
            Utils.last_number(request, cadastres_Sauge_StAubin_id[0],
                              [numero_type]),
            Utils.last_number(request, cadastres_Sauge_StAubin_id[1],
                              [numero_type]))
    else:
        ln = Utils.last_number(request, cadastre_id, [numero_type])

    for i in range(n_numeros):
        # enregistrer un nouveau numéro
        params = Utils._params(cadastre_id=cadastre_id,
                               type_id=numero_type,
                               etat_id=etat_id,
                               numero=ln + i + 1)
        numero_id = numeros_new_view(request, params)
        # enregistrer le lien affaire-numéro
        params = Utils._params(affaire_id=affaire_id,
                               numero_id=numero_id,
                               actif=True,
                               type_id=2)
        affaire_numero_new_view(request, params)