11import logging
22import peewee
33from telegram .ext import ConversationHandler , CommandHandler , MessageHandler , filters
4- from pycamp_bot .models import Pycampista , Project , Vote
4+ from pycamp_bot .models import Pycampista , Project , Slot , Vote
55from pycamp_bot .commands .base import msg_to_active_pycamp_chat
66from pycamp_bot .commands .manage_pycamp import active_needed , get_active_pycamp
77from pycamp_bot .commands .auth import admin_needed , get_admins_username
8+ from pycamp_bot .commands .schedule import DIAS
89
910
1011current_projects = {}
@@ -254,6 +255,53 @@ async def show_projects(update, context):
254255 await update .message .reply_text (text )
255256
256257
258+ async def show_my_projects (update , context ):
259+ """Let people see what projects they have voted for"""
260+
261+ user = Pycampista .get (
262+ Pycampista .username == update .message .from_user .username ,
263+ )
264+ votes = (
265+ Vote
266+ .select (Project , Slot )
267+ .join (Project )
268+ .join (Slot )
269+ .where (
270+ (Vote .pycampista == user ) &
271+ Vote .interest
272+ )
273+ .order_by (Slot .code )
274+ )
275+
276+ if votes :
277+ text_chunks = []
278+
279+ prev_slot_day_code = None
280+
281+ for vote in votes :
282+ slot_day_code = vote .project .slot .code [0 ]
283+ slot_day_name = DIAS [slot_day_code ]
284+
285+ if slot_day_code != prev_slot_day_code :
286+ text_chunks .append (f'*{ slot_day_name } *' )
287+
288+ project_lines = [
289+ f'{ vote .project .slot .start } :00' ,
290+ vote .project .name ,
291+ f'Owner: @{ vote .project .owner .username } ' ,
292+ ]
293+
294+ text_chunks .append ('\n ' .join (project_lines ))
295+
296+ prev_slot_day_code = slot_day_code
297+
298+ text = '\n \n ' .join (text_chunks )
299+ else :
300+ text = "No votaste por ningún proyecto"
301+
302+ await update .message .reply_text (text , parse_mode = 'Markdown' )
303+
304+
257305def set_handlers (application ):
258306 application .add_handler (load_project_handler )
259307 application .add_handler (
@@ -264,3 +312,6 @@ def set_handlers(application):
264312 CommandHandler ('borrar_proyecto' , delete_project ))
265313 application .add_handler (
266314 CommandHandler ('proyectos' , show_projects ))
315+ application .add_handler (
316+ CommandHandler ('mis_proyectos' , show_my_projects ))
317+
0 commit comments