Skip to content

Commit

Permalink
Cites listing download taxa (#4126)
Browse files Browse the repository at this point in the history
* Fix csv checklist download

* Show CITES listing in download taxa list
  • Loading branch information
dimasciput authored Aug 2, 2024
1 parent ae3d842 commit 36684e4
Show file tree
Hide file tree
Showing 3 changed files with 26 additions and 2 deletions.
2 changes: 1 addition & 1 deletion bims/admin.py
Original file line number Diff line number Diff line change
Expand Up @@ -1941,7 +1941,7 @@ class TaxonomyUpdateReviewerAdmin(admin.ModelAdmin):
@admin.register(CITESListingInfo)
class CITESListingInfoAdmin(admin.ModelAdmin):
list_display = ('appendix', 'effective_at', 'taxonomy')
list_filter = ('appendix', 'effective_at', 'taxonomy')
list_filter = ('appendix', 'effective_at')
search_fields = ('annotation', 'taxonomy__name')
raw_id_fields = ('taxonomy',)

Expand Down
2 changes: 2 additions & 0 deletions bims/tasks/download_taxa_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ def update_headers(_headers):
header = header.replace('_', ' ').capitalize()
if header == 'Sub species':
header = 'SubSpecies'
if header.lower().strip() == 'cites_listing':
header = 'CITES Listing'
_updated_headers.append(header)
return _updated_headers

Expand Down
24 changes: 23 additions & 1 deletion bims/views/download_csv_taxa_list.py
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
from bims.tasks.download_taxa_list import (
download_csv_taxa_list as download_csv_taxa_list_task
)
from bims.models.cites_listing_info import CITESListingInfo


class TaxaCSVSerializer(serializers.ModelSerializer):
Expand All @@ -50,6 +51,22 @@ class TaxaCSVSerializer(serializers.ModelSerializer):
conservation_status_national = serializers.SerializerMethodField()
on_gbif = serializers.SerializerMethodField()
gbif_link = serializers.SerializerMethodField()
cites_listing = serializers.SerializerMethodField()

def get_cites_listing(self, obj: Taxonomy):
cites_listing_info = CITESListingInfo.objects.filter(
taxonomy=obj
)
if cites_listing_info.exists():
return ','.join(list(cites_listing_info.values_list(
'appendix', flat=True
)))
if obj.additional_data:
if 'CITES Listing' in obj.additional_data:
return obj.additional_data['CITES Listing']
if 'Cites Listing' in obj.additional_data:
return obj.additional_data['Cites Listing']
return ''

def get_taxon_rank(self, obj):
return obj.rank.capitalize()
Expand Down Expand Up @@ -152,9 +169,12 @@ class Meta:
'conservation_status_global',
'conservation_status_national',
'on_gbif',
'gbif_link'
'gbif_link',
'cites_listing'
)



def __init__(self, *args, **kwargs):
super(TaxaCSVSerializer, self).__init__(*args, **kwargs)
self.context['headers'] = []
Expand All @@ -177,6 +197,8 @@ def _add_additional_attributes(self, instance, result):
)
for taxon_extra_attribute in taxon_extra_attributes:
attribute_name = taxon_extra_attribute.name
if attribute_name.lower().strip() == 'cites listing':
continue
if attribute_name not in self.context['headers']:
self.context['headers'].append(attribute_name)
if instance.additional_data:
Expand Down

0 comments on commit 36684e4

Please sign in to comment.