def fix_name(attr, lang): name_lang = "name_" + lang desc_lang = "desc_" + lang keywords_lang = "keywords_" + lang if desc_lang in attr: attr["desc"] = title_case(attr[desc_lang]) if "desc_en" in attr: del attr["desc_en"] if "desc_pt" in attr: del attr["desc_pt"] if name_lang in attr: attr["name"] = title_case(attr[name_lang]) if "name_en" in attr: del attr["name_en"] if "name_pt" in attr: del attr["name_pt"] if keywords_lang in attr: attr["keywords"] = title_case(attr[keywords_lang]) if "keywords_en" in attr: del attr["keywords_en"] if "keywords_pt" in attr: del attr["keywords_pt"] return attr
def title(self, **kwargs): lang = g.locale if "lang" in kwargs: lang = kwargs["lang"] name_lang = "name_en" if lang == "en" else "name_pt" title = getattr(Plan_Title.query.get(self.title_id),name_lang) def get_article(attr, article): if attr.article_pt: if attr.gender_pt == "m": if article == "em": new_article = "no" if article == "de": new_article = "do" if article == "para": new_article = "para o" elif attr.gender_pt == "f": if article == "em": new_article = "na" if article == "de": new_article = "da" if article == "para": new_article = "para a" if attr.plural_pt: new_article = new_article + "s" return new_article else: return article if title: variables = ["bra","isic","hs","cbo","wld"] and_joiner = " and " if lang == "en" else " e " for var in enumerate(variables): filter = var[1] if "<{0}>".format(filter) in title: title = title.replace("<{0}>".format(filter), and_joiner.join([getattr(b, name_lang) for b in getattr(self,filter)])) article_search = re.search("<{0}_(\w+)>".format(filter), title) if article_search: title = title.replace(article_search.group(0), and_joiner.join([get_article(b, article_search.group(1)) for b in getattr(self,filter)])) return title_case(title)
def guide(category = None, category_id = None, option = None, option_id = None, extra_id = None): item = None article = None selector = category plan = None group = None crumbs = [] depths = { "bra": [2,3,4,7,8], "isic": [1,5], "cbo": [1,4], "hs": [2,6], "wld": [2,5] } if option: if category_id == "all": category_type = category_id else: category_type = "<{0}.{1}>".format(category,len(category_id)) if option_id == "isic" or option_id == "hs": option_type = option_id elif option_id and option_id != "all": option_type = "<bra.{0}>".format(len(option_id)) else: option_type = option_id if extra_id and extra_id != "select" and extra_id != "all": extra_type = "<{0}.{1}>".format(option_id,len(extra_id)) elif extra_id != "select": extra_type = extra_id else: extra_type = None plan = Plan.query.filter_by(category=category, category_type=category_type, option=option, option_type=option_type, option_id=extra_type).first() # raise Exception(plan) if plan: g.page_type = "plan" page = "guide/guide.html" plan.set_attr(category_id,category) if category == "bra" and extra_id: plan.set_attr(extra_id,option_id) if category != "bra": if option_type and "<bra" in option_type: plan.set_attr(option_id,"bra") else: plan.set_attr("all","bra") builds = [0]*len(plan.builds.all()) for pb in plan.builds.all(): build = {} build["url"] = "/apps/embed/{0}{1}".format(pb.build.all()[0].url(),pb.variables) params = dict(urls.url_decode(pb.variables[1:])) build["title"] = pb.build.all()[0].title(**params) build["type"] = pb.build.all()[0].app.type build["position"] = pb.position builds[pb.position-1] = build plan = {"title": plan.title(), "builds": builds} elif extra_id == "select" or option_id == "select" or category_id == "select": page = "general/selector.html" if extra_id: selector = option_id elif option_id: selector = "bra" elif option: if category == "cbo": selector = "bra" page = "guide/choice.html" elif category == "bra": page = "guide/industry.html" elif category == "hs" or category == "isic" and option == "potential": selector = "bra" page = "guide/choice.html" elif category_id: if category == "bra": if len(category_id) == depths[category][0]: group = "parent" elif len(category_id) == depths[category][1]: group = "all" else: group = "child" else: if len(category_id) == depths[category][0]: group = "parent" elif len(category_id) == depths[category][1]: group = "child" page = "guide/{0}.html".format(category) elif category == "industry": page = "guide/industry.html" elif category: page = "guide/choice.html" else: page = "guide/index.html" if selector == "cbo": article = gettext(u"an occupation") elif selector == "isic": article = gettext(u"an industry") elif selector == "hs": article = gettext(u"a product") elif selector == "bra": article = gettext(u"a location") if category: url = "/guide/" crumbs.append({"url": url, "text": gettext("Guide")}) if category == "cbo": crumb_title = gettext(u"Career") elif category == "industry": crumb_title = gettext(u"Industry") elif category == "isic": crumb_title = gettext(u"Establishments and Employment") elif category == "hs": crumb_title = gettext(u"Product Exports") elif category == "bra": crumb_title = gettext(u"Location") url += "{0}/".format(category) crumbs.append({"url": url, "text": crumb_title}) if category_id: url += "{0}/".format(category_id) if category_id != "all" and category_id != "select": table = category.title() item = globals()[table].query.get_or_404(category_id).name() elif category == "bra": item = Wld.query.get_or_404("sabra").name() if item: crumbs.append({"url": url, "text": item}) elif category_id == "all": crumb_title = gettext("All") crumbs.append({"url": url, "text": crumb_title}) if option: url += "{0}/".format(option) if option == "isic": crumb_title = gettext(u"Establishments and Employment") elif option == "hs": crumb_title = gettext(u"Product Exports") else: crumb_title = gettext(title_case(option)) crumbs.append({"url": url, "text": crumb_title}) if option_id: url += "{0}/".format(option_id) if option_id == "isic": crumb_title = gettext(u"Establishments and Employment") elif option_id == "hs": crumb_title = gettext(u"Product Exports") elif option_id == "all": crumb_title = Wld.query.get_or_404("sabra").name() elif option_id != "select": crumb_title = Bra.query.get(option_id).name() if option_id != "select": crumbs.append({"url": url, "text": crumb_title}) if extra_id and extra_id != "select": url += "{0}/".format(extra_id) if option_id == "hs": crumb_title = Hs.query.get(extra_id).name() if option_id == "isic": crumb_title = Isic.query.get(extra_id).name() crumbs.append({"url": url, "text": crumb_title}) crumbs[len(crumbs)-1]["current"] = True return render_template(page, category = category, category_id = category_id, option = option, item = item, article = article, selector = selector, plan = plan, group = group, crumbs = crumbs)
def title(self, **kwargs): lang = g.locale if "lang" in kwargs: lang = kwargs["lang"] title_lang = "title_en" if lang == "en" else "title_pt" name_lang = "name_en" if lang == "en" else "name_pt" title = getattr(self, title_lang) depths = {"en":{"plural":{},"single":{}},"pt":{"plural":{},"single":{}}} depths["en"]["single"] = {"2":u"State","4":u"Mesoregion","8":u"Municipality"} depths["en"]["plural"] = {"2":u"States","4":u"Mesoregions","8":u"Municipalities"} depths["pt"]["single"] = {"2":u"Estado","4":u"Mesorregião","8":u"Município"} depths["pt"]["plural"] = {"2":u"Estados","4":u"Mesorregiões","8":u"Municípios"} if "depth" in kwargs and u"bra_" in kwargs["depth"][0] and kwargs["depth"][0] != "bra_8": if depths[lang]["plural"]["8"] in title: title = title.replace(depths[lang]["plural"]["8"],depths[lang]["plural"][kwargs["depth"][0][4:]]) if depths[lang]["single"]["8"] in title: title = title.replace(depths[lang]["single"]["8"],depths[lang]["single"][kwargs["depth"][0][4:]]) if self.output == "bra" and isinstance(self.bra,(list,tuple)) and self.bra[0].id == "all": title = title.replace(depths[lang]["plural"]["8"],depths[lang]["plural"]["2"]) title = title.replace(depths[lang]["single"]["8"],depths[lang]["single"]["2"]) if self.app_id != 2: if "year" in kwargs: year = kwargs["year"] else: year = __latest_year__[self.dataset] title += " ({0})".format(year) def get_article(attr, article): if attr.article_pt: if attr.gender_pt == "m": if article == "em": new_article = "no" if article == "de": new_article = "do" if article == "para": new_article = "para o" elif attr.gender_pt == "f": if article == "em": new_article = "na" if article == "de": new_article = "da" if article == "para": new_article = "para a" if attr.plural_pt: new_article = new_article + "s" return new_article else: return article if title: if lang == "pt": joiner = " e " else: joiner = " and " if "<bra>" in title and isinstance(self.bra,(list,tuple)): bras = [] for b in self.bra: name = title_case(getattr(b, name_lang)) if b.id != "all" and b.distance > 0: name = name + " "+b.distance+"km" bras.append(name) article_search = re.search('<bra_(\w+)>', title) if article_search: title = title.replace(" <bra>", "") title = title.replace(article_search.group(0), joiner.join([get_article(b, article_search.group(1)) + " " + bras[i] for i, b in enumerate(self.bra)])) else: title = title.replace("<bra>", joiner.join(bras)) if "<isic>" in title and hasattr(self,"isic"): title = title.replace("<isic>", joiner.join([title_case(getattr(i, name_lang)) for i in self.isic])) article_search = re.search('<isic_(\w+)>', title) if article_search: title = title.replace(article_search.group(0), joiner.join([get_article(b, article_search.group(1)) for b in self.isic])) if "<hs>" in title and hasattr(self,"hs"): title = title.replace("<hs>", joiner.join([title_case(getattr(h, name_lang)) for h in self.hs])) article_search = re.search('<hs_(\w+)>', title) if article_search: title = title.replace(article_search.group(0), joiner.join([get_article(b, article_search.group(1)) for b in self.hs])) if "<cbo>" in title and hasattr(self,"cbo"): title = title.replace("<cbo>", joiner.join([title_case(getattr(c, name_lang)) for c in self.cbo])) article_search = re.search('<cbo_(\w+)>', title) if article_search: title = title.replace(article_search.group(0), joiner.join([get_article(b, article_search.group(1)) for b in self.cbo])) if "<wld>" in title and hasattr(self,"wld"): title = title.replace("<wld>", joiner.join([title_case(getattr(w, name_lang)) for w in self.wld])) article_search = re.search('<wld_(\w+)>', title) if article_search: title = title.replace(article_search.group(0), joiner.join([get_article(b, article_search.group(1)) for b in self.wld])) return title
def name(self): lang = getattr(g, "locale", "en") return title_case(getattr(self,"name_"+lang))