@@ -318,17 +318,23 @@ def genome_gene_info(request):
318318 gene = request .GET .get ("gene" , None )
319319 locus_tag = request .GET .get ("locus_tag" , None )
320320
321- if species is None or ((genome_id is None or gene is None ) and locus_tag is None ):
322- raise Http404 ()
323-
324- if (not (genome_id is None or gene is None )) and (locus_tag is None ):
325- filter_params = {
326- "pangenome_analysis" : species ,
327- "genome_id" : genome_id ,
328- "gene" : gene ,
329- }
330- elif (genome_id is None or gene is None ) and (not locus_tag is None ):
331- filter_params = {"pangenome_analysis" : species , "locus_tag" : locus_tag }
321+ # Determine filter_params based on available parameters:
322+ # 1. species + genome_id + gene
323+ # 2. species + locus_tag
324+ # 3. genome_id + locus_tag
325+ if species is not None :
326+ if genome_id is not None and gene is not None and locus_tag is None :
327+ filter_params = {
328+ "pangenome_analysis" : species ,
329+ "genome_id" : genome_id ,
330+ "gene" : gene ,
331+ }
332+ elif locus_tag is not None and (genome_id is None or gene is None ):
333+ filter_params = {"pangenome_analysis" : species , "locus_tag" : locus_tag }
334+ else :
335+ raise Http404 ()
336+ elif genome_id is not None and locus_tag is not None :
337+ filter_params = {"genome_id" : genome_id , "locus_tag" : locus_tag }
332338 else :
333339 raise Http404 ()
334340
@@ -356,6 +362,8 @@ def genome_gene_info(request):
356362 raise Http404 ()
357363 gene_info = list (gene_info )
358364
365+ # Extract values from the found gene_info
366+ species = gene_info [0 ].get ("pangenome_analysis" , species )
359367 genome_id = gene_info [0 ]["genome_id" ]
360368 gene = gene_info [0 ]["gene" ]
361369 locus_tag = gene_info [0 ]["locus_tag" ]
0 commit comments