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)
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