- February 6, 2009
- soap soaplib wsdl web-services
- 1 (after 1 ratings)
This snippet is a replacement views.py for SOAP views with on-demand WSDL generation
It iterates over your installed apps looking for web_service.py in each one, any methods decorated with @soapmethod within web_service.py will automatically be imported into the local namespace making them visible in the WSDL.
It will blindly override local objects of the same name so it's not very safe (could do with some more error checks) but it works very well.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
from soaplib_handler import DjangoSoapApp from django.conf import settings import inspect class Service(DjangoSoapApp): for app in settings.INSTALLED_APPS: try: module = __import__(app + '.web_service', , , ['']) for key in module.__dict__: func = module.__dict__[key] if inspect.isfunction(func): if '_is_soap_method' in dir(func): locals()[key] = func except ImportError, e: pass service = Service()