myslice/config becomes myslice/configengine to avoid confusion
[myslice.git] / manifold / manifoldapi.py
index a80a220..b1a1a0c 100644 (file)
@@ -1,7 +1,7 @@
 # Manifold API Python interface
 import copy, xmlrpclib
 
-from myslice.config import Config
+from myslice.configengine import ConfigEngine
 
 from django.contrib import messages
 from manifoldresult import ManifoldResult, ManifoldCode, ManifoldException
@@ -39,8 +39,7 @@ class ManifoldAPI:
         self.trace = []
         self.calls = {}
         self.multicall = False
-        config = Config()
-        self.url = config.manifold_url()
+        self.url = ConfigEngine().manifold_url()
         self.server = xmlrpclib.Server(self.url, verbose=False, allow_none=True)
 
     def __repr__ (self): return "ManifoldAPI[%s]"%self.url
@@ -132,9 +131,14 @@ def _execute_query(request, query, manifold_api_session_auth):
     print "-"*80
     result = manifold_api.forward(query.to_dict())
     if result['code'] == 2:
+        # this is gross; at the very least we need to logout() 
+        # but most importantly there is a need to refine that test, since 
+        # code==2 does not necessarily mean an expired session
         # XXX only if we know it is the issue
         del request.session['manifold']
-        raise Exception, 'Error running query: %r' % result
+        # Flush django session
+        request.session.flush()
+        #raise Exception, 'Error running query: %r' % result
     
     if result['code'] == 1:
         print "WARNING" 
@@ -147,12 +151,12 @@ def _execute_query(request, query, manifold_api_session_auth):
 
 def execute_query(request, query):
     if not 'manifold' in request.session or not 'auth' in request.session['manifold']:
+        request.session.flush()
         raise Exception, "User not authenticated"
     manifold_api_session_auth = request.session['manifold']['auth']
     return _execute_query(request, query, manifold_api_session_auth)
 
 def execute_admin_query(request, query):
-    config = Config()
-    admin_user, admin_password = config.manifold_admin_user_password()
+    admin_user, admin_password = ConfigEngine().manifold_admin_user_password()
     admin_auth = {'AuthMethod': 'password', 'Username': admin_user, 'AuthString': admin_password}
     return _execute_query(request, query, admin_auth)