示例#1
0
def macro_IncludeWeapons(macro, _trailing_args=[]):
    request = macro.request
    formatter = macro.formatter
    parser = macro.parser

    requested_weapons = _trailing_args
    if not requested_weapons:
        # assume the caller requested to show a weapon data of the current page.
        requested_weapons = [macro.formatter.page.page_name]
    else:
        parser = None
    requested_weapons.reverse()
    
    tables = []
    all_rows = []
    existing_weapons = []
    for weapon_name in requested_weapons:
        w = load_json_from_page(request, parser, weapon_name, u'weapon') or {}
        table = Table()
        if w:
            WeaponData.create_table(request, w, table, formatter, show_wp_owners=True)
            existing_weapons.append(weapon_name)
            all_rows.extend(table.rows)
            tables.append(table)

    table.remove_empty_columns(all_rows)

    html_tables = []
    for table in tables:
        html_tables.append(table.toHtmlTable(remove_empty_columns=False))

    html_rows = []
    for (weapon_name, html_table) in zip(existing_weapons, html_tables):
        row_cells = []
        row_cells.append(HtmlCell(
            formatter.pagelink(True, weapon_name) + formatter.text(weapon_name) + formatter.pagelink(False),
            attrs={u'colspan': (u'%d' % len(all_rows[0].cells))},
            formatted=True
        ))
        # row_cells has only 1 column because the all cells are colspan-ed.
        html_rows.append(HtmlRow(row_cells, cls=[u'wheader left']))
        html_rows.extend(html_table.rows)

    final_table = HtmlTable(html_rows)
    return final_table.format(formatter)
示例#2
0
文件: WPData.py 项目: wada314/gswiki
def get_leveled_weapon_and_subweapon_rows(request, j, formatter, name, level, place_name, wp_name):
    weapon_json = load_json_from_page(request, None, name, u'weapon') or {}
    row = Row()
    row.cells.append(Cell(u'装備箇所', place_name, cls=['center','hc']))
    WeaponData.create_row(request, weapon_json, row, level, formatter,
                          subweapon_in_row=False, subtrigger_in_row=False,
                          show_name=True)
    subrow = Row()
    subrow.cells.append(Cell(u'装備箇所', u'サブ', cls=[u'center','hc']))

    leveled_weapon = weapon_json.get(u'レベル', {}).get(u'%d' % level, {})
    if u'サブウェポン' in leveled_weapon:
        subweapon = leveled_weapon[u'サブウェポン']
        subname = subweapon[u'名称']
        sublevel = subweapon[u'レベル']
        subweapon_json = load_json_from_page(request, None, subname, u'weapon') or {}
        WeaponData.create_row(request, subweapon_json, subrow, sublevel, formatter,
                              subweapon_in_row=False, subtrigger_in_row=False,
                              show_name=True)
        return row, subrow
    elif u'サブトリガー' in leveled_weapon:
        subtrigger = leveled_weapon[u'サブトリガー']
        subrow.cells.append(Cell(u'武装名', u'(%s)' % subtrigger, cls=[u'center']))
        # fill empty columns so that this row does not be shorter than the other rows
        subrow.cells.extend([Cell()] * (len(row.cells) - 2))
        return row, subrow
    elif is_xi_wp(request, wp_name) and place_name in [u'サイド', u'タンデム']:
        subname = u'クシーバルカン' if place_name == u'サイド' else u'クシーグレネード'
        subweapon_json = load_json_from_page(request, None, subname, u'weapon') or {}
        WeaponData.create_row(request, subweapon_json, subrow, 1, formatter,
                              subweapon_in_row=False, subtrigger_in_row=False,
                              show_name=True)
        return row, subrow
    else:
        return row, None