def itis_search(request): xml_doc = _get_itis('searchForAnyMatch', request.GET) match_elements = xml_doc.xpath("//ns:return/ax:anyMatchList", namespaces=itis_namespaces) results = [] for e in match_elements: # TODO better way to transmute an etree element into a objectified # element o = objectify.fromstring(etree.tostring(e)) if not len(o): # no matches were returned break try: taxon = Taxon.objects.get(tsn=o.tsn) except: taxon = Taxon() taxon.tsn = o.tsn taxon.name = o.sciName taxon.itis_rank = itis_get_rank(o.tsn) taxon.rank = Taxon.ITIS_RANKS[taxon.itis_rank] # skip taxa above Order if taxon.rank > 2: continue common_names = [] for name in o.commonNameList.commonNames: if len(name): if name.language == 'English': common_names.append(unicode(name.commonName)) taxon.common_names = ', '.join(common_names) results.append(taxon) # render an HTML fragment that can be inserted into the taxon_import page return HttpResponse( render_to_string('taxons/itis_search_results.html', { 'results': results, 'MEDIA_URL': settings.MEDIA_URL, }), mimetype="text/plain", )