Skip to content

Commit

Permalink
refacto
Browse files Browse the repository at this point in the history
  • Loading branch information
jacquesfize committed Oct 4, 2024
1 parent c8d3c81 commit 40f42d4
Show file tree
Hide file tree
Showing 3 changed files with 56 additions and 47 deletions.
79 changes: 41 additions & 38 deletions apptax/taxonomie/repositories.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,9 @@


class BdcStatusRepository:

@staticmethod
def get_status(
self,
cd_ref: int,
type_statut: str,
areas: List[int] = None,
Expand All @@ -24,41 +25,43 @@ def get_status(
format=False,
):
"""
Retourne la liste des statuts associés à un taxon
sous forme hiérarchique
Args:
cd_ref (int): cd_ref
type_statut (str): code du type de statut
areas (List[int], optional): limite les statuts renvoyés
aux identifiants de zones géographiques fournies.
areas_code (List[str], optional): limite les statuts renvoyés
aux codes de zones géographiques fournies.
enable (bool, optional): ne retourner que les statuts actifs Defaults to True.
format (bool, optional): retourne les données formatées. Defaults to False.
Returns:
listes des statuts du taxon
Retourne la liste des statuts associés à un taxon sous forme hiérarchique.
Parameters
----------
cd_ref : int
cd_ref
type_statut : str
code du type de statut
areas : List[int], optional
Limite les statuts renvoyés aux identifiants de zones géographiques fournies.
areas_code : List[str], optional
Limite les statuts renvoyés aux codes de zones géographiques fournies.
enable : bool, optional
Ne retourner que les statuts actifs (default is True)
format : bool, optional
Retourne les données formatées (default is False)
Returns
-------
listes des statuts du taxon
"""
q = select(TaxrefBdcStatutTaxon)
q = (
query = (
select(TaxrefBdcStatutTaxon)
.join(TaxrefBdcStatutCorTextValues)
.join(TaxrefBdcStatutText)
.where(TaxrefBdcStatutTaxon.cd_ref == cd_ref)
.where(TaxrefBdcStatutText.enable == enable)
.join(TaxrefBdcStatutCorTextValues, TaxrefBdcStatutText)
.where(TaxrefBdcStatutTaxon.cd_ref == cd_ref, TaxrefBdcStatutText.enable == enable)
)

if type_statut:
q = q.where(TaxrefBdcStatutText.cd_type_statut == type_statut)
query = query.where(TaxrefBdcStatutText.cd_type_statut == type_statut)

if areas:
q = q.where(TaxrefBdcStatutText.areas.any(LAreas.id_area.in_(areas)))
query = query.where(TaxrefBdcStatutText.areas.any(LAreas.id_area.in_(areas)))

if areas_code:
q = q.where(TaxrefBdcStatutText.areas.any(LAreas.area_code.in_(areas_code)))
query = query.where(TaxrefBdcStatutText.areas.any(LAreas.area_code.in_(areas_code)))

q = q.options(
query = query.options(
joinedload(TaxrefBdcStatutTaxon.value_text).joinedload(
TaxrefBdcStatutCorTextValues.value
)
Expand All @@ -67,27 +70,27 @@ def get_status(
.joinedload(TaxrefBdcStatutCorTextValues.text)
.joinedload(TaxrefBdcStatutText.type_statut)
)
data = db.session.scalars(q).all()
data = db.session.scalars(query).all()

# Retour des données sous forme formatées ou pas
if format:
return self.format_hierarchy_status(data)
return BdcStatusRepository.format_hierarchy_status(data)
else:
return data

def format_hierarchy_status(self, data):
@staticmethod
def format_hierarchy_status(data):
"""
Formatage des données sous la forme d'un dictionnaire
type de statut : {
[text : {
[valeurs]
}]
}
Formatage des données sous la forme d'un dictionnaire
Args:
data ([resultProxy]): Données à formater
Parameters
----------
data : resultProxy
Données à formater
Returns:
Returns
-------
dict
[type]: [description]
"""
results = {}
Expand Down
2 changes: 1 addition & 1 deletion apptax/taxonomie/routesbdcstatuts.py
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ def get_bdcstatus_hierarchy(cd_ref=None):
# get parameters type:
type_statut = request.args.get("type_statut")

results = BdcStatusRepository().get_status(
results = BdcStatusRepository.get_status(
cd_ref=cd_ref, type_statut=type_statut, enable=True, format=True
)

Expand Down
22 changes: 14 additions & 8 deletions apptax/taxonomie/routestaxref.py
Original file line number Diff line number Diff line change
Expand Up @@ -172,18 +172,21 @@ def get_taxref_list():
fields = fields.split(",")
dump_options["only"] = fields

query_count = db.select(func.count(Taxref.cd_nom)).select_from(Taxref)

count_total = db.session.scalar(query_count)
count_total = db.session.scalar(
db.select(func.count("*")).select_from(Taxref),
)

joinedload_when_attributs = get_joinedload_when_attributs(fields=fields)
query = Taxref.joined_load(fields).options(*joinedload_when_attributs)

if id_liste and "-1" not in id_liste:
query = Taxref.where_id_liste(id_liste, query=query)

query = Taxref.where_params(parameters, query=query)
count_filter = db.session.scalar(db.select(func.count()).select_from(query))
count_filter = db.session.scalar(
db.select(func.count()).select_from(
Taxref.where_params(parameters, query=query),
),
)

data = db.paginate(select=query, page=page, per_page=limit, error_out=False)

Expand Down Expand Up @@ -223,8 +226,11 @@ def getTaxrefDetail(id):
fields = [f for f in fields if not f.split(".")[0] == "status"]

joinedload_when_attributs = get_joinedload_when_attributs(fields=fields)
query = Taxref.joined_load(join_relationship).options(*joinedload_when_attributs)
query = query.where(Taxref.cd_nom == id)
query = (
Taxref.joined_load(join_relationship)
.options(*joinedload_when_attributs)
.where(Taxref.cd_nom == id)
)
results = db.session.scalars(query).unique().one_or_none()
if not results:
abort(404)
Expand All @@ -249,7 +255,7 @@ def getTaxrefDetail(id):
if request.args.get("areas_code_status"):
areas_code = request.args["areas_code_status"].split(",")

taxon["status"] = BdcStatusRepository().get_status(
taxon["status"] = BdcStatusRepository.get_status(
cd_ref=results.cd_ref,
areas=areas,
areas_code=areas_code,
Expand Down

0 comments on commit 40f42d4

Please sign in to comment.