% else:
<div class="row">
<div class="span12">
- <h2>${player.nick_html_colors()|n}</h2>
- <h4><i><span class="abstime" data-epoch="${player.epoch()}" title="${player.create_dt.strftime('%a, %d %b %Y %H:%M:%S UTC')}">Joined ${player.joined_pretty_date()}</span> (player #${player.player_id})</i></h4>
+ <h2>
+ ${player.nick_html_colors()|n}
+ </h2>
+ <h4>
+ <i><span class="abstime" data-epoch="${player.epoch()}" title="${player.create_dt.strftime('%a, %d %b %Y %H:%M:%S UTC')}">Joined ${player.joined_pretty_date()}</span> (player #${player.player_id})</i>
+ % if cake_day:
+ <img src="/static/images/icons/24x24/cake.png" title="Happy cake day!" />
+ % endif
+ </h4>
</div>
</div>
result[key] = to_json(value.to_dict())
return result
+
+def is_leap_year(today_dt=None):
+ if today_dt is None:
+ today_dt = datetime.utcnow()
+
+ if today_dt.year % 400 == 0:
+ leap_year = True
+ elif today_dt.year % 100 == 0:
+ leap_year = False
+ elif today_dt.year % 4 == 0:
+ leap_year = True
+ else:
+ leap_year = False
+
+ return leap_year
+
+
+def is_cake_day(create_dt, today_dt=None):
+ cake_day = False
+
+ if today_dt is None:
+ today_dt = datetime.utcnow()
+
+ # cakes are given on the first anniversary, not the actual create date!
+ if datetime.date(today_dt) != datetime.date(create_dt):
+ if today_dt.day == create_dt.day and today_dt.month == create_dt.month:
+ cake_day = True
+
+ # leap year people get their cakes on March 1
+ if not is_leap_year(today_dt) and create_dt.month == 2 and create_dt.day == 29:
+ if today_dt.month == 3 and today_dt.day == 1:
+ cake_day = True
+
+ return cake_day
from webhelpers.paginate import Page
from xonstat.models import *
from xonstat.util import page_url, to_json, pretty_date, datetime_seconds
+from xonstat.util import is_cake_day
from xonstat.views.helpers import RecentGame, recent_games_q
log = logging.getLogger(__name__)
ranks = get_ranks(player_id)
recent_games = get_recent_games(player_id)
recent_weapons = get_recent_weapons(player_id)
+ cake_day = is_cake_day(player.create_dt)
except Exception as e:
player = None
ranks = None
recent_games = None
recent_weapons = []
+ cake_day = False
## do not raise exceptions here (only for debugging)
- #raise e
+ # raise e
return {'player':player,
'games_played':games_played,
'elos':elos,
'ranks':ranks,
'recent_games':recent_games,
- 'recent_weapons':recent_weapons
+ 'recent_weapons':recent_weapons,
+ 'cake_day':cake_day,
}