Skip to content

Commit b00118a

Browse files
committed
Allow filtering taxa by rank
1 parent e004128 commit b00118a

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

api/filters.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,17 @@ class Meta:
256256
fields = {}
257257

258258
class TaxonFilter(filters.FilterSet):
259+
rank = filters.MultipleChoiceFilter(
260+
choices=[(name.lower(), value) for name, value in zip(Taxon.TaxonomicRank.names, Taxon.TaxonomicRank.values)],
261+
method='filter_by_rank',
262+
)
263+
264+
def filter_by_rank(self, queryset, name, value):
265+
# Map from name.lower() to actual values
266+
name_to_value = {name.lower(): val for name, val in zip(Taxon.TaxonomicRank.names, Taxon.TaxonomicRank.values)}
267+
mapped_values = [name_to_value.get(v) for v in value if v in name_to_value]
268+
return queryset.filter(rank__in=mapped_values)
269+
259270
class Meta:
260271
model = Taxon
261272
fields = {

0 commit comments

Comments
 (0)