I'm working on a system where our customers will require the ability to setup *their* gateway accounts in our system to process billing. So far django-merchant appears to have the best/cleanest interface to multiple gateways, however, because the settings for the gateways are hard coded in the settings (sure I could muck with the settings object on the fly but that feels pretty hackish and I don't know if it will introduce thread safety issues), I can't use multiple gateway accounts simultaneously.
It appears as though it should be trivial to add the ability in get_gateway() to optionally pass the settings dictionary along with the gateway name, and then it should build the gateway object easily...
What is the preferred way in the project to pass these arguments? I see in the beanstream gateway that it expects all the args to be passed as kwargs... I was planning on implementing it as a single kwarg settings which would contain the same dictionary that is contained in the settings.py for each gateway... then the __init__ of each gateway can be implemented as gw_name_settings = kwargs.pop('settings', merchant_settings['gw_name'])... feels cleaner than having to pop kwargs all over the __init__ and the dictionaries can be completely interchangeable...
I hope to contribute my changes back to the project hence the question.
Thanks,
-Tom