def __init__(self, key): """Infer the country from the key Valid keys are: two letter, three letter or numeric country code acording to ISO 3166 or the countries simple English name. Raises ValueError if key is not found. """ if key in data.cn_to_ccn: self.cn = self.name = key self.ccn = self.numeric = data.cn_to_ccn[key] else: try: code = trafos.cc_to_ccn(key) except KeyError: raise ValueError("%s is o ISO country code or name" % key) self.ccn = self.numeric = code self.cn = self.name = trafos.ccn_to_cn(self.ccn) self.cca2 = self.alpha2 = trafos.ccn_to_cca2(self.numeric) self.cca3 = self.alpha3 = trafos.ccn_to_cca3(self.numeric) self.con = self.official_name = trafos.ccn_to_con(self.numeric) self.ctca2 = trafos.ccn_to_ctca2(self.numeric) self.ctn = trafos.ccn_to_ctn(self.numeric)
def check_prices(): output = "" prices = parse_prices() #provider_prices = load_provider(name) providers = get_providers() loaded_providers = {} winners = get_winners() better_deal = "" countries = prices.keys() countries.sort() counters = defaultdict(int) output += 'remember rs has no prices (new republic of serbia)\n' for country in countries: if country == 'rs': # we have a warning above... known problem XXX continue for type in prices[country]: current_rate, provider_code, ext = prices[country][type] if provider_code in providers: try: country_name = transformations.ccn_to_cn( transformations.cca2_to_ccn(country)) except: country_name = 'Unknown' if provider_code in loaded_providers: provider_prices = loaded_providers[provider_code] else: names = providers[provider_code] if names.__class__ == str: names = [names] all_prices = [] all_providers = set() for name in names: if name[:-1] in ['freevoipdeal']: name = 'freevoipdeal' if name[:-1] in ['budgetvoip']: name = 'budgetvoip' all_providers.add(name) # XXX check if prices are the same for given country... provider_prices = load_provider(name) loaded_providers[provider_code] = provider_prices try: country_price = normalize_price( provider_prices[country][type]) all_prices.append(country_price) except: traceback.print_exc() output += "problem with %s %s %s %s\n" % ( name, country, type, name) ok = True if all_prices: last_price = all_prices[0] for aprice in all_prices: if aprice != last_price: output += country_name + " [" + country + "]\t" + type + " Price inconsistency %s %s\n" % ( str(all_prices), str(all_providers)) ok = False else: output += "No prices for %s %s %s %s\n" % ( name, country, type, str(all_providers)) if country in provider_prices and type in provider_prices[ country]: current_rate = float(current_rate) names = providers[provider_code] provider_rate = normalize_price( provider_prices[country][type]) if current_rate != provider_rate: key = country + " " + type if key in winners: output += country_name + " [" + country + "]\t" + type + " %s -> %s %s %s\n" % ( str(current_rate), str(provider_rate), str(providers[provider_code]), str( winners[key])) else: output += country_name + " [" + country + "]\t" + type + " %s -> %s %s\n" % ( str(current_rate), str(provider_rate), str(providers[provider_code])) else: key = country + " " + type if key in winners: winner_rate = normalize_price(winners[key][0]) if winner_rate < current_rate: better_deal += "%s [%s]\t%s %s %s %s %s\n" % ( country_name, country, type, current_rate, providers[provider_code], winner_rate, str(winners[key][1])) for winner in winners[key][1]: counters[winner] += 1 else: output += "%s %s not available\n" % (country, type) else: output += "unknown " + str(provider_code) + "\n" output += "\n\nBETTER DEALS\n" output += better_deal output += "\nWINNER COUNTERS\n" for winner in counters: output += "<b>%s:</b> %s\n" % (winner, counters[winner]) return output
def country_expand(short_country): code_num = transformations.cca2_to_ccn(short_country) return transformations.ccn_to_cn(int(code_num))
def check_prices(): output = "" prices = parse_prices() #provider_prices = load_provider(name) providers = get_providers() loaded_providers = {} winners = get_winners() better_deal = "" countries = prices.keys() countries.sort() counters = defaultdict(int) for country in countries: for type in prices[country]: current_rate, provider_code, ext = prices[country][type] if provider_code in providers: try: country_name = transformations.ccn_to_cn(transformations.cca2_to_ccn(country)) except: country_name = 'Unknown' if provider_code in loaded_providers: provider_prices = loaded_providers[provider_code] else: names = providers[provider_code] if names.__class__ == str: names = [names] all_prices = [] all_providers = set() for name in names: if name in ['freevoipdeal2', 'freevoipdeal3']: name = 'freevoipdeal' all_providers.add(name) # XXX check if prices are the same for given country... provider_prices = load_provider(name) loaded_providers[provider_code] = provider_prices try: country_price = normalize_price(provider_prices[country][type]) all_prices.append(country_price) except: traceback.print_exc() output += "problem with %s %s %s %s\n" % (name, country, type, name) ok = True if all_prices: last_price = all_prices[0] for aprice in all_prices: if aprice != last_price: output += country_name + " ["+country+"]\t"+type + " Price inconsistency %s %s\n" % (str(all_prices), str(all_providers)) ok = False else: output += "No prices for %s %s %s %s\n" % (name, country, type, str(all_providers)) if country in provider_prices and type in provider_prices[country]: current_rate = float(current_rate) names = providers[provider_code] provider_rate = normalize_price(provider_prices[country][type]) if current_rate != provider_rate: key = country + " " + type if key in winners: output += country_name + " ["+country+"]\t"+type + " %s -> %s %s %s\n" % (str(current_rate), str(provider_rate), str(providers[provider_code]), str(winners[key])) else: output += country_name + " ["+country+"]\t"+type + " %s -> %s %s\n" % (str(current_rate), str(provider_rate), str(providers[provider_code])) else: key = country + " " + type if key in winners: winner_rate = normalize_price(winners[key][0]) if winner_rate < current_rate: better_deal += "%s [%s]\t%s %s %s %s %s\n" % (country_name, country, type, current_rate, providers[provider_code], winner_rate, str(winners[key][1])) for winner in winners[key][1]: counters[winner] += 1 else: output += "%s %s not available\n" % (country, type) else: output += "unknown " + str(provider_code) + "\n" output += "\n\nBETTER DEALS\n" output += better_deal output += "\nWINNER COUNTERS\n" for winner in counters: output += "<b>%s:</b> %s\n" % (winner, counters[winner]) return output