diff --git a/participate.py b/participate.py index cfcca40..8420b32 100755 --- a/participate.py +++ b/participate.py @@ -566,6 +566,18 @@ def save_staff_slot(turn_id, slot_id, user_id): return True return False +def check_user_availability(turn_id, user_id): + """ Check if user is available for this turn """ + turn_start, turn_end = Tetawebapp_turns.query.filter(Tetawebapp_turns.id==turn_id).with_entities(Tetawebapp_turns.start_time, Tetawebapp_turns.end_time).first() + user_turns = Tetawebapp_staffs.query.filter(Tetawebapp_staffs.user_id==user_id).with_entities(Tetawebapp_staffs.turn_id).all() + for turn in user_turns: + t_start, t_end = Tetawebapp_staffs.query.filter(Tetawebapp_turns.id==turn[0]).with_entities(Tetawebapp_turns.start_time, Tetawebapp_turns.end_time).first() + if t_start <= turn_start and t_end > turn_start: + return False + if t_start >= turn_start and t_start < turn_end: + return False + return True + ######################################################################## # Role ######################################################################## @@ -943,8 +955,9 @@ def update_staff_slot(TURN_ID, SLOT_ID): user_id = session['user_id'] user_name = get_user_name(user_id) if user_name != None: - if (save_staff_slot(turn_id, slot_id, user_id)): - return user_name + if check_user_availability(turn_id, user_id): + if (save_staff_slot(turn_id, slot_id, user_id)): + return user_name return "KO" except AttributeError as e: # User is not logged in