# Path: whyattend/webapp.py
# def csrf_protect():
# def shutdown_session(exception=None):
# def generate_csrf_token():
# def lookup_current_user():
# def inject_constants():
# def require_login(f):
#     def decorated_function(*args, **kwargs):
# def require_clan_membership(f):
#     def decorated_f(*args, **kwargs):
# def require_role(f, roles):
#     def decorated_f(*args, **kwargs):
# def sync_players(clan_id=None):
# def index():
#         def cached_provinces_owned(clan_id):
#         def cached_battle_schedule(clan_id):
# def admin():
# def help_page():
# def attributions():
# def login():
# def create_or_login(resp):
# def create_profile():
# def logout():
# def create_battle_from_replay():
# def add_replay(battle_id):
# def edit_battle(battle_id):
# def create_battle():
# def battles_list(clan):
# def battles_list_json(clan):
#     def make_row(battle):
# def battle_group_details(group_id):
# def battle_details(battle_id):
# def delete_battle(battle_id):
# def clan_players(clan):
# def player_details(player_id):
# def sign_as_reserve(battle_id):
# def unsign_as_reserve(battle_id):
# def download_replay(battle_id):
# def download_additional_replay(replay_id):
# def delete_replay(replay_id):
# def download_replays():
# def payout(clan):
# def reserve_conflicts(clan):
#     def overlapping_battles(battle, ordered_battles, before_dt=timedelta(minutes=0), after_dt=timedelta(minutes=0)):
#     def get_reserve_conflicts(battles):
# def payout_battles(clan):
# def players_json():
# def reserve_players_json(clan, battle_id):
# def battle_reserves_update(battle_id):
# def payout_battles_json():
# def players_commanded(clan):
# def players_commanded_json():
# def clan_statistics(clan):
#     def weekrange(start, end):
# def player_performance(clan):
# def profile():
#     def weekrange(start, end):
# def export_profiles(clan):
# def battle_checksums():


from whyattend.webapp import app
"""
    Development server.
    DO NOT use this for application deployment.
"""


if __name__ == "__main__":

# Path: whyattend/webapp.py
# def csrf_protect():
# def shutdown_session(exception=None):
# def generate_csrf_token():
# def lookup_current_user():
# def inject_constants():
# def require_login(f):
#     def decorated_function(*args, **kwargs):
# def require_clan_membership(f):
#     def decorated_f(*args, **kwargs):
# def require_role(f, roles):
#     def decorated_f(*args, **kwargs):
# def sync_players(clan_id=None):
# def index():
#         def cached_provinces_owned(clan_id):
#         def cached_battle_schedule(clan_id):
# def admin():
# def help_page():
# def attributions():
# def login():
# def create_or_login(resp):
# def create_profile():
# def logout():
# def create_battle_from_replay():
# def add_replay(battle_id):
# def edit_battle(battle_id):
# def create_battle():
# def battles_list(clan):
# def battles_list_json(clan):
#     def make_row(battle):
# def battle_group_details(group_id):
# def battle_details(battle_id):
# def delete_battle(battle_id):
# def clan_players(clan):
# def player_details(player_id):
# def sign_as_reserve(battle_id):
# def unsign_as_reserve(battle_id):
# def download_replay(battle_id):
# def download_additional_replay(replay_id):
# def delete_replay(replay_id):
# def download_replays():
# def payout(clan):
# def reserve_conflicts(clan):
#     def overlapping_battles(battle, ordered_battles, before_dt=timedelta(minutes=0), after_dt=timedelta(minutes=0)):
#     def get_reserve_conflicts(battles):
# def payout_battles(clan):
# def players_json():
# def reserve_players_json(clan, battle_id):
# def battle_reserves_update(battle_id):
# def payout_battles_json():
# def players_commanded(clan):
# def players_commanded_json():
# def clan_statistics(clan):
#     def weekrange(start, end):
# def player_performance(clan):
# def profile():
#     def weekrange(start, end):
# def export_profiles(clan):
# def battle_checksums():


# Path: server.py
from whyattend.webapp import app

"""
    Development server.
    DO NOT use this for application deployment.
"""


if __name__ == "__main__":

    app.run(host='0.0.0.0', debug=True)