def template_context(self, ctx, req): if 'country' in req.params: country = Country.get(req.params['country'], default=None) else: country = None if country: languages = country.languoids else: languages = list(ctx.get_query(limit=8000)) map_, icon_map, family_map = get_selected_languages_map(req, languages) return { 'map': map_, 'country': country, 'icon_map': icon_map, 'family_map': family_map, 'languages': languages}
def countries(args, languages, stats): """update relations between languages and countries they are spoken in. """ cname_map = { 'Tanzania': 'Tanzania, United Republic of', 'Russia': 'Russian Federation', 'South Korea': 'Korea, Republic of', 'Iran': 'Iran, Islamic Republic of', 'Syria': 'Syrian Arab Republic', 'Laos': "Lao People's Democratic Republic", r"C\^ote d'Ivoire": "Côte d'Ivoire", 'British Virgin Islands': 'Virgin Islands, British', 'Bolivia': 'Bolivia, Plurinational State of', 'Venezuela': 'Venezuela, Bolivarian Republic of', 'Democratic Republic of the Congo': 'Congo, The Democratic Republic of the', 'Micronesia': 'Micronesia, Federated States of', } countries = {} for row in dsv.reader( args.data_dir.joinpath('languoids', 'forkel_countries.tab'), encoding='latin1'): hid, cnames = row[0], row[1:] if hid not in languages: languages[hid] = Languoid.get(hid, key='hid', default=None) if not languages[hid]: args.log.warn('unknown hid in countries.tab: %s' % hid) continue l = languages[hid] if l.countries: # we only add country relations to new languages or languages which have none. continue for cname in set(cnames): if cname not in countries: q = cname if '(' not in cname else cname.split('(')[0].strip() countries[cname] = Country.get(cname_map.get(q, q), key='name', default=None) if not countries[cname]: args.log.warn('unknown country name in countries.tab: %s' % cname) continue c = countries[cname] if c.id not in [_c.id for _c in l.countries]: l.countries.append(c) stats.update(['countries'])
def countries(args, languages): count = 0 countries = {} for row in dsv.reader(args.data_file("countries.tab"), encoding="latin1"): hid, cnames = row[0], row[1:] if hid not in languages: languages[hid] = Languoid.get(hid, key="hid", default=None) if not languages[hid]: continue l = languages[hid] if l.countries: continue for cname in set(cnames): if cname not in countries: countries[cname] = Country.get(cname, key="name", default=None) if not countries[cname]: continue c = countries[cname] if c.id not in [_c.id for _c in l.countries]: l.countries.append(c) count += 1 print "countries:", count, "relations added"