def country_is_valid(self, place: Loc) -> bool: # See if COUNTRY is present and is in the supported country list if place.country_iso == '': place.result_type = GeoKeys.Result.NO_COUNTRY is_valid = False elif place.country_iso not in self.geo_files.supported_countries_dct: self.logger.debug(f'[{place.country_iso}] not supported') place.result_type = GeoKeys.Result.NOT_SUPPORTED place.place_type = Loc.PlaceType.COUNTRY place.target = place.country_name is_valid = False else: is_valid = True return is_valid
def lookup_geoid(self, place: Loc) -> None: """Search for GEOID""" result_place: Loc = Loc.Loc() query_list = [ Query(where="geoid = ? ", args=(place.target, ), result=Result.STRONG_MATCH) ] place.georow_list, place.result_type = self.db.process_query_list( from_tbl='main.geodata', query_list=query_list) if len(place.georow_list) == 0: place.georow_list, place.result_type = self.db.process_query_list( from_tbl='main.admin', query_list=query_list) else: place.georow_list = place.georow_list[:1] place.result_type = GeoKeys.Result.STRONG_MATCH # Add search quality score to each entry for idx, rw in enumerate(place.georow_list): self.copy_georow_to_place(row=rw, place=result_place) update = list(rw) update.append(1) # Extend list row and assign score result_place.prefix = '' res_nm = result_place.format_full_nm(None) score = 0.0 # Remove items in prefix that are in result tk_list = res_nm.split(",") for item in tk_list: place.prefix = re.sub( item.strip(' ').lower(), '', place.prefix) update[GeoKeys.Entry.SCORE] = int(score * 100) place.georow_list[idx] = tuple(update)