예제 #1
0
    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,
        ))
예제 #2
0
        def product2data(product):
            tg_codename = Product.product2tradegood(product)
            tg = Tradegood.codename2tradegood(tg_codename)

            h = {
                "name": Tradegood.tradegood_lang2name(tg, lang),
            }
            return h
예제 #3
0
    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
예제 #4
0
    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
예제 #5
0
 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)
예제 #6
0
    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
예제 #7
0
 def product2tradegoodtype(cls, product):
     from henrique.main.document.tradegood.tradegood import Tradegood
     tradegood = Tradegood.codename2tradegood(cls.product2tradegood(product))
     return Tradegood.tradegood2tradegoodtype(tradegood)