Javascript подхода
Это связано с DOM, поэтому вам, вероятно, придется использовать Javascript вместо Python, если только вы не хотите, чтобы из вашего бэкэнда появлялись отвратительные сообщения об ошибках, сообщающие пользователю, что он не может сделать it.
Лог c прост: вы будете подсчитывать все выбранные итэны и подсчитывать их по категориям. Если вы достигнете любого из ваших правил, вы можете запретить выбор
Подход к серверу
Если вы хотите сделать это в бэкэнде (безобразно), вы можете просто рассчитывать на количество ваших запросов выбранных итенов и выбранных итенов по категориям и отправить пользователя обратно к сообщению с некоторым сообщением об ошибке, сообщающим, что он не могу этого сделать.