def tradegood2text(cls, tradegood_codename, port_codename_list, price_dict, lang): n = len(port_codename_list) tradegood = Tradegood.codename2tradegood(tradegood_codename) str_title = cls.tradegood_lang2title(tradegood, lang) def port2price(port_codename): price = MarketpriceDict.lookup(price_dict, port_codename, tradegood_codename) if price: return price price_fake = MarketpriceDoc.price_tradegood2doc_fake( port_codename, tradegood_codename) return price_fake price_list = lmap(port2price, port_codename_list) i_list_sorted = sorted( range(n), key=lambda i: MarketpriceDoc.key_default(price_list[i])) # price_list = sorted(price_list_raw, key=MarketpriceDoc.key_default) rows_body = [ cls._price_lang2text(price_list[i], port_codename_list[i], lang) for i in i_list_sorted ] return Rowsblock.rows2text(chain( [str_title], rows_body, ))
def product2data(product): tg_codename = Product.product2tradegood(product) tg = Tradegood.codename2tradegood(tg_codename) h = { "name": Tradegood.tradegood_lang2name(tg, lang), } return h
def codename_lang2json(cls, tradegood_codename, lang): ports = Port.tradegood2ports(tradegood_codename) tradegood = Tradegood.codename2tradegood(tradegood_codename) data = {cls.Field.TRADEGOOD_NAME: Tradegood.tradegood_lang2name(tradegood, lang), cls.Field.PORT_NAMES: sorted([Port.port_lang2name(port, lang) for port in ports],) } return data
def codename_lang2text(cls, tradegood_codename, lang): tradegood = Tradegood.codename2tradegood(tradegood_codename) prefer_list = Prefer.tradegood2prefers(tradegood_codename) def prefer2culture_name(prefer): culture = Culture.codename2culture(Prefer.prefer2culture(prefer)) culture_name = Culture.culture_lang2name(culture, lang) return culture_name preferred_culture_list = lmap(prefer2culture_name, prefer_list) preferred_cultures = ", ".join(preferred_culture_list) filepath = os.path.join(FILE_DIR, "tmplt.{}.part.txt".format(lang)) data = { "tradegood_name": Tradegood.tradegood_lang2name(tradegood, lang), "preferred_cultures": preferred_cultures, } text_out = str2strip(HenriqueJinja2.textfile2text(filepath, data)) return text_out
def _price_lang2text(cls, price, tradegood_codename, lang): price_text = PriceSkill.price_lang2text(price, lang) tradegood_name = Tradegood.tradegood_lang2name( Tradegood.codename2tradegood(tradegood_codename), lang) return "{} {}".format(tradegood_name, price_text)
def codename_lang2text(cls, tradegood_codename, lang): logger = HenriqueLogger.func_level2logger(cls.codename_lang2text, logging.DEBUG) tradegood = Tradegood.codename2tradegood(tradegood_codename) filepath = os.path.join(FILE_DIR, "tmplt.{}.part.txt".format(lang)) tgt_codename = Tradegood.tradegood2tradegoodtype(tradegood) tgt = Tradegoodtype.codename2tradegoodtype( tgt_codename) if tgt_codename else None category = Tradegoodtype.tradegoodtype2category(tgt) if tgt else None ports_selling = Port.tradegood2ports(tradegood_codename) prefers = Prefer.tradegood2prefers(tradegood_codename) # def prefers2cultures(prefers): # culture_codenames = luniq(map(Prefer.prefer2culture, prefers)) # return lmap(Culture.codename2culture, culture_codenames) culture_codenames_preferred = luniq(map(Prefer.prefer2culture, prefers)) if prefers else [] # culture_list_preferred = prefers2cultures(prefers) if prefers else [] port_list_preferred = lchain( *map(Port.culture2ports, culture_codenames_preferred)) def port2is_resistant(port): if not tgt: return False products = Product.port2products(Port.port2codename(port)) tgt_codenames_port = smap(Product.product2tradegoodtype, products) logger.debug({ "tgt": tgt, "tgt_codenames_port": tgt_codenames_port }) return Tradegoodtype.tradegoodtype2codename( tgt) in tgt_codenames_port port_list_preferred_resistant = lfilter(port2is_resistant, port_list_preferred) def ports2str(ports): if not ports: return None return ", ".join( [Port.port_lang2name(port, lang) for port in ports]) def culture_codenames2str(culture_codenames): if not culture_codenames: return None logger.debug({"culture_codenames": culture_codenames}) cultures = lmap(Culture.codename2culture, culture_codenames) return ", ".join([ Culture.culture_lang2name(culture, lang) for culture in cultures ]) logger.debug( {"culture_codenames_preferred": culture_codenames_preferred}) data = { "name": Tradegood.tradegood_lang2name(tradegood, lang), "category": Tradegoodcategory.tradegoodcategory2str(category) if category else None, "tradegoodtype": Tradegoodtype.tradegoodtype_lang2name(tgt, lang) if tgt else None, "ports_selling": ports2str(ports_selling), "cultures_preferred": culture_codenames2str(culture_codenames_preferred), "ports_preferred_resistant": ports2str(port_list_preferred_resistant), } text_out = str2strip(HenriqueJinja2.textfile2text(filepath, data)) return text_out
def product2tradegoodtype(cls, product): from henrique.main.document.tradegood.tradegood import Tradegood tradegood = Tradegood.codename2tradegood(cls.product2tradegood(product)) return Tradegood.tradegood2tradegoodtype(tradegood)