def get_format_id_from_season_id(season_id: int) -> int: season_code = rotation.SEASONS[int(season_id) - 1] if season_code == rotation.current_season_code(): format_name = 'Penny Dreadful' else: format_name = 'Penny Dreadful {f}'.format(f=season_code) return get_format_id(format_name)
def prepare_deck(self, d: Deck) -> None: set_stars_and_top8(d) if d.get('colors') is not None: d.colors_safe = colors_html(d.colors, d.colored_symbols) d.person_url = '/people/{id}/'.format(id=d.person_id) d.date_sort = dtutil.dt2ts(d.active_date) d.display_date = dtutil.display_date(d.active_date) d.show_record = d.wins or d.losses or d.draws if d.competition_id: d.competition_url = '/competitions/{id}/'.format( id=d.competition_id) d.url = '/decks/{id}/'.format(id=d.id) d.export_url = '/export/{id}/'.format(id=d.id) d.cmc_chart_url = '/charts/cmc/{id}-cmc.png'.format(id=d.id) if d.is_in_current_run(): d.active_safe = '<span class="active" title="Active in the current league">⊕</span>' d.stars_safe = '{active} {stars}'.format( active=d.active_safe, stars=d.stars_safe).strip() d.source_sort = '1' d.source_is_external = False if d.source_name == 'League' else True d.comp_row_len = len('{comp_name} (Piloted by {person}'.format( comp_name=d.competition_name, person=d.person)) if d.get('archetype_id', None): d.archetype_url = '/archetypes/{id}/'.format(id=d.archetype_id) if d.get('omw') is not None: d.omw = str(int(d.omw)) + '%' else: d.omw = '' d.has_legal_format = len(d.legal_formats) > 0 d.pd_legal = 'Penny Dreadful' in d.legal_formats d.legal_icons = '' sets = rotation.SEASONS if 'Penny Dreadful' in d.legal_formats: icon = rotation.current_season_code().lower() n = sets.index(icon.upper()) + 1 d.legal_icons += '<a href="{url}"><i class="ss ss-{code} ss-rare ss-grad">S{n}</i></a>'.format( url='/seasons/{id}/'.format(id=n), code=icon, n=n) past_pd_formats = [ fmt.replace('Penny Dreadful ', '') for fmt in d.legal_formats if 'Penny Dreadful ' in fmt ] past_pd_formats.sort(key=lambda code: -sets.index(code)) for code in past_pd_formats: n = sets.index(code.upper()) + 1 d.legal_icons += '<a href="{url}"><i class="ss ss-{set} ss-common ss-grad">S{n}</i></a>'.format( url='/seasons/{id}/'.format(id=n), set=code.lower(), n=n) if 'Commander' in d.legal_formats: # I think C16 looks the nicest. d.legal_icons += '<i class="ss ss-c16 ss-uncommon ss-grad">CMDR</i>' if session.get('admin') or not d.is_in_current_run(): d.decklist = str(d).replace('\n', '<br>') else: d.decklist = '' total, num_cards = 0, 0 for c in d.maindeck: if 'Land' not in c['card'].type: num_cards += c['n'] total += c['n'] * c['card'].cmc d.average_cmc = round(total / max(1, num_cards), 2)
def set_legal_icons(o: Union[Card, Deck]) -> None: o.legal_icons = '' sets = rotation.SEASONS if 'Penny Dreadful' in o.legal_formats: icon = rotation.current_season_code().lower() n = sets.index(icon.upper()) + 1 o.legal_icons += '<a href="{url}"><i class="ss ss-{code} ss-rare ss-grad">S{n}</i></a>'.format( url='/seasons/{id}/'.format(id=n), code=icon, n=n) past_pd_formats = [ fmt.replace('Penny Dreadful ', '') for fmt in o.legal_formats if 'Penny Dreadful ' in fmt ] past_pd_formats.sort(key=lambda code: -sets.index(code)) for code in past_pd_formats: n = sets.index(code.upper()) + 1 o.legal_icons += '<a href="{url}"><i class="ss ss-{set} ss-common ss-grad">S{n}</i></a>'.format( url='/seasons/{id}/'.format(id=n), set=code.lower(), n=n)
def update_pd_legality() -> None: for s in rotation.SEASONS: if s == rotation.current_season_code(): break set_legal_cards(season=s)
async def update_pd_legality_async() -> None: for s in rotation.SEASONS: if s == rotation.current_season_code(): break await set_legal_cards_async(season=s)