Code quasi dupliqué et éliminiation de doublon
Dans sample_set.py
, méthode index
, on a :
if config :
query =[]
query2 = db(
(db.sequence_file.id == db.sample_set_membership.sequence_file_id)
& (db.sample_set_membership.sample_set_id == sample_set_id)
).select(
left=db.results_file.on(
(db.results_file.sequence_file_id==db.sequence_file.id)
& (db.results_file.config_id==str(config_id))
& (db.results_file.hidden == False)
),
orderby = db.sequence_file.id|~db.results_file.run_date
)
previous=-1
for row in query2 :
if row.sequence_file.id != previous :
query.append(row)
previous=row.sequence_file.id
else:
query = db(
(db.sequence_file.id == db.sample_set_membership.sequence_file_id)
& (db.sample_set_membership.sample_set_id == sample_set_id)
).select(
left=db.results_file.on(
(db.results_file.sequence_file_id==db.sequence_file.id)
& (db.results_file.config_id==str(config_id))
& (db.results_file.hidden == False)
& (db.sample_set_membership.sequence_file_id == db.sequence_file.id)
& (db.sample_set.id == db.sample_set_membership.sample_set_id)
)
)
Plusieurs remarques/questions
- La requête est quasi la même entre le
if
et leelse
. Ne peut-on pas factoriser ? - Le
for
à la fin duif
sert à retirer des doublons. Est-ce encore utile ? Est-ce bien normal que la requête produise des doublons ? - Le
else
correspond au cas où on n'a pas de configuration en paramètre, et doncconfig_id
vaut -1. Est-ce que(db.results_file.config_id==str(config_id))
va vraiment donner quelque chose ? Si non, pourquoi laisser cette requête ?
cc @duez