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)
Example #3
0
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)
Example #5
0
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)