Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • vidjil vidjil
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 1,738
    • Issues 1,738
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 104
    • Merge requests 104
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • vidjilvidjil
  • vidjilvidjil
  • Issues
  • #4416
Closed
Open
Issue created Jul 27, 2020 by Mikaël Salson@mikael-sOwner

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 le else. Ne peut-on pas factoriser ?
  • Le for à la fin du if 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 donc config_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

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking