diff --git a/src/pycamp_bot/commands/projects.py b/src/pycamp_bot/commands/projects.py index 5bc415d..3d80c4b 100644 --- a/src/pycamp_bot/commands/projects.py +++ b/src/pycamp_bot/commands/projects.py @@ -8,8 +8,7 @@ from pycamp_bot.commands.base import msg_to_active_pycamp_chat from pycamp_bot.commands.manage_pycamp import active_needed, get_active_pycamp from pycamp_bot.commands.auth import admin_needed, get_admins_username -from pycamp_bot.commands.schedule import DIAS -from pycamp_bot.utils import escape_markdown +from pycamp_bot.utils import escape_markdown, get_slot_weekday_name current_projects = {} @@ -546,7 +545,7 @@ async def show_my_projects(update, context): for vote in votes: slot_day_code = vote.project.slot.code[0] - slot_day_name = DIAS[slot_day_code] + slot_day_name = get_slot_weekday_name(slot_day_code) if slot_day_code != prev_slot_day_code: text_chunks.append(f'*{slot_day_name}*') diff --git a/src/pycamp_bot/commands/schedule.py b/src/pycamp_bot/commands/schedule.py index 82e5052..19c9c51 100644 --- a/src/pycamp_bot/commands/schedule.py +++ b/src/pycamp_bot/commands/schedule.py @@ -4,7 +4,7 @@ from pycamp_bot.commands.auth import admin_needed from pycamp_bot.scheduler.db_to_json import export_db_2_json from pycamp_bot.scheduler.schedule_calculator import export_scheduled_result -from pycamp_bot.utils import escape_markdown +from pycamp_bot.utils import escape_markdown, get_slot_weekday_name DAY_SLOT_TIME = { @@ -14,17 +14,6 @@ } -DIAS = { - 'A':'Jueves', - 'B':'Viernes', - 'C':'Sabado', - 'D':'Domingo', - 'E':'Lunes', - 'F':'Martes', - 'G':'Miercoles', - } - - async def cancel(update, context): await context.bot.send_message( chat_id=update.message.chat_id, @@ -153,13 +142,15 @@ async def make_schedule(update, context): ) -async def check_day_tab(day, slots, cronograma, i): - try: - if day != DIAS[slots[i-1].code[0]]: - cronograma.append('') - cronograma.append(f'*{day}:*') - except Exception as e: - print("ERROR ", e) +async def check_day_tab(slot, prev_slot, cronograma): + def append_day_name(): + cronograma.append(f'*{get_slot_weekday_name(slot.code[0])}:*') + + if prev_slot is None: + append_day_name() + elif slot.code[0] != prev_slot.code[0]: + cronograma.append('') + append_day_name() async def show_schedule(update, context): @@ -167,15 +158,18 @@ async def show_schedule(update, context): projects = Project.select() cronograma = [] + prev_slot = None + for i, slot in enumerate(slots): - day = DIAS[slot.code[0]] - await check_day_tab(day, slots, cronograma, i) + await check_day_tab(slot, prev_slot, cronograma) for project in projects: if project.slot_id == slot.id: cronograma.append(f'{slot.start}:00 *{escape_markdown(project.name)}*') cronograma.append(f'Owner: @{escape_markdown(project.owner.username)}') + prev_slot = slot + await context.bot.send_message( chat_id=update.message.chat_id, text='\n'.join(cronograma), diff --git a/src/pycamp_bot/utils.py b/src/pycamp_bot/utils.py index 202845f..161f064 100644 --- a/src/pycamp_bot/utils.py +++ b/src/pycamp_bot/utils.py @@ -1,3 +1,5 @@ +from pycamp_bot.models import Pycamp + def escape_markdown(string): # See: https://core.telegram.org/bots/api#markdownv2-style @@ -7,3 +9,24 @@ def escape_markdown(string): new_string = new_string.replace(char, f'\\{char}') return new_string + + +def get_slot_weekday_name(slot_day_code): + ISO_WEEKDAY_NAMES = { + 0: 'Lunes', + 1: 'Martes', + 2: 'Miércoles', + 3: 'Jueves', + 4: 'Viernes', + 5: 'Sábado', + 6: 'Domingo', + } + + pycamp_start_weekday = Pycamp.get(Pycamp.active == True).init.weekday() + + # Convert slot day code to a zero-based code, to use it as an + # offset to get the weekday name of the slot + offset = ord(slot_day_code) - ord('A') + day_name = ISO_WEEKDAY_NAMES[pycamp_start_weekday + offset] + + return day_name