def moved_players_with_powers(cursor): player_list = _players_that_moved_team(cursor) player_dict = player_q.get_all_players(cursor) output = [] query = """SELECT p.id, w.name FROM players p, powers w WHERE p.id = w.player AND p.id in ({players}) AND w.type = {standard}""".format( players = ",".join(player_list), standard=power.power_types.index("Standard"), ) try: cursor.execute(query) except Exception as e: raise Exception("Database error: %s\nQuery: %s" % (str(e.args[0]).replace("\n",""), query)) for row in cursor: output.append("%s (%s): %s" % (player_dict[row['id']].name, row['id'], row['name'])) if output != []: output.insert(0, "[r]Players with powers that moved team[/r]") output.append("") return "\n".join(output)
def _players_that_moved_team(cursor): player_history = {} player_dict = player_q.get_all_players(cursor) # Get last two turns of data query = """SELECT * FROM player_history WHERE turn >= %d""" % (common.current_turn()-2) try: cursor.execute(query) except Exception as e: raise Exception("Database error: %s\nQuery: %s" % (str(e.args[0]).replace("\n",""), query)) for row in cursor: if row['player'] not in player_dict: continue if player_dict[row['player']].last_posted <= common.current_turn()-6: continue if row['player'] not in player_history: player_history[row['player']] = {} player_history[row['player']][row['turn']] = row['team'] # import pprint # pprint.pprint(player_history) # Now find players that don't match up t1 = common.current_turn()-2 t2 = common.current_turn()-1 moved_players = [] for p, d in player_history.items(): if d.get(t1, 0) != d.get(t2, -1): # print("%s moved from %s to %s" % (player_dict[p].name, d.get(t1, 0), d.get(t2, -1))) moved_players.append(str(p)) return moved_players
def main(cursor): player_dict = player_q.get_all_players(cursor) getter_data = "p=%s&mode=surplus_accounts" % (common.data['getterPass']) surplus_list = urllib.request.urlopen(common.data['getter_url'], getter_data).read().strip() surplus_list = surplus_list.decode('utf-8').split("\n") surplus_list = [int(s) for s in surplus_list] output = ["""<div style='padding:5px;'> <table border="0" cellspacing="0" cellpadding="5"> <tr class="row2"> <th>Player</th> <th>Edit</th> </tr> """] i = -1 for s in surplus_list: if s not in player_dict: continue p = player_dict[s] if p.ir or p.not_surplus: continue i += 1 # Equipment output output.append(""" <tr class="row{r}"> <td><a href="http://woarl.com/board/memberlist.php?mode=viewprofile&u={id}">{name}</a></td> <td style="padding:0px;"><a href="web.py?mode=edit_player&player={id}" class="block_link">Edit</a></td> </tr> """.format( r = i % 2, id = s, name = p.name, )) output.append('</table></div>') return "".join(output)
def main(cursor): player_id = int(common.get_val('player', 0)) killer = int(common.get_val('killer', 0)) victim = int(common.get_val('victim', 0)) battle_id = int(common.get_val('battle', 0)) ajax = bool(common.get_val('ajax', False)) battle_dict = battle_q.get_all_battles(cursor) player_dict = player_q.get_all_players(cursor) active_dict = player_q.get_active_players(cursor) battle_dict[0] = battle.Battle({"name":"None"}) if killer > 0: kill_list = player_q.get_kills(cursor, killer=killer) elif victim > 0: kill_list = player_q.get_kills(cursor, victim=victim) elif battle_id > 0: kill_list = player_q.get_kills(cursor, battle=battle_id) else: kill_list = player_q.get_kills(cursor) output = [] output.append(""" <table border="0" cellspacing="0" cellpadding="5" style="width: 100%;"> <tr class="row2"> <th>Killer</th> <th>Victim</th> <th>Battle</th> <th>Turn</th> <th> </th> </tr>""") count = -1 for kill in kill_list: count += 1 output.append(""" <tr class="row%(row)d"> <td><a href="web.py?mode=edit_player&player=%(k_id)s">%(killer)s</a></td> <td><a href="web.py?mode=edit_player&player=%(v_id)s">%(victim)s</a></td> <td>%(battle)s <em>(%(c_id)s)</em></td> <td>%(turn)s</td> <td style="padding: 0px;"><a class="block_link" href="exec.py?mode=remove_kill&victim=%(v_id)s&killer=%(k_id)s&turn=%(turn)s&battle=%(c_id)s%(p_id)s">Remove</a></td> </tr> """ % { 'row': (count % 2), 'v_id': kill['victim'], 'k_id': kill['killer'], 'c_id': kill['battle'], 'p_id': ("&player=%d" % player_id if player_id > 0 else ""), 'killer': player_dict[kill['killer']].name, 'victim': player_dict[kill['victim']].name, "battle": battle_dict[kill['battle']].name, 'turn': kill['turn'], }) # Add new power names = {} for p, the_p in active_dict.items(): names[p] = the_p.name if not ajax: onload = common.onload("$('#killer').focus();") else: onload = "" count += 1 output.append(""" <tr class="row%(row)d"> <form action="exec.py" id="add_kill_form" method="post" accept-charset="utf-8"> <td style="padding: 1px;">%(killer)s</td> <td style="padding: 1px;">%(victim)s</td> <td style="padding: 0px;">%(battle)s</td> <td style="padding: 0px;">%(turn)s</td> <td style="padding: 1px;"> <input type="hidden" name="mode" value="add_kill" /> %(player_id)s <input type="submit" value="Add" /> </td> </form> %(onload)s </tr> """ % { 'row': (count % 2), 'killer': common.option_box( name='killer', elements=names, element_order=active_dict.keys(), selected = killer if killer > 0 else "", ), 'victim': common.option_box( name='victim', elements=names, element_order=active_dict.keys(), selected = victim if victim > 0 else "", ), "turn": '<input type="text" name="turn" id="turn" value="%d" />' % common.current_turn(), "battle": '<input type="text" name="battle" id="battle" value="%d" />' % battle_id, "onload": onload, "player_id": ('<input type="hidden" name="player" value="%d" />' % player_id if player_id > 0 else ""), }) output.append("</table>") return "".join(output)
def main(cursor): team_id = int(common.get_val('team', 0)) if team_id < 1: player_dict = player_q.get_all_players(cursor) else: player_dict = player_q.get_players_from_team(cursor, team_id) team_dict = team_q.get_all_teams(cursor) last_turn_count = 0 last_three_turns_count = 0 output = [""]# That's later swapped out for something else output.append(' <a href="web.py?mode=get_players">Get new players</a>') output.append(""" <table border="0" cellspacing="0" cellpadding="5" style="width: 100%;"> <tr class="row2"> <th>Player name</th> <th>Team</th> <th>Last posted</th> <th>Daemonic</th> <th colspan="2"> </th> </tr>""") current_turn = common.current_turn() count = -1 if len(player_dict) > 0: for player_id, the_player in player_dict.items(): if the_player.last_posted >= current_turn: last_turn_count += 1 if the_player.last_posted >= current_turn-3: last_three_turns_count += 1 count += 1 if the_player.team in team_dict: team_name = team_dict[the_player.team].name else: team_name = "None" output.append(""" <tr class="row%(row)d" id="%(player_id)d"> <td>%(name)s</td> <td>%(team)s</td> <td>%(daemon)s</td> <td>%(last_posted)s</td> <td style="padding:0px;"><a href="http://woarl.com/board/ucp.php?i=pm&mode=compose&u=%(player_id)s" class="block_link">PM</a></td> <td style="padding: 0px;"><a class="block_link" href="web.py?mode=edit_player&player=%(player_id)d">Edit</a></td> </tr> """ % { 'row': (count % 2), 'player_id': the_player.id, 'name': the_player.name, 'team': team_name, 'last_posted': the_player.last_posted, "daemon": "%s, %s" % (player.progressions[the_player.progression], player.daemon_types[the_player.daemon_type]), }) output.append("</table>") output[0] = "Last turn: %s, Last 3 turns: %s" % (last_turn_count, last_three_turns_count) return "".join(output)
def main(cursor): power_id = int(common.get_val('power', 0)) if power_id < 1: return "No power selected" the_power = power_q.get_one_power(cursor, power_id) output = ["<div style='padding: 5px;'>"] # Used for the player select menu player_dict = player_q.get_all_players(cursor) recent_dict = player_q.get_active_players(cursor) names = {} for p in recent_dict.keys(): names[p] = player_dict[p].name if the_power.player not in names: # recent_dict[the_power.id] = the_power.player names[the_power.player] = player_dict[the_power.player].name output.append(""" <form action="exec.py" method="post" accept-charset="utf-8"> <input type="hidden" name="mode" id="mode" value="edit_power_commit" /> <input type="hidden" name="id" id="id" value="%(power_id)s" /> <table border="0" cellspacing="5" cellpadding="5"> <tr> <td><label for="name">Name:</label></td> <td>%(name_text)s</td> <td width="5"> </td> <td><label for="player">Player:</label></td> <td>%(player_select)s</td> </tr> <tr> <td><label for="type">Type:</label></td> <td>%(type)s</td> <td width="5"> </td> <td> </td> <td> </td> </tr> <tr> <td colspan="5"><label for="description">Description:</label><br /> <textarea name="description" rows="4" cols="60">%(description)s</textarea></td> </tr> </table> <br /> <input type="submit" value="Perform edit" /> </form> <br /><br />""" % { "power_id": power_id, "name": the_power.name, "description": the_power.description, "name_text": common.text_box("name", the_power.name, size=20), "player_select": common.option_box( name='player', elements=names, element_order=recent_dict.keys(), selected=the_power.player, custom_id="", ), "type": common.option_box( name='type', elements=power.power_types, selected=power.power_types[the_power.type], ), }) # End of padding output.append("</div>") return "".join(output)
def main(cursor): player_id = int(common.get_val('player', 0)) ajax = bool(common.get_val('ajax', False)) if player_id < 1: power_dict = power_q.get_all_powers(cursor) else: power_dict = power_q.get_powers_from_player(cursor, player_id) player_dict = player_q.get_all_players(cursor) player_dict[0] = player.Player() player_dict[0].name = "None" output = [] output.append(""" <table border="0" cellspacing="0" cellpadding="5" style="width: 100%;"> <tr class="row2"> <th>Power name</th> <th>Player</th> <th>Type</th> <th>Description</th> <th> </th> </tr>""") count = -1 if len(power_dict) > 0: for power_id, the_power in power_dict.items(): count += 1 output.append(""" <tr class="row%(row)d" id="%(power_id)d"> <td>%(name)s</td> <td>%(player_name)s</td> <td>%(type)s</td> <td>%(description)s</td> <td style="padding: 0px;"><a class="block_link" href="web.py?mode=edit_power&power=%(power_id)d">Edit</a></td> </tr> """ % { 'row': (count % 2), 'power_id': the_power.id, 'name': the_power.name, "type": power.power_types[the_power.type], 'player_name': player_dict[the_power.player].name, 'description': the_power.description, }) # Add new power names = {} for p, the_p in player_dict.items(): names[p] = the_p.name # players_order.insert(0, 2) # names[2] = "Teifion" # ajax = bool(common.get_val('ajax', False)) if not ajax: onload = common.onload("$('#new_name').focus();") else: onload = "" count += 1 output.append(""" <tr class="row%(row)d"> <form action="exec.py" id="add_power_form" method="post" accept-charset="utf-8"> <input type="hidden" name="mode" value="add_power" /> <td style="padding: 1px;"><input type="text" name="name" id="new_name" value="" size="12"/></td> <td style="padding: 1px;">%(player_menu)s</td> <td style="padding: 1px;">%(type)s</td> <td style="padding: 1px;"><input type="text" name="power_description" value="" style="width: 98%%;" /></td> <td style="padding: 1px;"><input type="submit" value="Continue →" /></td> </form> %(onload)s </tr> """ % { 'row': (count % 2), 'player_menu': common.option_box( name='player', elements=names, element_order=player_dict.keys(), custom_id="", ), "type": common.option_box( "type", power.power_types, ), "onload": onload, }) output.append("</table>") return "".join(output)