Skip to content
Snippets Groups Projects
Commit 1abee44d authored by sandcha's avatar sandcha
Browse files

Merge branch 'fix-casTypes' into 'main'

Met en cohérence le calcul par dotation pour /commune et /calculate

See merge request !14
parents f9654e27 13352679
No related branches found
No related tags found
1 merge request!14Met en cohérence le calcul par dotation pour /commune et /calculate
Pipeline #20228 passed
# CHANGELOG # CHANGELOG
### 2.0.2 [!14](https://git.leximpact.dev/leximpact/simulateur-dotations-communes/leximpact-dotations-back/-/merge_requests/14)
* Correction d'un crash.
* Détails :
* Corrige une erreur de type produisant une `error` pour toute requête à `/commune` suite à une évolution de `/calculate`
* Aligne le type de chaque commune type de `UiDisplayedImpacts.casTypes` de `/calculate` sur `ApiCommuneResponse` de `/commune`
### 2.0.1 [!13](https://git.leximpact.dev/leximpact/simulateur-dotations-communes/leximpact-dotations-back/-/merge_requests/13) ### 2.0.1 [!13](https://git.leximpact.dev/leximpact/simulateur-dotations-communes/leximpact-dotations-back/-/merge_requests/13)
* Correction d'un crash technique. * Correction d'un crash technique.
......
import logging import logging
from leximpact_dotations_back.computing.dotations_simulation import DotationsSimulation from leximpact_dotations_back.computing.dotations_simulation import DotationsSimulation
from leximpact_dotations_back.main_types import UiDisplayedImpacts from leximpact_dotations_back.main_types import ApiCommuneRequest, UiDisplayedImpacts
from leximpact_dotations_back.mapping.criteres_dgcl_2024 import montants_dotations_2024 from leximpact_dotations_back.mapping.criteres_dgcl_2024 import montants_dotations_2024
from leximpact_dotations_back.computing.calculate_impact_commune import format_commune_impact from leximpact_dotations_back.computing.calculate_impact_commune import format_commune_impact
...@@ -13,13 +13,14 @@ from leximpact_dotations_back.computing.calculate_impact_total import format_tot ...@@ -13,13 +13,14 @@ from leximpact_dotations_back.computing.calculate_impact_total import format_tot
logger = logging.getLogger() logger = logging.getLogger()
def calculate_impact_base(dotation_simulation: DotationsSimulation, request_base, year_period) -> UiDisplayedImpacts: def calculate_impact_base(dotation_simulation: DotationsSimulation, request_base: UiDisplayedImpacts, year_period) -> UiDisplayedImpacts:
# construit la réponse en enrichissant le contenu de la requete # construit la réponse en enrichissant le contenu de la requete
base_response = request_base # conserve request_base.dotations base_response = request_base # conserve request_base.dotations
# cas types # cas types
for commune_index, commune_request in enumerate(request_base.casTypes): for commune_index, commune in enumerate(request_base.casTypes):
commune_request: ApiCommuneRequest = commune
commune_impact = format_commune_impact(commune_request, dotation_simulation) commune_impact = format_commune_impact(commune_request, dotation_simulation)
base_response.casTypes[commune_index] = commune_impact base_response.casTypes[commune_index] = commune_impact
......
...@@ -19,8 +19,8 @@ def format_commune_impact( ...@@ -19,8 +19,8 @@ def format_commune_impact(
dotations_simulation: DotationsSimulation dotations_simulation: DotationsSimulation
) -> ApiCommuneResponse: ) -> ApiCommuneResponse:
codeInseeCommune = str(commune["codeInseeCommune"]) codeInseeCommune = str(commune.codeInseeCommune)
nomCommune = str(commune["nomCommune"]) nomCommune = str(commune.nomCommune)
commune_impact: ApiCommuneResponse = commune commune_impact: ApiCommuneResponse = commune
if dotations_simulation.adapted_criteres is None: if dotations_simulation.adapted_criteres is None:
...@@ -37,7 +37,7 @@ def format_commune_impact( ...@@ -37,7 +37,7 @@ def format_commune_impact(
"nomCommune": nomCommune, # == commune_in_data.nom "nomCommune": nomCommune, # == commune_in_data.nom
"codeInseeCommune": codeInseeCommune, # == commune_in_data.code_insee "codeInseeCommune": codeInseeCommune, # == commune_in_data.code_insee
# TODO ajouter le "nomDepartement" récupéré via données de critères # TODO ajouter le "nomDepartement" récupéré via données de critères
"codeInseeDepartement": str(commune["codeInseeDepartement"]), "codeInseeDepartement": str(commune.codeInseeDepartement),
"nombreHabitants": int(commune_in_data.population_dgf.values[0]), "nombreHabitants": int(commune_in_data.population_dgf.values[0]),
"potentielFinancierParHabitant": float(commune_in_data.potentiel_financier_par_habitant.values[0]), "potentielFinancierParHabitant": float(commune_in_data.potentiel_financier_par_habitant.values[0]),
# TODO tendanceReforme calculé par leximpact-dotations-ui # TODO tendanceReforme calculé par leximpact-dotations-ui
......
...@@ -176,6 +176,7 @@ def corrige_revenu_moyen_strate( ...@@ -176,6 +176,7 @@ def corrige_revenu_moyen_strate(
# ATTENTION FORMULE A VALIDER # ATTENTION FORMULE A VALIDER
# Calcul de la répartition par strate : population_dgf pour métier, population_insee pour l'UI
def corrige_potentiel_moyen_strate( def corrige_potentiel_moyen_strate(
data, variables_openfisca_presentes_fichier, outre_mer_dgcl data, variables_openfisca_presentes_fichier, outre_mer_dgcl
): ):
......
...@@ -49,7 +49,7 @@ class StrateImpact(BaseModel): ...@@ -49,7 +49,7 @@ class StrateImpact(BaseModel):
class UiDisplayedImpacts(BaseModel): class UiDisplayedImpacts(BaseModel):
dotations: Optional[Dict[str, float]] = None # paramètres législatifs dotations: Optional[Dict[str, float]] = None # paramètres législatifs
casTypes: list # cas types de communes casTypes: list[ApiCommuneResponse] # cas types de communes
strates: list[StrateImpact] # strates de communes strates: list[StrateImpact] # strates de communes
total: DotationSummaryTotal # communes gagantes / perdantes total: DotationSummaryTotal # communes gagantes / perdantes
......
[tool.poetry] [tool.poetry]
name = "leximpact-dotations-back" name = "leximpact-dotations-back"
version = "2.0.1" version = "2.0.2"
description = "Simulating annual State grants to the French administrative divisions" description = "Simulating annual State grants to the French administrative divisions"
authors = ["LexImpact <leximpact@assemblee-nationale.fr>"] authors = ["LexImpact <leximpact@assemblee-nationale.fr>"]
license = "AGPL-3.0-or-later" license = "AGPL-3.0-or-later"
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment