In the past I've used a timestamp key for the org. Create a key like f"org_{org.pk}" that has a timestamp. Then append that timestamp to the `get_users_for_org`. Now all you have to do is invalidate the org timestamp to generate a rolling key (requires more memory).
whats wrong with functools.partial? I don't see that anywhere in the arguments.. all you say is "I find functools.partial unintuitive".. why? its a simple wrapper.
One of the worst, most difficult projects I ever worked on was where I was forced into direct interaction with a "customer". She was a nice enough lady in general, and knew her subject area, but she had no technical skills at all. We were paired up to improve a part of the UI and we struggled because she would ask for things that were technically impossible, and get upset when I told her we couldn't do it. It got so bad that she complained to my boss that I wasn't doing my job as her "support person". Fortunately, my boss cleared up her misconception and we finished the project. But her fundamental failure to understand the technical limitations of the hardware and software, as well as not seeing me as a partner, were a huge hurdle.
Lichess is so much better. It's free. chess.com thinks its facebook and it looks really childish (they probably copied things from chesskid). They have like a billion developers (why? its chess.. and already done). Lichess is like 1 guy (who I think used to work for chesscom until the ceo was a dick or something)
def generate_payload(crust, sauce, cheese, toppings):