Python backend for a Slack's kudos plugin.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: dynamic groups

+17 -5
+2 -1
kefi/config/__init__.py
··· 16 16 PLAZA_PRICE: int = 10 17 17 PLAZA_DEFAULT_HOUR: int = 10 18 18 PLAZA_DEFAULT_MINUTE: int = 0 19 - PLAZA_SIZE: int = 4 19 + PLAZA_SIZE: int = "3-5" 20 + PLAZA_SIZE_OPTIONS: int = [3, 4, 5] 20 21 LOCALE: str = "es_ES" 21 22 KUDOS_PRICE: int = 100 22 23 CONGRATS_PRICE: int = 25
+15 -4
kefi/models/plazas/helpers.py
··· 102 102 results = session.exec(query).all() 103 103 users = [attendance.user for attendance in results] 104 104 random.shuffle(users) 105 - return [ 106 - users[index : index + settings.PLAZA_SIZE] 107 - for index in range(0, len(users), settings.PLAZA_SIZE) 108 - ] 105 + return group_users(users) 106 + 107 + 108 + def group_users(users: list[Attendance]) -> list[list]: 109 + group_size = 3 110 + for size in settings.PLAZA_SIZE_OPTIONS: 111 + if len(users) % size == 0: 112 + group_size = size 113 + grouped_users = list( 114 + [users[i : i + group_size] for i in range(0, len(users), group_size)] 115 + ) 116 + if len(grouped_users[-1]) < group_size: 117 + orphanUsers = grouped_users.pop() 118 + grouped_users[-1].extend(orphanUsers) 119 + return grouped_users 109 120 110 121 111 122 def notify_plaza(session: Session, plaza: Plaza | None = None):