use logger instead of print as often as possible
authorThierry Parmentelat <thierry.parmentelat@inria.fr>
Tue, 31 Mar 2015 08:55:54 +0000 (10:55 +0200)
committerThierry Parmentelat <thierry.parmentelat@inria.fr>
Tue, 31 Mar 2015 08:55:54 +0000 (10:55 +0200)
(I have stayed away from the forge and sla modules though)

49 files changed:
activity/__init__.py
localauth/manifoldbackend.py
localauth/views.py
manifoldapi/manifoldapi.py
manifoldapi/manifoldproxy.py
manifoldapi/metadata.py
myslice/components.py
myslice/settings.py
plugins/querygrid/__init__.py
plugins/querytable/__init__.py
plugins/univbris/__init__.py
plugins/univbrisfoam/__init__.py
plugins/univbrisfv/__init__.py
plugins/univbristopo/__init__.py
plugins/univbrisvtam/__init__.py
portal/accountview.py
portal/actions.py
portal/dashboardview.py
portal/emailactivationview.py
portal/forms.py
portal/homeview.py
portal/institution.py
portal/joinview.py
portal/managementtababout.py
portal/managementtabrequests.py
portal/manageuserview.py
portal/platformview.py
portal/projectrequestview.py
portal/registrationview.py
portal/resourceview.py
portal/slicerequestview.py
portal/sliceresourceview.py
portal/slicetabexperiment.py
portal/univbrisview.py
portal/validationview.py
rest/__init__.py
rest/create.py
rest/get.py
rest/initscript.py
rest/sfa_api.py
rest/update.py
sample/tabview.py
sample/topmenuvalidationview.py
ui/topmenu.py
unfold/composite.py
unfold/loginrequired.py
unfold/page.py
unfold/plugin.py
unfold/prelude.py

index e8eb5c3..62fbc9e 100644 (file)
@@ -6,8 +6,6 @@
 # The secret is a 64 chars string that is used to sign the request
 # The generated signature is a SHA256 hes digest
 
 # The secret is a 64 chars string that is used to sign the request
 # The generated signature is a SHA256 hes digest
 
-from __future__ import print_function
-
 import urllib, urllib2
 import threading
 import hmac
 import urllib, urllib2
 import threading
 import hmac
@@ -16,6 +14,8 @@ import base64
 import time
 import datetime
 from myslice.configengine import ConfigEngine
 import time
 import datetime
 from myslice.configengine import ConfigEngine
+from myslice.settings import logger
+
 
 config = ConfigEngine()
 if config.activity and config.activity.apikey :
 
 config = ConfigEngine()
 if config.activity and config.activity.apikey :
@@ -39,10 +39,10 @@ else :
 def logWrite(request, action, message, objects = None):
     
     if not apikey :
 def logWrite(request, action, message, objects = None):
     
     if not apikey :
-        print("===============>> activity: no apikey")
+        logger.info("===============>> activity: no apikey")
         return
     if not secret :
         return
     if not secret :
-        print("===============>> activity: no secret")
+        logger.info("===============>> activity: no secret")
         return
     
     timestamp = time.mktime(datetime.datetime.today().timetuple())
         return
     
     timestamp = time.mktime(datetime.datetime.today().timetuple())
@@ -71,12 +71,11 @@ def logWrite(request, action, message, objects = None):
     
     try :
         result = urllib2.urlopen(server, urllib.urlencode(log))
     
     try :
         result = urllib2.urlopen(server, urllib.urlencode(log))
-        print("===============>> activity: %s <%s> %s" % (action, request.user,message))
+        logger.info("===============>> activity: {} <{}> {}".format(action, request.user,message))
         content = result.read()
     except urllib2.URLError as e:
         content = result.read()
     except urllib2.URLError as e:
-        print("===============>> activity: connection to " + server + " impossible, could not log action")
-        print(e.strerror)
-        print("")
+        logger.error("===============>> activity: connection to {} impossible, could not log action".format(server))
+        logger.error(e.strerror)
 
 def log(request, action, message, objects = None):
     # Create a new thread in Daemon mode to send the log entry
 
 def log(request, action, message, objects = None):
     # Create a new thread in Daemon mode to send the log entry
index 9c19c9b..4889d34 100644 (file)
@@ -55,7 +55,7 @@ class ManifoldBackend:
         except Exception as e:
             logger.error("Exception in Manifold Auth Backend: {}".format(e))
             import traceback
         except Exception as e:
             logger.error("Exception in Manifold Auth Backend: {}".format(e))
             import traceback
-            traceback.print_exc()
+            logger.error(traceback.format_exc())
             return None
 
         try:
             return None
 
         try:
index e782b6f..bcba326 100644 (file)
@@ -1,8 +1,8 @@
-from __future__ import print_function
-
 from django.contrib.auth import logout
 from django.http import HttpResponseRedirect
 
 from django.contrib.auth import logout
 from django.http import HttpResponseRedirect
 
+from myslice.settings import logger
+
 import activity.user
 
 # hard question : where should we redirect requests to logout if user is not logged in ?
 import activity.user
 
 # hard question : where should we redirect requests to logout if user is not logged in ?
@@ -10,7 +10,7 @@ def logout_user (request):
     # check that we're indeed logged in
     if not request.user.is_authenticated():
         return HttpResponseRedirect ('/')
     # check that we're indeed logged in
     if not request.user.is_authenticated():
         return HttpResponseRedirect ('/')
-    print("LOGGING OUT")
+    logger.info("LOGGING OUT")
     
     # log user activity
     activity.user.logout(request)
     
     # log user activity
     activity.user.logout(request)
index d2b8ae0..f487cb8 100644 (file)
@@ -1,6 +1,4 @@
 # Manifold API Python interface
 # Manifold API Python interface
-from __future__ import print_function
-
 import copy
 import xmlrpclib
 import ssl
 import copy
 import xmlrpclib
 import ssl
@@ -66,9 +64,9 @@ class ManifoldAPI:
                 return ResultValue(**result)
 
             except Exception as error:
                 return ResultValue(**result)
 
             except Exception as error:
-                print("===== xmlrpc catch-all exception:", error)
+                logger.error("===== xmlrpc catch-all exception: {}".format(error))
                 import traceback
                 import traceback
-                traceback.print_exc(limit=3)
+                logger.error(traceback.format_exc(limit=3))
                 
                 if "Connection refused" in error:
                     raise ManifoldException ( ManifoldResult (code=ManifoldCode.SERVER_UNREACHABLE,
                 
                 if "Connection refused" in error:
                     raise ManifoldException ( ManifoldResult (code=ManifoldCode.SERVER_UNREACHABLE,
index d9b9861..a42e98d 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 import json
 import os.path
 
 import json
 import os.path
 
@@ -14,7 +12,7 @@ from manifoldapi                import ManifoldAPI
 from manifoldresult             import ManifoldException
 from manifold.util.log          import Log
 
 from manifoldresult             import ManifoldException
 from manifold.util.log          import Log
 
-from myslice.settings import config, logger, DEBUG
+from myslice.settings import config, logger
 
 # register activity
 import activity.slice
 
 # register activity
 import activity.slice
@@ -37,18 +35,18 @@ def proxy (request,format):
     
     # expecting a POST
     if request.method != 'POST':
     
     # expecting a POST
     if request.method != 'POST':
-        logger.error("MANIFOLDPROXY unexpected method %s -- exiting" % request.method)
+        logger.error("MANIFOLDPROXY unexpected method {} -- exiting".format(request.method))
         return HttpResponse ({"ret":0}, mimetype="application/json")
     # we only support json for now
     # if needed in the future we should probably cater for
     # format_in : how is the query encoded in POST
     # format_out: how to serve the results
     if format != 'json':
         return HttpResponse ({"ret":0}, mimetype="application/json")
     # we only support json for now
     # if needed in the future we should probably cater for
     # format_in : how is the query encoded in POST
     # format_out: how to serve the results
     if format != 'json':
-        logger.error("MANIFOLDPROXY unexpected format %s -- exiting" % format)
+        logger.error("MANIFOLDPROXY unexpected format {} -- exiting".format(format))
         return HttpResponse ({"ret":0}, mimetype="application/json")
     try:
         # translate incoming POST request into a query object
         return HttpResponse ({"ret":0}, mimetype="application/json")
     try:
         # translate incoming POST request into a query object
-        #logger.debug("MANIFOLDPROXY request.POST %s" % request.POST)
+        #logger.debug("MANIFOLDPROXY request.POST {}".format(request.POST))
 
         manifold_query = Query()
         #manifold_query = ManifoldQuery()
 
         manifold_query = Query()
         #manifold_query = ManifoldQuery()
@@ -87,7 +85,7 @@ def proxy (request,format):
         #
         # resource reservation
         if (manifold_query.action.lower() == 'update') :
         #
         # resource reservation
         if (manifold_query.action.lower() == 'update') :
-            print(result['value'][0])
+            logger.debug(result['value'][0])
             if 'resource' in result['value'][0] :
                 for resource in result['value'][0]['resource'] :
                     activity.slice.resource(request, 
             if 'resource' in result['value'][0] :
                 for resource in result['value'][0]['resource'] :
                     activity.slice.resource(request, 
@@ -104,10 +102,10 @@ def proxy (request,format):
 
         return HttpResponse (json_answer, mimetype="application/json")
 
 
         return HttpResponse (json_answer, mimetype="application/json")
 
-    except Exception,e:
-        logger.error("MANIFOLDPROXY %s" % e)
+    except Exception as e:
+        logger.error("MANIFOLDPROXY {}".format(e))
         import traceback
         import traceback
-        traceback.print_exc()
+        logger.error(traceback.format_exc())
         return HttpResponse ({"ret":0}, mimetype="application/json")
 
 #################### 
         return HttpResponse ({"ret":0}, mimetype="application/json")
 
 #################### 
@@ -116,5 +114,5 @@ def proxy (request,format):
 # this however turns out disappointing/not very informative
 failure_answer=[ "csrf_failure" ]
 def csrf_failure(request, reason=""):
 # this however turns out disappointing/not very informative
 failure_answer=[ "csrf_failure" ]
 def csrf_failure(request, reason=""):
-    print("CSRF failure with reason '%s'"%reason)
+    logger.error("CSRF failure with reason '{}'".format(reason))
     return HttpResponseForbidden (json.dumps (failure_answer), mimetype="application/json")
     return HttpResponseForbidden (json.dumps (failure_answer), mimetype="application/json")
index e4be9e0..f8e9b34 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 import json 
 import os.path
 
 import json 
 import os.path
 
@@ -8,6 +6,8 @@ from manifoldapi        import ManifoldAPI
 
 from django.contrib     import messages
 
 
 from django.contrib     import messages
 
+from myslice.settings   import logger
+
 debug=False
 #debug=True
 
 debug=False
 #debug=True
 
@@ -36,10 +36,10 @@ class MetaData:
         # xxx need a way to export error messages to the UI
         if result['code'] == 1: # warning
             # messages.warning(request, result['description'])
         # xxx need a way to export error messages to the UI
         if result['code'] == 1: # warning
             # messages.warning(request, result['description'])
-            print(("METADATA WARNING -",request,result['description']))
+            logger.warning(("METADATA WARNING - {} {}".format(request,result['description'])))
         elif result['code'] == 2:
             # messages.error(request, result['description'])
         elif result['code'] == 2:
             # messages.error(request, result['description'])
-            print(("METADATA ERROR -",request,result['description']))
+            logger.error(("METADATA ERROR - {} {}".format(request,result['description'])))
             # XXX FAIL HERE XXX
             return
 
             # XXX FAIL HERE XXX
             return
 
@@ -60,5 +60,6 @@ class MetaData:
         return self.hash_by_object[object]['column'].sort()
 
     def get_field_type(self, object, field):
         return self.hash_by_object[object]['column'].sort()
 
     def get_field_type(self, object, field):
-        if debug: print("Temp fix for metadata::get_field_type() -> consider moving to manifold.core.metadata soon")
+        if debug:
+            logger.debug("Temp fix for metadata::get_field_type() -> consider moving to manifold.core.metadata soon")
         return field
         return field
index 84e392c..ea4d88c 100644 (file)
@@ -14,9 +14,9 @@ def urls():
             __import__(component)
             u.append( url(r'^%s/' % component, include('%s.urls' % component)) )
         except Exception, e:
             __import__(component)
             u.append( url(r'^%s/' % component, include('%s.urls' % component)) )
         except Exception, e:
-            logger.info("Cannot load component (%s): %s" % (component, e))
+            logger.error("Cannot load component ({}): {}".format(component, e))
         else:
         else:
-            logger.info("Loaded component %s" % component)
+            logger.info("Loaded component {}".format(component))
             
     return u
 
             
     return u
 
index 9cea436..8c3f49e 100644 (file)
@@ -8,7 +8,7 @@ try:
     ROOT = os.path.realpath(os.path.dirname(__file__) + '/..')
 except:
     import traceback
     ROOT = os.path.realpath(os.path.dirname(__file__) + '/..')
 except:
     import traceback
-    traceback.print_exc()
+    logger.error(traceback.format_exc())
 
 
 from myslice.configengine import ConfigEngine
 
 
 from myslice.configengine import ConfigEngine
@@ -269,7 +269,7 @@ BROKER_URL = "amqp://myslice:myslice@localhost:5672/myslice"
 
 for aux in auxiliaries:
     if os.path.isdir(os.path.join(ROOT,aux)): 
 
 for aux in auxiliaries:
     if os.path.isdir(os.path.join(ROOT,aux)): 
-        print(("Using devel auxiliary",aux))
+        logger.info("Using devel auxiliary {}".format(aux))
         INSTALLED_APPS.append(aux)
 
 ACCOUNT_ACTIVATION_DAYS = 7 # One-week activation window; you may, of course, use a different value.
         INSTALLED_APPS.append(aux)
 
 ACCOUNT_ACTIVATION_DAYS = 7 # One-week activation window; you may, of course, use a different value.
index 49de253..2a1cca5 100644 (file)
@@ -1,7 +1,7 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class QueryGrid (Plugin):
 
     """A plugin for displaying a query as a list
 class QueryGrid (Plugin):
 
     """A plugin for displaying a query as a list
@@ -69,7 +69,7 @@ Current implementation makes the following assumptions
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
-                print('WARNING: querygrid uses aoColumnDefs, your aoColumns spec. is discarded')
+                logger.warning('WARNING: querygrid uses aoColumnDefs, your aoColumns spec. is discarded')
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
index 981d376..60265fc 100644 (file)
@@ -1,7 +1,7 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class QueryTable (Plugin):
 
     """A plugin for displaying a query as a list
 class QueryTable (Plugin):
 
     """A plugin for displaying a query as a list
@@ -52,7 +52,7 @@ Current implementation makes the following assumptions
             _columns = columns
             _hidden_columns = []
         elif self.query:
             _columns = columns
             _hidden_columns = []
         elif self.query:
-            print("self.query.fields = ", self.query_all.fields)
+            logger.debug("self.query.fields = {}".format(self.query_all.fields))
             # Columns displayed by default
             if self.default_fields is not None:
                 _columns = [field for field in self.default_fields if not field == 'urn']
             # Columns displayed by default
             if self.default_fields is not None:
                 _columns = [field for field in self.default_fields if not field == 'urn']
@@ -61,7 +61,7 @@ Current implementation makes the following assumptions
             if query_all:
                 # We need a list because sets are not JSON-serializable
                 if self.default_fields is not None:
             if query_all:
                 # We need a list because sets are not JSON-serializable
                 if self.default_fields is not None:
-                    print(self.query_all.fields)
+                    logger.debug(self.query_all.fields)
                     _hidden_columns = list(self.query_all.fields - set(self.default_fields))
                 else:
                     _hidden_columns = list(self.query_all.fields - self.query.fields)
                     _hidden_columns = list(self.query_all.fields - set(self.default_fields))
                 else:
                     _hidden_columns = list(self.query_all.fields - self.query.fields)
@@ -72,11 +72,11 @@ Current implementation makes the following assumptions
             _columns = []
             _hidden_columns = []
 
             _columns = []
             _hidden_columns = []
 
-        print("_columns=", _columns)
+        logger.debug("_columns={}".format(_columns))
         self.columns = { self.mapping.get(c, c) : c for c in _columns }
         self.hidden_columns = { self.mapping.get(c, c) : c for c in _hidden_columns }
         self.columns = { self.mapping.get(c, c) : c for c in _columns }
         self.hidden_columns = { self.mapping.get(c, c) : c for c in _hidden_columns }
-        print("self.columns", self.columns)
-        print("self.hidden_columns", self.hidden_columns)
+        logger.debug("self.columns {}".format(self.columns))
+        logger.debug("self.hidden_columns {}".format(self.hidden_columns))
 
         self.init_key=init_key
         self.datatables_options=datatables_options
 
         self.init_key=init_key
         self.datatables_options=datatables_options
@@ -86,7 +86,7 @@ Current implementation makes the following assumptions
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
-                print('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
+                logger.warning('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
index 6e32801..64322fd 100644 (file)
@@ -1,27 +1,28 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class Univbris(Plugin):
     
     def __init__ (self, query=None, **settings):
         Plugin.__init__ (self, **settings)
         self.query=query
         self.query_uuid = query.query_uuid if query else None
 class Univbris(Plugin):
     
     def __init__ (self, query=None, **settings):
         Plugin.__init__ (self, **settings)
         self.query=query
         self.query_uuid = query.query_uuid if query else None
-        print("called univbris plugin")
+        logger.info("called univbris plugin")
 
     def template_file (self):
         try:
             return "univbris_welcome.html"
 
     def template_file (self):
         try:
             return "univbris_welcome.html"
-        except Exception:
-            print("error template")
+        except Exception as e:
+            logger.error("error template {}".format(e))
 
     def requirements (self):
         reqs = {
 
     def requirements (self):
         reqs = {
-            'js_files' : [ "js/spin-presets.js", "js/spin.min.js", "js/jquery.spin.js",
-                           "js/manifold.js", "js/manifold-query.js",
-                           "js/unfold-helper.js",
-                           'js/univbris.js',
+            'js_files' : [
+                "js/spin-presets.js", "js/spin.min.js", "js/jquery.spin.js",
+                "js/manifold.js", "js/manifold-query.js",
+                "js/unfold-helper.js",
+                'js/univbris.js',
             ],
             'css_files': [
                 'css/univbris.css',
             ],
             'css_files': [
                 'css/univbris.css',
index 3e39595..5d15c3a 100644 (file)
@@ -1,7 +1,7 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class UnivbrisFoam (Plugin):
 
     """
 class UnivbrisFoam (Plugin):
 
     """
@@ -79,7 +79,7 @@ Current implementation makes the following assumptions
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
-                print('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
+                logger.warning('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
index 9ca631f..e2c6ab3 100644 (file)
@@ -1,7 +1,7 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class UnivbrisFv (Plugin):
 
     """
 class UnivbrisFv (Plugin):
 
     """
@@ -80,7 +80,7 @@ Current implementation makes the following assumptions
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
-                print('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
+                logger.warning('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
index ae48f2b..6a9a47f 100644 (file)
@@ -1,20 +1,20 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class UnivbrisTopo(Plugin):
     
     def __init__ (self, query=None, **settings):
         Plugin.__init__ (self, **settings)
         self.query=query
         self.query_uuid = query.query_uuid if query else None
 class UnivbrisTopo(Plugin):
     
     def __init__ (self, query=None, **settings):
         Plugin.__init__ (self, **settings)
         self.query=query
         self.query_uuid = query.query_uuid if query else None
-        print("called univbris topo plugin")
+        logger.info("called univbris topo plugin")
 
     def template_file (self):
         try:
             return "univbris_topology.html"
 
     def template_file (self):
         try:
             return "univbris_topology.html"
-        except:
-            print("error template")
+        except Exception as e :
+            logger.error("error template {}".format(e))
 
     def requirements (self):
         reqs = {
 
     def requirements (self):
         reqs = {
index 8dbe71e..50da3ee 100644 (file)
@@ -1,7 +1,7 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class UnivbrisVtam (Plugin):
     def __init__ (self, query=None, query_all=None, sync_query=None,
                   checkboxes=False, columns=None, 
 class UnivbrisVtam (Plugin):
     def __init__ (self, query=None, query_all=None, sync_query=None,
                   checkboxes=False, columns=None, 
@@ -43,7 +43,7 @@ class UnivbrisVtam (Plugin):
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
         if self.checkboxes:
             # we use aoColumnDefs rather than aoColumns -- ignore user-provided aoColumns
             if 'aoColumns' in self.datatables_options:
-                print('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
+                logger.warning('WARNING: querytable uses aoColumnDefs, your aoColumns spec. is discarded')
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
                 del self.datatables_options['aoColumns']
             # set aoColumnDefs in datatables_options - might already have stuff in there
             aoColumnDefs = self.datatables_options.setdefault ('aoColumnDefs',[])
index df2f307..41e4d06 100644 (file)
@@ -1,29 +1,29 @@
-from __future__ import print_function
+#
+import json, os, re, itertools, time
+from OpenSSL import crypto
+from Crypto.PublicKey import RSA
 
 
-from unfold.loginrequired               import LoginRequiredAutoLogoutView
 #
 #
+from django.http                        import HttpResponse, HttpResponseRedirect
+from django.contrib                     import messages
+from django.contrib.auth.decorators     import login_required
+
 #
 from manifold.core.query                import Query
 from manifoldapi.manifoldapi            import execute_query
 #
 from manifold.core.query                import Query
 from manifoldapi.manifoldapi            import execute_query
+
+from unfold.loginrequired               import LoginRequiredAutoLogoutView
+from unfold.page                        import Page    
+from ui.topmenu                         import topmenu_items_live, the_user
+
 from portal.actions                     import (
     manifold_update_user, manifold_update_account, manifold_add_account,
     manifold_delete_account, sfa_update_user, sfa_get_user, clear_user_creds )
 from portal.actions                     import (
     manifold_update_user, manifold_update_account, manifold_add_account,
     manifold_delete_account, sfa_update_user, sfa_get_user, clear_user_creds )
-#
-from unfold.page                        import Page    
-from ui.topmenu                         import topmenu_items_live, the_user
-#
-from django.http                        import HttpResponse, HttpResponseRedirect
-from django.contrib                     import messages
-from django.contrib.auth.decorators     import login_required
+from portal.account                     import Account, get_expiration
 
 
+from myslice.settings                   import logger
 from myslice.configengine               import ConfigEngine
 from myslice.configengine               import ConfigEngine
-from myslice.theme import ThemeView
-
-from portal.account                     import Account, get_expiration
-#
-import json, os, re, itertools, time
-from OpenSSL import crypto
-from Crypto.PublicKey import RSA
+from myslice.theme                      import ThemeView
 
 # requires login
 class AccountView(LoginRequiredAutoLogoutView, ThemeView):
 
 # requires login
 class AccountView(LoginRequiredAutoLogoutView, ThemeView):
@@ -293,11 +293,11 @@ def account_process(request):
             if user_email == request.user.email:                                          
                 authorize_query = True                                                    
             else:                                                                         
             if user_email == request.user.email:                                          
                 authorize_query = True                                                    
             else:                                                                         
-                print("SECURITY: %s tried to update %s" % (user_email, request.user.email))
+                logger.error("SECURITY: {} tried to update {}".format(user_email, request.user.email))
                 messages.error(request, 'You are not authorized to modify another user.') 
                 return HttpResponseRedirect("/portal/account/")                               
                 messages.error(request, 'You are not authorized to modify another user.') 
                 return HttpResponseRedirect("/portal/account/")                               
-        except Exception,e:
-            print("Exception = %s" % e)
+        except Exception as e:
+            logger.error("exception in account_process {}".format(e))
 
     for account_detail in account_details:
         for platform_detail in platform_details:
 
     for account_detail in account_details:
         for platform_detail in platform_details:
@@ -430,9 +430,9 @@ def account_process(request):
                                 messages.success(request, 'Sucess: New Keypair Generated! Delegation of your credentials will be automatic.')
                             else:
                                 raise Exception,"Keys are not matching"
                                 messages.success(request, 'Sucess: New Keypair Generated! Delegation of your credentials will be automatic.')
                             else:
                                 raise Exception,"Keys are not matching"
-                        except Exception, e:
+                        except Exception as e:
                             messages.error(request, 'Error: An error occured during the update of your public key at the Registry, or your public key is not matching the one stored.')
                             messages.error(request, 'Error: An error occured during the update of your public key at the Registry, or your public key is not matching the one stored.')
-                            print("Exception in accountview ", e)
+                            logger.error("Exception in accountview {}".format(e))
                         return HttpResponseRedirect("/portal/account/")
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
                         return HttpResponseRedirect("/portal/account/")
         else:
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
@@ -595,8 +595,8 @@ def account_process(request):
                 messages.success(request, 'All Credentials cleared')
             else:
                 messages.error(request, 'Delete error: Credentials are not stored in the server')
                 messages.success(request, 'All Credentials cleared')
             else:
                 messages.error(request, 'Delete error: Credentials are not stored in the server')
-        except Exception,e:
-            print("Exception in accountview.py in clear_user_creds %s" % e)
+        except Exception as e:
+            logger.error("Exception in accountview.py in clear_user_creds {}".format(e))
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
         return HttpResponseRedirect("/portal/account/")
 
             messages.error(request, 'Account error: You need an account in myslice platform to perform this action')
         return HttpResponseRedirect("/portal/account/")
 
index e1faf4b..7d57b9d 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from django.http                    import HttpResponse
 from manifold.core.query            import Query
 from manifoldapi.manifoldapi        import execute_query,execute_admin_query
 from django.http                    import HttpResponse
 from manifold.core.query            import Query
 from manifoldapi.manifoldapi        import execute_query,execute_admin_query
@@ -16,7 +14,7 @@ from django.core.mail               import EmailMultiAlternatives, send_mail
 
 from myslice.theme                  import ThemeView
 from myslice.configengine           import ConfigEngine
 
 from myslice.theme                  import ThemeView
 from myslice.configengine           import ConfigEngine
-
+from myslice.settings               import logger
 
 theme = ThemeView()
 
 
 theme = ThemeView()
 
@@ -83,8 +81,8 @@ def authority_check_pis(request, user_email):
             pi_status = True
         return pi_status
 
             pi_status = True
         return pi_status
 
-    except Exception,e:
-        print("Exception in actions.py in authority_check_pis %s" % e)
+    except Exception as e:
+        logger.error("Exception in actions.py in authority_check_pis {}".format(e))
         return None
 
 
         return None
 
 
@@ -100,8 +98,8 @@ def authority_add_pis(request, authority_hrn,user_hrn):
         results = execute_query(request,query)
         newpis = authority_get_pis (request, authority_hrn)
         return newpis
         results = execute_query(request,query)
         newpis = authority_get_pis (request, authority_hrn)
         return newpis
-    except Exception,e: 
-        print("Exception in actions.py in authority_add_pis %s" % e)
+    except Exception as e: 
+        logger.error("Exception in actions.py in authority_add_pis {}".format(e))
         return None
 
 
         return None
 
 
@@ -117,14 +115,14 @@ def authority_remove_pis(request, authority_hrn,user_hrn):
         results = execute_query(request,query)
         newpis = authority_get_pis (request, authority_hrn)
         return newpis
         results = execute_query(request,query)
         newpis = authority_get_pis (request, authority_hrn)
         return newpis
-    except Exception,e: 
-        print("Exception in actions.py in authority_remove_pis %s" % e)
+    except Exception as e: 
+        logger.error("Exception in actions.py in authority_remove_pis {}".format(e))
         return None
 
 
 def authority_get_pi_emails(request, authority_hrn):
     pi_users = authority_get_pis(request,authority_hrn)
         return None
 
 
 def authority_get_pi_emails(request, authority_hrn):
     pi_users = authority_get_pis(request,authority_hrn)
-    print("pi_users = %s" % pi_users)
+    logger.info("pi_users = %s" % pi_users)
 
     if any(pi['pi_users'] == None or not pi['pi_users']  for pi in pi_users):
         #theme.template_name = 'email_default_recipients.txt' 
 
     if any(pi['pi_users'] == None or not pi['pi_users']  for pi in pi_users):
         #theme.template_name = 'email_default_recipients.txt' 
@@ -176,13 +174,13 @@ def clear_user_creds(request, user_email):
                         else:
                             return None
 
                         else:
                             return None
 
-    except Exception,e:
-        print("Exception in actions.py in clear_user_creds %s" % e)
+    except Exception as e:
+        logger.error("Exception in actions.py in clear_user_creds {}".format(e))
         return None
 
 def is_pi(wsgi_request, user_hrn, authority_hrn):
     # authorities from user where user_hrn == "ple.upmc.jordan_auge"
         return None
 
 def is_pi(wsgi_request, user_hrn, authority_hrn):
     # authorities from user where user_hrn == "ple.upmc.jordan_auge"
-    print("#### actions.py is_pi authority_hrn = ", authority_hrn)
+    logger.debug("#### actions.py is_pi authority_hrn = {}".format(authority_hrn))
     try:
         # CACHE PB with fields
         page = Page(wsgi_request)
     try:
         # CACHE PB with fields
         page = Page(wsgi_request)
@@ -194,12 +192,11 @@ def is_pi(wsgi_request, user_hrn, authority_hrn):
         query  = Query().get('myslice:user').select(user_fields).filter_by('user_hrn','==',user_hrn)
         #query = Query.get('myslice:user').filter_by('user_hrn', '==', user_hrn).select('pi_authorities')
         results = execute_query(wsgi_request, query)
         query  = Query().get('myslice:user').select(user_fields).filter_by('user_hrn','==',user_hrn)
         #query = Query.get('myslice:user').filter_by('user_hrn', '==', user_hrn).select('pi_authorities')
         results = execute_query(wsgi_request, query)
-        #print "is_pi results = ", results
         for user_detail in results:
             if authority_hrn in user_detail['pi_authorities']:
                 return True
         for user_detail in results:
             if authority_hrn in user_detail['pi_authorities']:
                 return True
-    except Exception,e:
-        print("Exception in actions.py in is_pi %s" % e)
+    except Exception as e:
+        logger.error("Exception in actions.py in is_pi {}".format(e))
     return False
     
 # SFA get record
     return False
     
 # SFA get record
@@ -226,7 +223,7 @@ def sfa_add_authority(request, authority_params):
     # REGISTRY ONLY TO BE REMOVED WITH MANIFOLD-V2
     query = Query.create('myslice:authority').set(authority_params).select('authority_hrn')
     results = execute_query(request, query)
     # REGISTRY ONLY TO BE REMOVED WITH MANIFOLD-V2
     query = Query.create('myslice:authority').set(authority_params).select('authority_hrn')
     results = execute_query(request, query)
-    print("sfa_add_auth results=",results)
+    logger.info("sfa_add_auth results={}".format(results))
     if not results:
         raise Exception, "Could not create %s. Already exists ?" % authority_params['hrn']
     return results
     if not results:
         raise Exception, "Could not create %s. Already exists ?" % authority_params['hrn']
     return results
@@ -432,7 +429,7 @@ def make_request_authority(authority):
     return request
 
 def make_requests(pending_users, pending_slices, pending_authorities, pending_projects, pending_joins):
     return request
 
 def make_requests(pending_users, pending_slices, pending_authorities, pending_projects, pending_joins):
-    print("$$$$$$$$$$$$$$$  make_request")
+    logger.info("$$$$$$$$$$$$$$$  make_request")
     requests = []
     for user in pending_users:
         requests.append(make_request_user(user))
     requests = []
     for user in pending_users:
         requests.append(make_request_user(user))
@@ -447,7 +444,7 @@ def make_requests(pending_users, pending_slices, pending_authorities, pending_pr
     return requests   
 
 def get_request_by_id(ids):
     return requests   
 
 def get_request_by_id(ids):
-    print("$$$$$$$$$$$$$$$$  get_request_by_id")
+    logger.info("$$$$$$$$$$$$$$$$  get_request_by_id")
     sorted_ids = { 'user': [], 'slice': [], 'authority': [], 'project': [], 'join': [] }
     for type__id in ids:
         type, id = type__id.split('__')
     sorted_ids = { 'user': [], 'slice': [], 'authority': [], 'project': [], 'join': [] }
     for type__id in ids:
         type, id = type__id.split('__')
@@ -469,7 +466,7 @@ def get_request_by_id(ids):
     return make_requests(pending_users, pending_slices, pending_authorities, pending_projects, pending_joins)
 
 def get_requests(authority_hrns=None):
     return make_requests(pending_users, pending_slices, pending_authorities, pending_projects, pending_joins)
 
 def get_requests(authority_hrns=None):
-    print("$$$$$$$$$$$$$   get_request_by_authority auth_hrns = ", authority_hrns)
+    logger.info("$$$$$$$$$$$$$   get_request_by_authority auth_hrns = {}".format(authority_hrns))
     if not authority_hrns:
         ## get those pending users who have confirmed their emails
         pending_users  = PendingUser.objects.filter(status__iexact = 'True')
     if not authority_hrns:
         ## get those pending users who have confirmed their emails
         pending_users  = PendingUser.objects.filter(status__iexact = 'True')
@@ -576,7 +573,7 @@ def portal_validate_request(wsgi_request, request_ids):
                     #'pi'        : None,
                     #'enabled'    : True
                 }
                     #'pi'        : None,
                     #'enabled'    : True
                 }
-                print("ADD Authority")
+                logger.info("ADD Authority")
                 sfa_add_authority(wsgi_request, sfa_authority_params)
                 request_status['SFA authority'] = {'status': True }
                 PendingAuthority.objects.get(id=request['id']).delete()
                 sfa_add_authority(wsgi_request, sfa_authority_params)
                 request_status['SFA authority'] = {'status': True }
                 PendingAuthority.objects.get(id=request['id']).delete()
@@ -689,8 +686,8 @@ def portal_reject_request(wsgi_request, request_ids):
                     msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
                     msg.attach_alternative(html_content, "text/html")
                     msg.send()
                     msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
                     msg.attach_alternative(html_content, "text/html")
                     msg.send()
-                except Exception, e:
-                    print("Failed to send email, please check the mail templates and the SMTP configuration of your server")   
+                except Exception as e:
+                    logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")   
 
                 # removing from Django portal_pendinguser
                 PendingUser.objects.get(id=request['id']).delete()
 
                 # removing from Django portal_pendinguser
                 PendingUser.objects.get(id=request['id']).delete()
@@ -730,8 +727,8 @@ def portal_reject_request(wsgi_request, request_ids):
                 msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
                 msg.attach_alternative(html_content, "text/html")
                 msg.send()
                 msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
                 msg.attach_alternative(html_content, "text/html")
                 msg.send()
-            except Exception, e:
-                print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+            except Exception as e:
+                logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
                       
             PendingSlice.objects.get(id=request['id']).delete()
 
                       
             PendingSlice.objects.get(id=request['id']).delete()
 
@@ -769,8 +766,8 @@ def portal_reject_request(wsgi_request, request_ids):
                 msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
                 msg.attach_alternative(html_content, "text/html")
                 msg.send()
                 msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
                 msg.attach_alternative(html_content, "text/html")
                 msg.send()
-            except Exception, e:
-                print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+            except Exception as e:
+                logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
 
             PendingAuthority.objects.get(id=request['id']).delete()
 
 
             PendingAuthority.objects.get(id=request['id']).delete()
 
@@ -868,8 +865,8 @@ def create_slice(wsgi_request, request):
             msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
             msg.attach_alternative(html_content, "text/html")
             msg.send()
             msg = EmailMultiAlternatives(subject, text_content, sender, [user_email])
             msg.attach_alternative(html_content, "text/html")
             msg.send()
-        except Exception, e:
-            print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+        except Exception as e:
+            logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
        
     return results
 
        
     return results
 
@@ -906,8 +903,8 @@ def create_pending_slice(wsgi_request, request, email):
         msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
         msg.attach_alternative(html_content, "text/html")
         msg.send()
         msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
         msg.attach_alternative(html_content, "text/html")
         msg.send()
-    except Exception, e:
-        print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+    except Exception as e:
+        logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
 
 
 def create_pending_project(wsgi_request, request):
 
 
 def create_pending_project(wsgi_request, request):
@@ -1063,8 +1060,8 @@ def sfa_create_user(wsgi_request, request, namespace = None, as_admin = False):
             msg = EmailMultiAlternatives(subject, text_content, sender, [request['email']])
             msg.attach_alternative(html_content, "text/html")
             msg.send()
             msg = EmailMultiAlternatives(subject, text_content, sender, [request['email']])
             msg.attach_alternative(html_content, "text/html")
             msg.send()
-        except Exception, e:
-            print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+        except Exception as e:
+            logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
 
     return results
 
 
     return results
 
@@ -1102,7 +1099,7 @@ def iotlab_create_user (wsgi_request, request, namespace = None, as_admin=False)
    
     iotlab_user_params1 = json.dumps(iotlab_user_params)
     r=requests.post(url=URL_REST, data=iotlab_user_params1, headers=headers, auth=auth)
    
     iotlab_user_params1 = json.dumps(iotlab_user_params)
     r=requests.post(url=URL_REST, data=iotlab_user_params1, headers=headers, auth=auth)
-    print('Create iotlab user : ', r.status_code, r.text)
+    logger.info('Create iotlab user : {} {}'.format(r.status_code, r.text))
     return r.text
 
 def create_user(wsgi_request, request, namespace = None, as_admin = False):
     return r.text
 
 def create_user(wsgi_request, request, namespace = None, as_admin = False):
@@ -1198,8 +1195,8 @@ def create_pending_user(wsgi_request, request, user_detail):
             'config'        : json.dumps(account_config),
         }
         manifold_add_account(wsgi_request, account_params)
             'config'        : json.dumps(account_config),
         }
         manifold_add_account(wsgi_request, account_params)
-    except Exception, e:
-        print("Failed creating manifold account on platform %s for user: %s" % ('myslice', request['email']))
+    except Exception as e:
+        logger.error("Failed creating manifold account on platform {} for user: {}".format('myslice', request['email']))
 
     try:
         # Send an email: the recipients are the PI of the authority
 
     try:
         # Send an email: the recipients are the PI of the authority
@@ -1224,6 +1221,6 @@ def create_pending_user(wsgi_request, request, user_detail):
         msg.attach_alternative(html_content, "text/html")
         msg.send()
     except Exception, e:
         msg.attach_alternative(html_content, "text/html")
         msg.send()
     except Exception, e:
-        print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+        logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
         import traceback
         import traceback
-        traceback.print_exc()
+        logger.error(traceback.format_exc())
index 8c6af13..4beb7a9 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 import json
 from manifold.core.query         import Query
 from manifoldapi.manifoldapi     import execute_query
 import json
 from manifold.core.query         import Query
 from manifoldapi.manifoldapi     import execute_query
@@ -13,7 +11,9 @@ from unfold.loginrequired        import LoginRequiredAutoLogoutView
 
 from ui.topmenu                  import topmenu_items_live, the_user
 
 
 from ui.topmenu                  import topmenu_items_live, the_user
 
-from myslice.theme import ThemeView
+from myslice.theme               import ThemeView
+from myslice.settings            import logger
+
 
 #This view requires login 
 class DashboardView (LoginRequiredAutoLogoutView, ThemeView):
 
 #This view requires login 
 class DashboardView (LoginRequiredAutoLogoutView, ThemeView):
@@ -27,7 +27,7 @@ class DashboardView (LoginRequiredAutoLogoutView, ThemeView):
         #messages.info(self.request, 'You have logged in')
         page = Page(self.request)
 
         #messages.info(self.request, 'You have logged in')
         page = Page(self.request)
 
-        print("Dashboard page")
+        logger.info("Dashboard page")
         # Slow...
         #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
         testbed_query  = Query().get('network').select('network_hrn','platform','version')
         # Slow...
         #slice_query = Query().get('slice').filter_by('user.user_hrn', 'contains', user_hrn).select('slice_hrn')
         testbed_query  = Query().get('network').select('network_hrn','platform','version')
@@ -49,8 +49,8 @@ class DashboardView (LoginRequiredAutoLogoutView, ThemeView):
 #            root_authority = sub_authority[0]
 #            slice_query = Query().get(root_authority+':user').filter_by('user_hrn', '==', '$user_hrn').select('user_hrn', 'slice.slice_hrn')
 #        else:
 #            root_authority = sub_authority[0]
 #            slice_query = Query().get(root_authority+':user').filter_by('user_hrn', '==', '$user_hrn').select('user_hrn', 'slice.slice_hrn')
 #        else:
-        print("SLICE QUERY")
-        print("-" * 80)
+        logger.debug("SLICE QUERY")
+        logger.debug("-" * 80)
         slice_query = Query().get('myslice:user').filter_by('user_hrn', '==', '$user_hrn').select('slices.slice_hrn')
         page.enqueue_query(slice_query)
         page.enqueue_query(testbed_query)
         slice_query = Query().get('myslice:user').filter_by('user_hrn', '==', '$user_hrn').select('slices.slice_hrn')
         page.enqueue_query(slice_query)
         page.enqueue_query(testbed_query)
index fc40104..8bb164f 100644 (file)
@@ -1,24 +1,31 @@
-from __future__ import print_function
+import json
+import os
+import re
+import itertools
 
 
-from unfold.loginrequired               import FreeAccessView
-#
-from manifold.core.query                import Query
-from manifoldapi.manifoldapi            import execute_query, execute_admin_query
-from portal.actions                     import manifold_update_user, manifold_update_account, manifold_add_account, manifold_delete_account, sfa_update_user, authority_get_pi_emails, make_request_user, create_user
-#
-from unfold.page                        import Page    
-from ui.topmenu                         import topmenu_items_live, the_user
-#
 from django.http                        import HttpResponse, HttpResponseRedirect
 from django.contrib                     import messages
 from django.contrib.auth.decorators     import login_required
 from django.http                        import HttpResponse, HttpResponseRedirect
 from django.contrib                     import messages
 from django.contrib.auth.decorators     import login_required
-from myslice.theme                      import ThemeView
-from portal.models                      import PendingUser, PendingAuthority
 from django.core.mail                   import EmailMultiAlternatives, send_mail
 from django.contrib.sites.models        import Site
 
 from django.core.mail                   import EmailMultiAlternatives, send_mail
 from django.contrib.sites.models        import Site
 
-#
-import json, os, re, itertools
+from manifold.core.query                import Query
+from manifoldapi.manifoldapi            import execute_query, execute_admin_query
+
+from unfold.loginrequired               import FreeAccessView
+
+from portal.actions                     import (
+    manifold_update_user, manifold_update_account, manifold_add_account,
+    manifold_delete_account, sfa_update_user, authority_get_pi_emails,
+    make_request_user, create_user)
+from portal.models                      import PendingUser, PendingAuthority
+
+from unfold.page                        import Page    
+from ui.topmenu                         import topmenu_items_live, the_user
+
+from myslice.theme                      import ThemeView
+from myslice.settings                   import logger
+
 
 def ValuesQuerySetToDict(vqs):
     return [item for item in vqs]
 
 def ValuesQuerySetToDict(vqs):
     return [item for item in vqs]
@@ -38,8 +45,8 @@ class ActivateEmailView(FreeAccessView, ThemeView):
                 # User is enabled in PLE
                 if 'enabled' in result and result['enabled']==True:
                     return True
                 # User is enabled in PLE
                 if 'enabled' in result and result['enabled']==True:
                     return True
-        except Exception, e:
-            print("Exception in myplc query = ",e)
+        except Exception as e:
+            logger.error("Exception in myplc query = {}".format(e))
 
         return False
 
 
         return False
 
@@ -53,7 +60,6 @@ class ActivateEmailView(FreeAccessView, ThemeView):
         #page.add_css_files ( [ "css/onelab.css", "css/account_view.css","css/plugin.css" ] )
 
         for key, value in kwargs.iteritems():
         #page.add_css_files ( [ "css/onelab.css", "css/account_view.css","css/plugin.css" ] )
 
         for key, value in kwargs.iteritems():
-            #print "%s = %s" % (key, value)
             if key == "hash_code":
                 hash_code=value
         if PendingUser.objects.filter(email_hash__iexact = hash_code).filter(status__iexact = 'False'):           
             if key == "hash_code":
                 hash_code=value
         if PendingUser.objects.filter(email_hash__iexact = hash_code).filter(status__iexact = 'False'):           
@@ -102,10 +108,10 @@ class ActivateEmailView(FreeAccessView, ThemeView):
                         #    msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
                         #    msg.attach_alternative(html_content, "text/html")
                         #    msg.send()
                         #    msg = EmailMultiAlternatives(subject, text_content, sender, recipients)
                         #    msg.attach_alternative(html_content, "text/html")
                         #    msg.send()
-                        #except Exception, e:
-                        #    print "Failed to send email, please check the mail templates and the SMTP configuration of your server"
+                        #except Exception as e:
+                        #    logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
                         #    import traceback
                         #    import traceback
-                        #    traceback.print_exc()
+                        #    logger.error(traceback.format_exc())
             
             PendingUser.objects.filter(email_hash__iexact = hash_code).update(status='True')
         else:
             
             PendingUser.objects.filter(email_hash__iexact = hash_code).update(status='True')
         else:
index 0ede402..581822c 100644 (file)
 # this program; see the file COPYING.  If not, write to the Free Software
 # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # this program; see the file COPYING.  If not, write to the Free Software
 # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-from __future__ import print_function
+# TODO: Remove these automated forms and use html templates and views like any other page !
 
 from django import forms
 
 from django import forms
-from portal.models import PendingUser, PendingSlice
 #from crispy_forms.helper import FormHelper
 #from crispy_forms.layout import Submit
 from django.utils.translation import ugettext_lazy as _
 #from crispy_forms.helper import FormHelper
 #from crispy_forms.layout import Submit
 from django.utils.translation import ugettext_lazy as _
@@ -34,8 +33,12 @@ from django.contrib.sites.models import get_current_site
 from django.utils.http import int_to_base36
 from django.template import loader
 
 from django.utils.http import int_to_base36
 from django.template import loader
 
-# TODO: Remove these automated forms and use html templates and views like any other page !
 from django.contrib.auth.hashers import identify_hasher
 from django.contrib.auth.hashers import identify_hasher
+
+from portal.models import PendingUser, PendingSlice
+
+from myslice.settings import logger
+
 # adapted from https://sourcegraph.com/github.com/fusionbox/django-authtools/symbols/python/authtools/forms
 
 def is_password_unusable(pw):
 # adapted from https://sourcegraph.com/github.com/fusionbox/django-authtools/symbols/python/authtools/forms
 
 def is_password_unusable(pw):
@@ -207,8 +210,8 @@ class PasswordResetForm(forms.Form):
                 subject = ''.join(subject.splitlines())
                 email = loader.render_to_string(email_template_name, c)
                 send_mail(subject, email, from_email, [user.email])
                 subject = ''.join(subject.splitlines())
                 email = loader.render_to_string(email_template_name, c)
                 send_mail(subject, email, from_email, [user.email])
-        except Exception, e:
-            print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+        except Exception as e:
+            logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
 
 
 class SetPasswordForm(forms.Form):
 
 
 class SetPasswordForm(forms.Form):
index b722b29..6d33d0e 100644 (file)
@@ -1,4 +1,5 @@
-from __future__ import print_function
+import time
+import json
 
 # this somehow is not used anymore - should it not be ?
 from django.core.context_processors     import csrf
 
 # this somehow is not used anymore - should it not be ?
 from django.core.context_processors     import csrf
@@ -8,22 +9,20 @@ from django.template                    import RequestContext
 from django.shortcuts                   import render_to_response
 from django.shortcuts                   import render
 
 from django.shortcuts                   import render_to_response
 from django.shortcuts                   import render
 
-
 from unfold.loginrequired               import FreeAccessView
 from unfold.loginrequired               import FreeAccessView
+from ui.topmenu                         import topmenu_items, the_user
 
 from manifold.core.query                import Query
 from manifoldapi.manifoldapi            import execute_query
 
 from manifold.core.query                import Query
 from manifoldapi.manifoldapi            import execute_query
-
 from manifoldapi.manifoldresult         import ManifoldResult
 from manifoldapi.manifoldresult         import ManifoldResult
-from ui.topmenu                         import topmenu_items, the_user
-from myslice.configengine               import ConfigEngine
 
 
+from myslice.configengine               import ConfigEngine
 from myslice.theme                      import ThemeView
 from myslice.theme                      import ThemeView
+
 from portal.account                     import Account, get_expiration
 from portal.models                      import PendingSlice
 from portal.actions                     import authority_check_pis
 
 from portal.account                     import Account, get_expiration
 from portal.models                      import PendingSlice
 from portal.actions                     import authority_check_pis
 
-import json, time
 import activity.user
 
 class HomeView (FreeAccessView, ThemeView):
 import activity.user
 
 class HomeView (FreeAccessView, ThemeView):
index 036a6f0..503a22a 100644 (file)
@@ -1,4 +1,4 @@
-from __future__ import print_function
+import json
 
 from django.core.context_processors import csrf
 from django.http                    import HttpResponseRedirect
 
 from django.core.context_processors import csrf
 from django.http                    import HttpResponseRedirect
@@ -18,7 +18,8 @@ from myslice.configengine           import ConfigEngine
 
 from portal.actions                 import is_pi, authority_check_pis
 from myslice.theme                  import ThemeView
 
 from portal.actions                 import is_pi, authority_check_pis
 from myslice.theme                  import ThemeView
-import json
+from myslice.settings               import logger
+
 
 class InstitutionView (LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'institution.html'
 
 class InstitutionView (LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'institution.html'
@@ -70,9 +71,9 @@ class InstitutionView (LoginRequiredAutoLogoutView, ThemeView):
 
         else: 
             env['person'] = None
 
         else: 
             env['person'] = None
-        print("BEFORE  ####------####  is_pi")
+        logger.debug("BEFORE  ####------####  is_pi")
         pi = is_pi(self.request, '$user_hrn', env['user_details']['parent_authority']) 
         pi = is_pi(self.request, '$user_hrn', env['user_details']['parent_authority']) 
-        print("is_pi = ",is_pi)
+        logger.debug("is_pi = {}".format(is_pi))
 
         env['theme'] = self.theme
         env['section'] = "Institution"
 
         env['theme'] = self.theme
         env['section'] = "Institution"
index 77ce66a..6f0d77c 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 import os.path, re
 import json
 from random import randint
 import os.path, re
 import json
 from random import randint
@@ -24,6 +22,7 @@ from portal.models              import PendingUser,PendingAuthority
 from portal.actions             import authority_get_pi_emails, manifold_add_user,manifold_add_account, create_pending_user
 
 from myslice.theme import ThemeView
 from portal.actions             import authority_get_pi_emails, manifold_add_user,manifold_add_account, create_pending_user
 
 from myslice.theme import ThemeView
+from myslice.settings import logger
 
 import activity.institution
 
 
 import activity.institution
 
@@ -231,9 +230,9 @@ class JoinView (FreeAccessView, ThemeView):
                     msg.send()
     
                 except Exception, e:
                     msg.send()
     
                 except Exception, e:
-                    print("Failed to send email, please check the mail templates and the SMTP configuration of your server")
+                    logger.error("Failed to send email, please check the mail templates and the SMTP configuration of your server")
                     import traceback
                     import traceback
-                    traceback.print_exc()
+                    logger.error(traceback.format_exc())
 
                 self.template_name = 'join_complete.html'
                 # log institution activity
 
                 self.template_name = 'join_complete.html'
                 # log institution activity
index 155d182..02714d4 100644 (file)
@@ -1,5 +1,4 @@
-from __future__ import print_function
-
+import json
 # this somehow is not used anymore - should it not be ?
 from django.core.context_processors import csrf
 from django.http import HttpResponseRedirect
 # this somehow is not used anymore - should it not be ?
 from django.core.context_processors import csrf
 from django.http import HttpResponseRedirect
@@ -13,10 +12,10 @@ from unfold.loginrequired import FreeAccessView
 from manifold.core.query            import Query
 from manifoldapi.manifoldapi        import execute_query
 from manifoldapi.manifoldresult import ManifoldResult
 from manifold.core.query            import Query
 from manifoldapi.manifoldapi        import execute_query
 from manifoldapi.manifoldresult import ManifoldResult
-from myslice.configengine import ConfigEngine
 
 
+from myslice.configengine import ConfigEngine
 from myslice.theme import ThemeView
 from myslice.theme import ThemeView
-import json
+from myslice.settings import logger
 
 class ManagementAboutView (FreeAccessView, ThemeView):
     template_name = 'management-tab-about.html'
 
 class ManagementAboutView (FreeAccessView, ThemeView):
     template_name = 'management-tab-about.html'
@@ -29,7 +28,7 @@ class ManagementAboutView (FreeAccessView, ThemeView):
             user_local_query  = Query().get('local:user').select('config').filter_by('email','==',str(self.request.user))
             user_local_details = execute_query(self.request, user_local_query)
             user_authority = json.loads(user_local_details[0]['config']).get('authority')
             user_local_query  = Query().get('local:user').select('config').filter_by('email','==',str(self.request.user))
             user_local_details = execute_query(self.request, user_local_query)
             user_authority = json.loads(user_local_details[0]['config']).get('authority')
-            print("**************________    management about  = ",user_authority)
+            logger.info("**************________    management about  = {}".format(user_authority))
             # XXX Should be done using Metadata
             # select column.name from local:object where table=='authority'
             authority_query = Query().get('authority').select('authority_hrn', 'name', 'address', 'enabled','description', 
             # XXX Should be done using Metadata
             # select column.name from local:object where table=='authority'
             authority_query = Query().get('authority').select('authority_hrn', 'name', 'address', 'enabled','description', 
index 2ebc646..2d1cdef 100644 (file)
@@ -1,4 +1,4 @@
-from __future__ import print_function
+import json
 
 from django.template                 import RequestContext
 from django.shortcuts                import render_to_response
 
 from django.template                 import RequestContext
 from django.shortcuts                import render_to_response
@@ -20,8 +20,7 @@ from manifoldapi.manifoldapi        import execute_query
 from portal.actions                 import get_requests
 
 from myslice.theme import ThemeView
 from portal.actions                 import get_requests
 
 from myslice.theme import ThemeView
-
-import json
+from myslice.settings import logger
 
 class ManagementRequestsView (LoginRequiredView, ThemeView):
     template_name = "management-tab-requests.html"
 
 class ManagementRequestsView (LoginRequiredView, ThemeView):
     template_name = "management-tab-requests.html"
@@ -49,7 +48,7 @@ class ManagementRequestsView (LoginRequiredView, ThemeView):
             sfa_platforms_query = Query().get('local:platform').filter_by('gateway_type', '==', 'sfa').select('platform_id', 'platform', 'auth_type')
             sfa_platforms = execute_query(self.request, sfa_platforms_query)
             for sfa_platform in sfa_platforms:
             sfa_platforms_query = Query().get('local:platform').filter_by('gateway_type', '==', 'sfa').select('platform_id', 'platform', 'auth_type')
             sfa_platforms = execute_query(self.request, sfa_platforms_query)
             for sfa_platform in sfa_platforms:
-                print("SFA PLATFORM > ", sfa_platform['platform'])
+                logger.info("SFA PLATFORM > {}".format(sfa_platform['platform']))
                 if not 'auth_type' in sfa_platform:
                     continue
                 auth = sfa_platform['auth_type']
                 if not 'auth_type' in sfa_platform:
                     continue
                 auth = sfa_platform['auth_type']
@@ -57,7 +56,7 @@ class ManagementRequestsView (LoginRequiredView, ThemeView):
                     all_authorities.append(auth)
                 platform_ids.append(sfa_platform['platform_id'])
 
                     all_authorities.append(auth)
                 platform_ids.append(sfa_platform['platform_id'])
 
-            print("W: Hardcoding platform myslice")
+            logger.warning("W: Hardcoding platform myslice")
             # There has been a tweak on how new platforms are referencing a
             # so-called 'myslice' platform for storing authentication tokens.
             # XXX This has to be removed in final versions.
             # There has been a tweak on how new platforms are referencing a
             # so-called 'myslice' platform for storing authentication tokens.
             # XXX This has to be removed in final versions.
@@ -103,8 +102,8 @@ class ManagementRequestsView (LoginRequiredView, ThemeView):
             try:
                 for pa in pi_authorities_tmp:
                     pi_authorities |= set(pa['pi_authorities'])
             try:
                 for pa in pi_authorities_tmp:
                     pi_authorities |= set(pa['pi_authorities'])
-            except:
-                print('No pi_authorities')
+            except Exception as e:
+                logger.error('No pi_authorities')
 
             pi_credential_authorities = pi_authorities & credential_authorities
             pi_no_credential_authorities = pi_authorities - credential_authorities - credential_authorities_expired
 
             pi_credential_authorities = pi_authorities & credential_authorities
             pi_no_credential_authorities = pi_authorities - credential_authorities - credential_authorities_expired
index 1be4e82..47e6974 100644 (file)
@@ -1,19 +1,24 @@
+import os
+import re
+import itertools
+import json
+
 from unfold.loginrequired               import LoginRequiredAutoLogoutView
 from unfold.loginrequired               import LoginRequiredAutoLogoutView
-#
+
 from manifold.core.query                import Query
 from manifoldapi.manifoldapi            import execute_query, execute_admin_query
 from portal.actions                     import manifold_update_user, manifold_update_account, manifold_add_account, manifold_delete_account
 from manifold.core.query                import Query
 from manifoldapi.manifoldapi            import execute_query, execute_admin_query
 from portal.actions                     import manifold_update_user, manifold_update_account, manifold_add_account, manifold_delete_account
-from portal.actions                     import sfa_update_user, authority_get_pis, authority_add_pis, authority_remove_pis,authority_check_pis ,clear_user_creds
-#
+from portal.actions                     import (
+    sfa_update_user, authority_get_pis, authority_add_pis,
+    authority_remove_pis,authority_check_pis ,clear_user_creds )
+
 from unfold.page                        import Page    
 from ui.topmenu                         import topmenu_items_live, the_user
 from unfold.page                        import Page    
 from ui.topmenu                         import topmenu_items_live, the_user
-#
+
 from django.http                        import HttpResponse, HttpResponseRedirect
 from django.contrib                     import messages
 from django.contrib.auth.decorators     import login_required
 from myslice.theme import ThemeView
 from django.http                        import HttpResponse, HttpResponseRedirect
 from django.contrib                     import messages
 from django.contrib.auth.decorators     import login_required
 from myslice.theme import ThemeView
-#
-import json, os, re, itertools
 
 # requires login
 class UserView(LoginRequiredAutoLogoutView, ThemeView):
 
 # requires login
 class UserView(LoginRequiredAutoLogoutView, ThemeView):
@@ -29,7 +34,6 @@ class UserView(LoginRequiredAutoLogoutView, ThemeView):
         page.add_css_files ( [ "css/onelab.css", "css/account_view.css","css/plugin.css","css/jquery-ui.css" ] )
 
         for key, value in kwargs.iteritems():
         page.add_css_files ( [ "css/onelab.css", "css/account_view.css","css/plugin.css","css/jquery-ui.css" ] )
 
         for key, value in kwargs.iteritems():
-            #print "%s = %s" % (key, value)
             if key == "email":
                 selected_email=value
     
             if key == "email":
                 selected_email=value
     
index 2411e31..ec5454d 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from django.template             import RequestContext
 from django.shortcuts            import render_to_response
 
 from django.template             import RequestContext
 from django.shortcuts            import render_to_response
 
@@ -18,6 +16,7 @@ from plugins.querytable          import QueryTable
 
 from myslice.configengine        import ConfigEngine
 from myslice.theme import ThemeView
 
 from myslice.configengine        import ConfigEngine
 from myslice.theme import ThemeView
+from myslice.settings import logger
 
 # View for 1 platform and its details
 class PlatformView(FreeAccessView, ThemeView):
 
 # View for 1 platform and its details
 class PlatformView(FreeAccessView, ThemeView):
@@ -28,7 +27,7 @@ class PlatformView(FreeAccessView, ThemeView):
         page.add_js_files  ( [ "js/common.functions.js" ] )
 
         for key, value in kwargs.iteritems():
         page.add_js_files  ( [ "js/common.functions.js" ] )
 
         for key, value in kwargs.iteritems():
-            print("%s = %s" % (key, value))       
+            logger.debug("{} = {}".format(key, value))
             if key == "platformname":
                 platformname=value
                 
             if key == "platformname":
                 platformname=value
                 
index 9cc1e17..a505f14 100644 (file)
@@ -1,4 +1,6 @@
-from __future__ import print_function
+import json
+import time
+import re
 
 from django.shortcuts           import render
 from django.contrib.sites.models import Site
 
 from django.shortcuts           import render
 from django.contrib.sites.models import Site
@@ -12,8 +14,7 @@ from portal.actions import create_pending_project, create_pending_join, sfa_add_
 from portal.models import PendingProject, PendingJoin
 
 from myslice.theme import ThemeView
 from portal.models import PendingProject, PendingJoin
 
 from myslice.theme import ThemeView
-
-import json, time, re
+from myslice.settings import logger
 
 class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'projectrequest_view.html'
 
 class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
     template_name = 'projectrequest_view.html'
@@ -121,7 +122,7 @@ class ProjectRequestView(LoginRequiredAutoLogoutView, ThemeView):
                 errors.append('Project name is mandatory')
             
             if not errors:
                 errors.append('Project name is mandatory')
             
             if not errors:
-                print("is_pi on auth_hrn = ", user_authority)
+                logger.info("is_pi on auth_hrn = {}".format(user_authority))
                 if is_pi(wsgi_request, user_hrn, user_authority):
                     # PIs can directly create/join project in their own authority...
                     if 'join' in wsgi_request.POST:
                 if is_pi(wsgi_request, user_hrn, user_authority):
                     # PIs can directly create/join project in their own authority...
                     if 'join' in wsgi_request.POST:
index cfde2f8..9032125 100644 (file)
@@ -1,6 +1,5 @@
-from __future__ import print_function
-
-import os.path, re
+import os.path
+import re
 import json
 from random     import randint
 from hashlib    import md5
 import json
 from random     import randint
 from hashlib    import md5
@@ -23,6 +22,7 @@ from portal.models              import PendingUser
 from portal.actions             import create_pending_user
 
 from myslice.theme import ThemeView
 from portal.actions             import create_pending_user
 
 from myslice.theme import ThemeView
+from myslice.settings import logger
 
 import activity.user
 
 
 import activity.user
 
@@ -46,14 +46,14 @@ class RegistrationView (FreeAccessView, ThemeView):
         # REGISTRY ONLY TO BE REMOVED WITH MANIFOLD-V2
         authorities_query = Query.get('authority').select('name', 'authority_hrn')
         authorities = execute_admin_query(wsgi_request, authorities_query)
         # REGISTRY ONLY TO BE REMOVED WITH MANIFOLD-V2
         authorities_query = Query.get('authority').select('name', 'authority_hrn')
         authorities = execute_admin_query(wsgi_request, authorities_query)
-        print("RegistrationView authorities = ", authorities)
+        logger.info("RegistrationView authorities = {}".format(authorities))
         if authorities is not None:
             # Remove the root authority from the list
             matching = [s for s in authorities if "." in s['authority_hrn']]
             authorities = sorted(matching, key=lambda k: k['authority_hrn'])
             authorities = sorted(matching, key=lambda k: k['name'])
         
         if authorities is not None:
             # Remove the root authority from the list
             matching = [s for s in authorities if "." in s['authority_hrn']]
             authorities = sorted(matching, key=lambda k: k['authority_hrn'])
             authorities = sorted(matching, key=lambda k: k['name'])
         
-        print("############ BREAKPOINT 1 #################")
+        logger.debug("############ BREAKPOINT 1 #################")
         # Page rendering
         page = Page(wsgi_request)
 
         # Page rendering
         page = Page(wsgi_request)
 
@@ -63,7 +63,7 @@ class RegistrationView (FreeAccessView, ThemeView):
 
         page.add_css_files ( [ "css/onelab.css", "css/registration.css", "css/jquery.qtip.min.css", "css/jquery.ui.combobox.css" ] )
         page.expose_js_metadata()
 
         page.add_css_files ( [ "css/onelab.css", "css/registration.css", "css/jquery.qtip.min.css", "css/jquery.ui.combobox.css" ] )
         page.expose_js_metadata()
-        print("############ BREAKPOINT 2 #################")
+        logger.debug("############ BREAKPOINT 2 #################")
         if method == 'POST':
             reg_form = {}
             # The form has been submitted
         if method == 'POST':
             reg_form = {}
             # The form has been submitted
@@ -72,7 +72,7 @@ class RegistrationView (FreeAccessView, ThemeView):
             current_site = Site.objects.get_current()
             current_site = current_site.domain
            
             current_site = Site.objects.get_current()
             current_site = current_site.domain
            
-            print("############ BREAKPOINT 3 #################")
+            logger.debug("############ BREAKPOINT 3 #################")
             post_email = wsgi_request.POST.get('email','').lower()
             salt = randint(1,100000)
             email_hash = md5(str(salt)+post_email).hexdigest()
             post_email = wsgi_request.POST.get('email','').lower()
             salt = randint(1,100000)
             email_hash = md5(str(salt)+post_email).hexdigest()
@@ -89,13 +89,13 @@ class RegistrationView (FreeAccessView, ThemeView):
                 'validation_link': current_site + '/portal/email_activation/'+ email_hash
             }
 
                 'validation_link': current_site + '/portal/email_activation/'+ email_hash
             }
 
-            print("############ BREAKPOINT 4 #################")
+            logger.debug("############ BREAKPOINT 4 #################")
             auth = wsgi_request.POST.get('org_name', None)
             if auth is None or auth == "":
                 errors.append('Organization required: please select one or request its addition')
             else:
                
             auth = wsgi_request.POST.get('org_name', None)
             if auth is None or auth == "":
                 errors.append('Organization required: please select one or request its addition')
             else:
                
-                print("############ BREAKPOINT 5 #################")
+                logger.debug("############ BREAKPOINT 5 #################")
                 
                 # Construct user_hrn from email (XXX Should use common code)
                 split_email = user_request['email'].split("@")[0] 
                 
                 # Construct user_hrn from email (XXX Should use common code)
                 split_email = user_request['email'].split("@")[0] 
@@ -185,7 +185,7 @@ class RegistrationView (FreeAccessView, ThemeView):
                     return render(wsgi_request, self.template, {'theme': self.theme}) 
 
         else:
                     return render(wsgi_request, self.template, {'theme': self.theme}) 
 
         else:
-            print("############ BREAKPOINT A #################")
+            logger.debug("############ BREAKPOINT A #################")
             user_request = {}
             ## this is coming from onelab website onelab.eu
             reg_form = {
             user_request = {}
             ## this is coming from onelab website onelab.eu
             reg_form = {
@@ -195,7 +195,7 @@ class RegistrationView (FreeAccessView, ThemeView):
                 }
             # log user activity
             activity.user.signup(self.request)
                 }
             # log user activity
             activity.user.signup(self.request)
-            print("############ BREAKPOINT B #################")
+            logger.debug("############ BREAKPOINT B #################")
 
         template_env = {
           #'topmenu_items': topmenu_items_live('Register', page),
 
         template_env = {
           #'topmenu_items': topmenu_items_live('Register', page),
@@ -206,5 +206,5 @@ class RegistrationView (FreeAccessView, ThemeView):
         template_env.update(user_request)
         template_env.update(reg_form)
         template_env.update(page.prelude_env ())
         template_env.update(user_request)
         template_env.update(reg_form)
         template_env.update(page.prelude_env ())
-        print("############ BREAKPOINT C #################")
+        logger.debug("############ BREAKPOINT C #################")
         return render(wsgi_request, self.template,template_env)
         return render(wsgi_request, self.template,template_env)
index 11fd34f..1d3b9af 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from manifold.core.query        import Query
 from unfold.page                import Page
 
 from manifold.core.query        import Query
 from unfold.page                import Page
 
@@ -24,7 +22,6 @@ class ResourceView(FreeAccessView, ThemeView):
         page.add_js_files  ( [ "js/common.functions.js" ] )
 
         for key, value in kwargs.iteritems():
         page.add_js_files  ( [ "js/common.functions.js" ] )
 
         for key, value in kwargs.iteritems():
-            print("%s = %s" % (key, value))       
             if key == "urn":
                 resource_urn=value
                 
             if key == "urn":
                 resource_urn=value
                 
index 2280551..b7be0a8 100644 (file)
@@ -1,9 +1,10 @@
-from __future__ import print_function
+import json
+import time
+import re
 
 from django.shortcuts           import render
 from django.contrib.sites.models import Site
 
 
 from django.shortcuts           import render
 from django.contrib.sites.models import Site
 
-
 from unfold.page                import Page
 
 from manifold.core.query        import Query
 from unfold.page                import Page
 
 from manifold.core.query        import Query
@@ -15,8 +16,7 @@ from unfold.loginrequired       import LoginRequiredAutoLogoutView
 from ui.topmenu                 import topmenu_items_live, the_user
 
 from myslice.theme import ThemeView
 from ui.topmenu                 import topmenu_items_live, the_user
 
 from myslice.theme import ThemeView
-
-import json, time, re
+from myslice.settings import logger
 
 import activity.user
 
 
 import activity.user
 
@@ -89,7 +89,7 @@ class SliceRequestView (LoginRequiredAutoLogoutView, ThemeView):
         #    pi = "is_pi"
 
         pi = authority_check_pis (wsgi_request, user_email)
         #    pi = "is_pi"
 
         pi = authority_check_pis (wsgi_request, user_email)
-        print("SLICEREQUESTVIEW.PY -----  pi=",pi)
+        logger.debug("SLICEREQUESTVIEW.PY -----  pi= {}".format(pi))
 
         # Page rendering
         page = Page(wsgi_request)
 
         # Page rendering
         page = Page(wsgi_request)
index 85360fd..8bdc6e6 100644 (file)
@@ -1,18 +1,16 @@
-from __future__ import print_function
+import json
 
 from django.template                    import RequestContext
 from django.shortcuts                   import render_to_response
 
 from django.template                    import RequestContext
 from django.shortcuts                   import render_to_response
+from django.views.generic.base          import TemplateView
+from django.http import HttpResponse
+from django.shortcuts import render
 
 from manifold.core.query                import Query, AnalyzedQuery
 from manifoldapi.manifoldapi            import execute_query
 
 from manifold.core.query                import Query, AnalyzedQuery
 from manifoldapi.manifoldapi            import execute_query
-import json
 
 
-from django.views.generic.base          import TemplateView
 
 from unfold.loginrequired               import LoginRequiredView
 
 from unfold.loginrequired               import LoginRequiredView
-from django.http import HttpResponse
-from django.shortcuts import render
-
 from unfold.page                        import Page
 
 from myslice.configengine               import ConfigEngine
 from unfold.page                        import Page
 
 from myslice.configengine               import ConfigEngine
@@ -32,7 +30,7 @@ from plugins.univbrisfv                 import UnivbrisFv
 from plugins.univbrisfvf                import UnivbrisFvf
 from plugins.univbrisfvfo              import UnivbrisFvfo
 from plugins.univbristopo               import UnivbrisTopo
 from plugins.univbrisfvf                import UnivbrisFvf
 from plugins.univbrisfvfo              import UnivbrisFvfo
 from plugins.univbristopo               import UnivbrisTopo
-from plugins.univbrisvtam                  import UnivbrisVtam as UnivbrisVtamPlugin
+from plugins.univbrisvtam               import UnivbrisVtam as UnivbrisVtamPlugin
 from plugins.univbrisvtamform          import UnivbrisVtamForm
 
 from plugins.columns_editor             import ColumnsEditor
 from plugins.univbrisvtamform          import UnivbrisVtamForm
 
 from plugins.columns_editor             import ColumnsEditor
@@ -40,6 +38,7 @@ from plugins.sladialog                  import SlaDialog
 from plugins.lists.simplelist           import SimpleList
 
 from myslice.theme import ThemeView
 from plugins.lists.simplelist           import SimpleList
 
 from myslice.theme import ThemeView
+from myslice.settings import logger
 
 class SliceResourceView (LoginRequiredView, ThemeView):
     template_name = "slice-resource-view.html"
 
 class SliceResourceView (LoginRequiredView, ThemeView):
     template_name = "slice-resource-view.html"
@@ -73,7 +72,7 @@ class SliceResourceView (LoginRequiredView, ThemeView):
 
         slice_md = metadata.details_by_object('slice')
         slice_fields = [column['name'] for column in slice_md['column']]
 
         slice_md = metadata.details_by_object('slice')
         slice_fields = [column['name'] for column in slice_md['column']]
-        print("SLICE RES VIEW fields = %s" % slice_fields)
+        logger.debug("SLICE RES VIEW fields = {}".format(slice_fields))
         # TODO The query to run is embedded in the URL
         # Example: select slice_hrn, resource.urn, lease.resource, lease.start_time, lease.end_time from slice where slice_hrn == "ple.upmc.myslicedemo"
         main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename)
         # TODO The query to run is embedded in the URL
         # Example: select slice_hrn, resource.urn, lease.resource, lease.start_time, lease.end_time from slice where slice_hrn == "ple.upmc.myslicedemo"
         main_query = Query.get('slice').filter_by('slice_hrn', '=', slicename)
index 9eaaea7..138754a 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 # this somehow is not used anymore - should it not be ?
 from django.core.context_processors import csrf
 from django.http import HttpResponseRedirect
 # this somehow is not used anymore - should it not be ?
 from django.core.context_processors import csrf
 from django.http import HttpResponseRedirect
@@ -18,6 +16,7 @@ from myslice.configengine import ConfigEngine
 
 from myslice.theme import ThemeView
 from myslice.configengine import ConfigEngine
 
 from myslice.theme import ThemeView
 from myslice.configengine import ConfigEngine
+from myslice.settings import logger
 
 from sfa.planetlab.plxrn import hash_loginbase
 
 
 from sfa.planetlab.plxrn import hash_loginbase
 
@@ -45,12 +44,8 @@ class ExperimentView (FreeAccessView, ThemeView):
         try:
             for resources in current_resources:
                 list_res = resources['resource']
         try:
             for resources in current_resources:
                 list_res = resources['resource']
-                #print "list_b4"
-                #print list_res
                 for res in list_res:
                     split_list = res.split('+') # split the resource urn
                 for res in list_res:
                     split_list = res.split('+') # split the resource urn
-                    #print "list_after"
-                    #print split_list
                     if [s for s in split_list if 'ple' in s]: # find ple resources
                         res_hrn = split_list[-1] # last element is resource hrn
                         ple_resource_list.append(res_hrn)
                     if [s for s in split_list if 'ple' in s]: # find ple resources
                         res_hrn = split_list[-1] # last element is resource hrn
                         ple_resource_list.append(res_hrn)
@@ -68,17 +63,17 @@ class ExperimentView (FreeAccessView, ThemeView):
                         nitos_resource_list.append(res_hrn)
 
 
                         nitos_resource_list.append(res_hrn)
 
 
-        except Exception,e:
-            print("Exception in slicetabexperiment.py in OneLab resource search %s" % e)
+        except Exception as e:
+            logger.error("Exception in slicetabexperiment.py in OneLab resource search {}".format(e))
         
         
-        #print "list of ple res hrns"
-        #print ple_resource_list
-        #print "list of nit_paris res hrns"
-        #print nitos_paris_resource_list
-        #print "list of iotLab res hrns"
-        #print iotlab_resource_list
-        #print "list of nitos res hrns"
-        #print nitos_resource_list
+        #logger.debug("list of ple res hrns")
+        #logger.debug(ple_resource_list)
+        #logger.debug("list of nit_paris res hrns")
+        #logger.debug(nitos_paris_resource_list)
+        #logger.debug("list of iotLab res hrns")
+        #logger.debug(iotlab_resource_list)
+        #logger.debug("list of nitos res hrns")
+        #logger.debug(nitos_resource_list)
 
         all_users = list() 
         #get all  iotlab users
 
         all_users = list() 
         #get all  iotlab users
@@ -94,7 +89,7 @@ class ExperimentView (FreeAccessView, ThemeView):
             res = urllib2.urlopen(req)
             all_users = json.load(res) 
         except urllib2.URLError as e:
             res = urllib2.urlopen(req)
             all_users = json.load(res) 
         except urllib2.URLError as e:
-            print("There is a problem in getting iotlab users %s" % e.reason)
+            logger.error("There is a problem in getting iotlab users {}".format(e.reason))
        
 
         #getting the login from email
        
 
         #getting the login from email
index 7154b8a..40b7521 100644 (file)
@@ -30,7 +30,6 @@ class UnivbrisView (LoginRequiredAutoLogoutView):
     def get_context_data(self, **kwargs):
         
         page = Page(self.request)
     def get_context_data(self, **kwargs):
         
         page = Page(self.request)
-        #print "UNIVBRIS page"
         metadata = page.get_metadata()
         page.expose_js_metadata()
     
         metadata = page.get_metadata()
         page.expose_js_metadata()
     
index d6eae5a..8c9d210 100644 (file)
@@ -22,8 +22,6 @@
 # this program; see the file COPYING.  If not, write to the Free Software
 # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
 # this program; see the file COPYING.  If not, write to the Free Software
 # Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 
-from __future__ import print_function
-
 import json
 
 from django.http                import HttpResponseRedirect, HttpResponse
 import json
 
 from django.http                import HttpResponseRedirect, HttpResponse
@@ -46,7 +44,9 @@ from portal.actions             import get_requests
 from manifoldapi.manifoldapi    import execute_query
 from manifold.core.query        import Query
 from unfold.page                import Page
 from manifoldapi.manifoldapi    import execute_query
 from manifold.core.query        import Query
 from unfold.page                import Page
+
 from myslice.theme import ThemeView
 from myslice.theme import ThemeView
+from myslice.settings import logger
 
 class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
     template_name = "validate_pending.html"
 
 class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
     template_name = "validate_pending.html"
@@ -92,7 +92,7 @@ class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
             sfa_platforms_query = Query().get('local:platform').filter_by('gateway_type', '==', 'sfa').select('platform_id', 'platform', 'auth_type')
             sfa_platforms = execute_query(self.request, sfa_platforms_query)
             for sfa_platform in sfa_platforms:
             sfa_platforms_query = Query().get('local:platform').filter_by('gateway_type', '==', 'sfa').select('platform_id', 'platform', 'auth_type')
             sfa_platforms = execute_query(self.request, sfa_platforms_query)
             for sfa_platform in sfa_platforms:
-                print("SFA PLATFORM > ", sfa_platform['platform'])
+                logger.info("SFA PLATFORM > {}".format(sfa_platform['platform']))
                 if not 'auth_type' in sfa_platform:
                     continue
                 auth = sfa_platform['auth_type']
                 if not 'auth_type' in sfa_platform:
                     continue
                 auth = sfa_platform['auth_type']
@@ -100,7 +100,7 @@ class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
                     all_authorities.append(auth)
                 platform_ids.append(sfa_platform['platform_id'])
 
                     all_authorities.append(auth)
                 platform_ids.append(sfa_platform['platform_id'])
 
-            print("W: Hardcoding platform myslice")
+            logger.warning("W: Hardcoding platform myslice")
             # There has been a tweak on how new platforms are referencing a
             # so-called 'myslice' platform for storing authentication tokens.
             # XXX This has to be removed in final versions.
             # There has been a tweak on how new platforms are referencing a
             # so-called 'myslice' platform for storing authentication tokens.
             # XXX This has to be removed in final versions.
@@ -122,30 +122,30 @@ class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
             #print "=" * 80
             for user_account in user_accounts:
 
             #print "=" * 80
             for user_account in user_accounts:
 
-                print("USER ACCOUNT", user_account)
+                logger.debug("USER ACCOUNT {}".format(user_account))
                 if user_account['auth_type'] == 'reference':
                     continue # we hardcoded the myslice platform...
 
                 config = json.loads(user_account['config'])
                 creds = []
                 if user_account['auth_type'] == 'reference':
                     continue # we hardcoded the myslice platform...
 
                 config = json.loads(user_account['config'])
                 creds = []
-                print("CONFIG KEYS", config.keys())
+                logger.debug("CONFIG KEYS {}".format(config.keys()))
                 if 'authority_credentials' in config:
                 if 'authority_credentials' in config:
-                    print("***", config['authority_credentials'].keys())
+                    logger.debug("*** AC {}".format(config['authority_credentials'].keys()))
                     for authority_hrn, credential in config['authority_credentials'].items():
                         #if credential is not expired:
                         credential_authorities.add(authority_hrn)
                         #else
                         #    credential_authorities_expired.add(authority_hrn)
                 if 'delegated_authority_credentials' in config:
                     for authority_hrn, credential in config['authority_credentials'].items():
                         #if credential is not expired:
                         credential_authorities.add(authority_hrn)
                         #else
                         #    credential_authorities_expired.add(authority_hrn)
                 if 'delegated_authority_credentials' in config:
-                    print("***", config['delegated_authority_credentials'].keys())
+                    logger.debug("*** DAC {}".format(config['delegated_authority_credentials'].keys()))
                     for authority_hrn, credential in config['delegated_authority_credentials'].items():
                         #if credential is not expired:
                         credential_authorities.add(authority_hrn)
                         #else
                         #    credential_authorities_expired.add(authority_hrn)
 
                     for authority_hrn, credential in config['delegated_authority_credentials'].items():
                         #if credential is not expired:
                         credential_authorities.add(authority_hrn)
                         #else
                         #    credential_authorities_expired.add(authority_hrn)
 
-            print('credential_authorities =', credential_authorities)
-            print('credential_authorities_expired =', credential_authorities_expired)
+            logger.debug('credential_authorities = {}'.format(credential_authorities))
+            logger.debug('credential_authorities_expired = {}'.format(credential_authorities_expired))
 
 #            # Using cache manifold-tables to get the list of authorities faster
 #            all_authorities_query = Query.get('authority').select('name', 'authority_hrn')
 
 #            # Using cache manifold-tables to get the list of authorities faster
 #            all_authorities_query = Query.get('authority').select('name', 'authority_hrn')
@@ -159,8 +159,8 @@ class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
             try:
                 for pa in pi_authorities_tmp:
                     pi_authorities |= set(pa['pi_authorities'])
             try:
                 for pa in pi_authorities_tmp:
                     pi_authorities |= set(pa['pi_authorities'])
-            except:
-                print('No pi_authorities')
+            except Exception as e:
+                logger.error('No pi_authorities')
 # TODO: exception if no parent_authority
 #             try:
 #                 for pa in pi_authorities_tmp:
 # TODO: exception if no parent_authority
 #             try:
 #                 for pa in pi_authorities_tmp:
@@ -262,8 +262,8 @@ class ValidatePendingView(LoginRequiredAutoLogoutView, ThemeView):
                 dest[auth_hrn].append(request)
         
         context = super(ValidatePendingView, self).get_context_data(**kwargs)
                 dest[auth_hrn].append(request)
         
         context = super(ValidatePendingView, self).get_context_data(**kwargs)
-        print("testing")
-        print(ctx_my_authorities)
+        logger.debug("testing")
+        logger.debug(ctx_my_authorities)
         context['my_authorities']   = ctx_my_authorities
         context['sub_authorities']   = ctx_sub_authorities
         context['delegation_authorities'] = ctx_delegation_authorities
         context['my_authorities']   = ctx_my_authorities
         context['sub_authorities']   = ctx_sub_authorities
         context['delegation_authorities'] = ctx_delegation_authorities
index 9a28ad6..65ff7e6 100644 (file)
@@ -1,15 +1,15 @@
-from __future__ import print_function
+import decimal
+import datetime
+import json
+
+from django.http                    import HttpResponse
 
 from manifold.core.query            import Query
 from manifoldapi.manifoldapi        import execute_query
 
 from manifold.core.query            import Query
 from manifoldapi.manifoldapi        import execute_query
-from portal.actions                 import is_pi
-
-from django.http                    import HttpResponse
 
 
+from portal.actions                 import is_pi
 
 
-import decimal
-import datetime
-import json
+from myslice.settings               import logger
 
 # handles serialization of datetime in json
 DateEncoder = lambda obj: obj.strftime("%B %d, %Y %H:%M:%S") if isinstance(obj, datetime.datetime) else None
 
 # handles serialization of datetime in json
 DateEncoder = lambda obj: obj.strftime("%B %d, %Y %H:%M:%S") if isinstance(obj, datetime.datetime) else None
@@ -77,7 +77,7 @@ class ObjectRequest(object):
         # What about key formed of multiple fields???
         query = Query.get('local:object').filter_by('table', '==', self.type).select('key')
         results = execute_query(self.request, query)
         # What about key formed of multiple fields???
         query = Query.get('local:object').filter_by('table', '==', self.type).select('key')
         results = execute_query(self.request, query)
-        print("key of object = %s" % results)
+        logger.debug("key of object = {}".format(results))
         if results :
             for r in results[0]['key'] :
                 self.id = r
         if results :
             for r in results[0]['key'] :
                 self.id = r
@@ -138,9 +138,9 @@ class ObjectRequest(object):
         if self.params :
             for p in self.params :
                 for k,v in p.iteritems() :
         if self.params :
             for p in self.params :
                 for k,v in p.iteritems() :
-                    print("param: %s : %s" % (k,v))
+                    logger.debug("param: {} : {}".format(k, v))
                     query.set({k : v})
                     query.set({k : v})
-            print("query = ",query)
+            logger.debug("query = {}".format(query))
         else:
             raise Exception, "Params are required for create"
         return execute_query(self.request, query)
         else:
             raise Exception, "Params are required for create"
         return execute_query(self.request, query)
@@ -152,9 +152,9 @@ class ObjectRequest(object):
         if self.params :
             for p in self.params :
                 for k,v in p.iteritems() :
         if self.params :
             for p in self.params :
                 for k,v in p.iteritems() :
-                    print("param: %s : %s" % (k,v))
+                    logger.debug("param: {} : {}".format(k, v))
                     query.set({k : v})
                     query.set({k : v})
-            print("query = ",query)
+            logger.debug("query = {}".format(query))
         else:
             raise Exception, "Params are required for update"
 
         else:
             raise Exception, "Params are required for update"
 
index 25d1a6e..e3b8e4d 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from django.views.generic.base      import TemplateView
 from django.shortcuts               import render_to_response
 
 from django.views.generic.base      import TemplateView
 from django.shortcuts               import render_to_response
 
@@ -25,7 +23,6 @@ def dispatch(request, object_type, object_name):
     elif request.method == 'GET':
         #return error('only post request is supported')
         req_items = request.GET
     elif request.method == 'GET':
         #return error('only post request is supported')
         req_items = request.GET
-    print(req_items)
     for el in list(req_items.items()):
         # Filters not used for create
         if el[0].startswith('filters'):
     for el in list(req_items.items()):
         # Filters not used for create
         if el[0].startswith('filters'):
index e5cc919..02c651b 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from django.shortcuts               import render_to_response
 
 from unfold.loginrequired           import LoginRequiredView
 from django.shortcuts               import render_to_response
 
 from unfold.loginrequired           import LoginRequiredView
@@ -21,7 +19,6 @@ def dispatch(request, object_type, object_name):
         if el[0].startswith('filters'):
             o.filters[el[0][8:-1]] = el[1]
         elif el[0].startswith('fields'):
         if el[0].startswith('filters'):
             o.filters[el[0][8:-1]] = el[1]
         elif el[0].startswith('fields'):
-            print(req_items.getlist('fields[]'))
             o.setFields(req_items.getlist('fields[]'))
         elif el[0].startswith('options'):
             o.options = req_items.getlist('options[]')
             o.setFields(req_items.getlist('fields[]'))
         elif el[0].startswith('options'):
             o.options = req_items.getlist('options[]')
index 41dbc9b..fd2c317 100644 (file)
@@ -46,7 +46,6 @@ def dispatch(request, action):
                 error = "Error in delete return value"
     except Exception, e:
         error = str(e)
                 error = "Error in delete return value"
     except Exception, e:
         error = str(e)
-        #print "Exception : ",e
     if error is not None:
         ret = { "ret" : 1, "error" : error }
     elif not results :
     if error is not None:
         ret = { "ret" : 1, "error" : error }
     elif not results :
index 002c60a..800429a 100644 (file)
@@ -1,27 +1,23 @@
-from __future__ import print_function
+import os
+import json
+import ConfigParser 
+
+from django.shortcuts           import render_to_response
+from django.http import HttpResponse
 
 from sfa.trust.certificate      import Keypair, Certificate
 from sfa.client.sfaserverproxy  import SfaServerProxy
 from sfa.client.return_value    import ReturnValue
 from sfa.util.xrn               import Xrn, get_leaf, get_authority, hrn_to_urn, urn_to_hrn
 
 from sfa.trust.certificate      import Keypair, Certificate
 from sfa.client.sfaserverproxy  import SfaServerProxy
 from sfa.client.return_value    import ReturnValue
 from sfa.util.xrn               import Xrn, get_leaf, get_authority, hrn_to_urn, urn_to_hrn
+
 from manifold.core.query        import Query
 from manifold.models            import db
 from manifold.models.platform   import Platform
 from manifold.models.user       import User
 
 from manifold.core.query        import Query
 from manifold.models            import db
 from manifold.models.platform   import Platform
 from manifold.models.user       import User
 
-from django.shortcuts           import render_to_response
-
 from unfold.loginrequired       import LoginRequiredView
 
 from unfold.loginrequired       import LoginRequiredView
 
-from rest import ObjectRequest, error
-
-from string import join
-
-from django.http import HttpResponse
-from rest import error
-import os,json
-
-import ConfigParser 
+from myslice.settings import logger
 
 def dispatch(request, method):
     Config = ConfigParser.ConfigParser()
 
 def dispatch(request, method):
     Config = ConfigParser.ConfigParser()
@@ -60,15 +56,15 @@ def dispatch(request, method):
     from manifoldapi.manifoldapi    import execute_admin_query
     for pf in platforms:
         platform = get_platform_config(pf)
     from manifoldapi.manifoldapi    import execute_admin_query
     for pf in platforms:
         platform = get_platform_config(pf)
-        print(platform)
+        logger.debug("platform={}".format(platform))
         if 'sm' in platform and len(platform['sm']) > 0:
         if 'sm' in platform and len(platform['sm']) > 0:
-            print('sm')
+            logger.debug('sm')
             server_url = platform['sm']
         if 'rm' in platform and len(platform['rm']) > 0:
             server_url = platform['sm']
         if 'rm' in platform and len(platform['rm']) > 0:
-            print('rm')
+            logger.debug('rm')
             server_url = platform['rm']
         if 'registry' in platform and len(platform['registry']) > 0:
             server_url = platform['rm']
         if 'registry' in platform and len(platform['registry']) > 0:
-            print('registry')
+            logger.debug('registry')
             server_url = platform['registry']
     
         if not Config.has_option('monitor', 'cert') :
             server_url = platform['registry']
     
         if not Config.has_option('monitor', 'cert') :
index 99d668d..fdd9578 100644 (file)
@@ -1,20 +1,15 @@
-from __future__ import print_function
+from rest import ObjectRequest, error, success
 
 from django.views.generic.base      import TemplateView
 from django.shortcuts               import render_to_response
 
 from django.views.generic.base      import TemplateView
 from django.shortcuts               import render_to_response
+from django.http                    import HttpResponse
 
 from unfold.loginrequired           import LoginRequiredView
 
 from unfold.loginrequired           import LoginRequiredView
-from django.http                    import HttpResponse
 
 from manifold.core.query            import Query, AnalyzedQuery
 from manifoldapi.manifoldapi        import execute_query
 
 
 from manifold.core.query            import Query, AnalyzedQuery
 from manifoldapi.manifoldapi        import execute_query
 
-from rest import ObjectRequest, error, success
-
-from string import join
-
-import json
-
+from myslice.settings import logger
 
 def dispatch(request, object_type, object_name):
     
 
 def dispatch(request, object_type, object_name):
     
@@ -25,15 +20,15 @@ def dispatch(request, object_type, object_name):
     elif request.method == 'GET':
         #return error('only post request is supported')
         req_items = request.GET
     elif request.method == 'GET':
         #return error('only post request is supported')
         req_items = request.GET
-    print(req_items)
+    logger.debug(req_items)
     for el in req_items.items():
         
     for el in req_items.items():
         
-        print("#===============>",el)
+        logger.debug("#===============> {}".format(el))
         if el[0].startswith('filters'):
             o.filters[el[0][8:-1]] = el[1]
         elif el[0].startswith('params'):
         if el[0].startswith('filters'):
             o.filters[el[0][8:-1]] = el[1]
         elif el[0].startswith('params'):
-            print("#======> 0 ", el[0])
-            print("#======> 1 ", req_items.getlist(el[0]))
+            logger.debug("#======> 0 {}".format(el[0]))
+            logger.debug("#======> 1 {}".format(req_items.getlist(el[0])))
 
             if (el[0][-2:] == '[]') :
                 # when receiving params[key][] = 'value1' ...
 
             if (el[0][-2:] == '[]') :
                 # when receiving params[key][] = 'value1' ...
@@ -43,7 +38,7 @@ def dispatch(request, object_type, object_name):
                 # when receiving params[key] = 'value'
                 o.params.append({el[0][7:-1]:el[1]})
             
                 # when receiving params[key] = 'value'
                 o.params.append({el[0][7:-1]:el[1]})
             
-            print("o.params = ",o.params)
+            logger.debug("o.params = {}".format(o.params))
             
         elif el[0].startswith('fields'):
             o.fields=req_items.getlist('fields[]')
             
         elif el[0].startswith('fields'):
             o.fields=req_items.getlist('fields[]')
index 641e491..53e0782 100644 (file)
@@ -9,10 +9,12 @@ from ui.topmenu import topmenu_items, the_user
 # tmp
 from trashutils import lorem, hard_wired_slice_names
 
 # tmp
 from trashutils import lorem, hard_wired_slice_names
 
+from myslice.settings import logger
+
 @login_required
 def tab_view (request):
 @login_required
 def tab_view (request):
-    print "request", request.__class__
-    print request
+    logger.info("request {}".format(request.__class__))
+    logger.info("{}".format(request))
     prelude=Prelude( js_files='js/bootstrap.js', css_files='css/bootstrap.css')
 
     tab_env = {'title':'Page for playing with Tabs',
     prelude=Prelude( js_files='js/bootstrap.js', css_files='css/bootstrap.css')
 
     tab_env = {'title':'Page for playing with Tabs',
index 506423c..e14efb8 100644 (file)
@@ -9,6 +9,8 @@ from unfold.page import Page
 
 from ui.topmenu import topmenu_items_live, the_user
 
 
 from ui.topmenu import topmenu_items_live, the_user
 
+from myslice.settings import logger
+
 class TopmenuValidationView (TemplateView):
 
     # mention a user name in the URL as .../trash/simpletopmenuvalidation/ple.inria.thierry_parmentelat
 class TopmenuValidationView (TemplateView):
 
     # mention a user name in the URL as .../trash/simpletopmenuvalidation/ple.inria.thierry_parmentelat
@@ -35,9 +37,9 @@ class TopmenuValidationView (TemplateView):
         # define {js,css}_{files,chunks}
         prelude_env = page.prelude_env()
 
         # define {js,css}_{files,chunks}
         prelude_env = page.prelude_env()
 
-#        print prelude_env.keys()
+#        logger.info(prelude_env.keys())
 #        for k in [ 'js_files' ] :
 #        for k in [ 'js_files' ] :
-#            print 'prelude_env',prelude_env,k,prelude_env[k]
+#            logger.info('prelude_env {} {} {}'.format(prelude_env,k,prelude_env[k]))
 
         template_env.update(prelude_env)
         result=render_to_response ('view-unfold1.html',template_env,
 
         template_env.update(prelude_env)
         result=render_to_response ('view-unfold1.html',template_env,
index 667711d..0b022b5 100644 (file)
@@ -1,5 +1,7 @@
 # a set of utilities to help make the global layout consistent across views
 
 # a set of utilities to help make the global layout consistent across views
 
+from myslice.settings import logger
+
 def the_user (request):
     "retrieves logged in user's email, or empty string"
     if not request.user.is_authenticated (): 
 def the_user (request):
     "retrieves logged in user's email, or empty string"
     if not request.user.is_authenticated (): 
@@ -22,7 +24,7 @@ def the_user (request):
 def topmenu_items_static (current, request):
     has_user=request.user.is_authenticated()
     result=[]
 def topmenu_items_static (current, request):
     has_user=request.user.is_authenticated()
     result=[]
-    print request.user
+    logger.debug("request user = {}".format(request.user))
     if has_user:
         result.append({'label':'Dashboard', 'href': '/portal/dashboard/'})
         result.append({'label':'Request a slice', 'href': '/portal/slice_request/'})
     if has_user:
         result.append({'label':'Dashboard', 'href': '/portal/dashboard/'})
         result.append({'label':'Request a slice', 'href': '/portal/slice_request/'})
@@ -58,7 +60,7 @@ def topmenu_items_static (current, request):
 
 # tmp - transition phase
 def topmenu_items (current, request):
 
 # tmp - transition phase
 def topmenu_items (current, request):
-    print "WARNING -- please now use topmenu_items_live (label, page) toplevel_items is deprecated -- WARNING"
+    logger.warning("WARNING -- please now use topmenu_items_live (label, page) toplevel_items is deprecated -- WARNING")
     return topmenu_items_static (current, request)
 
 # integrated helper function for an animated menu
     return topmenu_items_static (current, request)
 
 # integrated helper function for an animated menu
index 7787551..39be524 100644 (file)
@@ -1,7 +1,7 @@
-from __future__ import print_function
-
 from unfold.plugin import Plugin
 
 from unfold.plugin import Plugin
 
+from myslice.settings import logger
+
 class Composite (Plugin):
 
     """a simple base class for plugins that contain/arrange a set of other plugins
 class Composite (Plugin):
 
     """a simple base class for plugins that contain/arrange a set of other plugins
@@ -13,17 +13,17 @@ if a valid active_domid is not provided
 
     def __init__ (self, sons=None, active_domid=None, *args, **kwds):
         Plugin.__init__ (self, *args, **kwds)
 
     def __init__ (self, sons=None, active_domid=None, *args, **kwds):
         Plugin.__init__ (self, *args, **kwds)
-        self.sons= sons if sons else []
-        self.active_domid=active_domid
+        self.sons = sons if sons else []
+        self.active_domid = active_domid
         # make sure this is valid, unset otherwise, so we always have exactly one active
         self.check_active_domid()
         
     def check_active_domid(self):
         matches= [ son for son in self.sons if son.domid==self.active_domid ]
         if len(matches)!=1: 
         # make sure this is valid, unset otherwise, so we always have exactly one active
         self.check_active_domid()
         
     def check_active_domid(self):
         matches= [ son for son in self.sons if son.domid==self.active_domid ]
         if len(matches)!=1: 
-            print("WARNING: %s has %d valid son(s) for being active - expecting 1, resetting"%\
-                (self,len(matches)))
-            self.active_domid=None
+            logger.warning("WARNING: {} has {} valid son(s) for being active - expecting 1, resetting"\
+                           .format(self,len(matches)))
+            self.active_domid = None
         
     def insert (self, plugin):
         self.sons.append(plugin)
         
     def insert (self, plugin):
         self.sons.append(plugin)
@@ -33,9 +33,10 @@ if a valid active_domid is not provided
         # {% for son in sons %} {{ son.rendered }} ...
         def is_active (son,rank):
             # if active_domid is not specified, make the first one active
         # {% for son in sons %} {{ son.rendered }} ...
         def is_active (son,rank):
             # if active_domid is not specified, make the first one active
-            if not self.active_domid: return rank==0
-            return son.domid==self.active_domid
-        ranks=range(len(self.sons))
+            if not self.active_domid:
+                return rank==0
+            return son.domid == self.active_domid
+        ranks = range(len(self.sons))
         env = { 'sons':
                  [ { 'rendered': son.render(request),
                      'rank': rank,
         env = { 'sons':
                  [ { 'rendered': son.render(request),
                      'rank': rank,
index 2aca0d0..7b10be4 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 from django.contrib.auth.decorators     import login_required
 from django.utils.decorators            import method_decorator
 from django.http                        import HttpResponseRedirect
 from django.contrib.auth.decorators     import login_required
 from django.utils.decorators            import method_decorator
 from django.http                        import HttpResponseRedirect
@@ -8,6 +6,8 @@ from django.views.generic.base          import TemplateView
 
 from manifoldapi.manifoldresult            import ManifoldException
 
 
 from manifoldapi.manifoldresult            import ManifoldException
 
+from myslice.settings import logger
+
 ###
 # IMPORTANT NOTE
 # the implementation of the classes in this file rely on redefining 'dispatch'
 ###
 # IMPORTANT NOTE
 # the implementation of the classes in this file rely on redefining 'dispatch'
@@ -35,7 +35,6 @@ class LoginRequiredView (TemplateView):
 
 def logout_on_manifold_exception (fun_that_returns_httpresponse):
     def wrapped (request, *args, **kwds):
 
 def logout_on_manifold_exception (fun_that_returns_httpresponse):
     def wrapped (request, *args, **kwds):
-#        print 'wrapped by logout_on_manifold_exception'
         try:
             return fun_that_returns_httpresponse(request,*args, **kwds)
         except ManifoldException, manifold_result:
         try:
             return fun_that_returns_httpresponse(request,*args, **kwds)
         except ManifoldException, manifold_result:
@@ -47,9 +46,9 @@ def logout_on_manifold_exception (fun_that_returns_httpresponse):
             return HttpResponseRedirect ('/')
         except Exception, e:
             # xxx we need to sugarcoat this error message in some error template...
             return HttpResponseRedirect ('/')
         except Exception, e:
             # xxx we need to sugarcoat this error message in some error template...
-            print("Unexpected exception",e)
+            logger.error("Unexpected exception {}".format(e))
             import traceback
             import traceback
-            traceback.print_exc()
+            logger.error(traceback.format_exc())
             return HttpResponseRedirect ('/')
     return wrapped
 
             return HttpResponseRedirect ('/')
     return wrapped
 
index 254b1a9..dbe5a7c 100644 (file)
@@ -1,5 +1,3 @@
-from __future__ import print_function
-
 # the supervisor for Plugins
 # keeps a handle on all present plugins for managing their queries in a consistent way
 # it is expected to exist one such object for a given page
 # the supervisor for Plugins
 # keeps a handle on all present plugins for managing their queries in a consistent way
 # it is expected to exist one such object for a given page
@@ -13,6 +11,7 @@ from manifoldapi.metadata import MetaData
 from unfold.prelude import Prelude
 
 from myslice.configengine import ConfigEngine
 from unfold.prelude import Prelude
 
 from myslice.configengine import ConfigEngine
+from myslice.settings import logger
 
 # decorator to deflect calls on this Page to its prelude
 def to_prelude (method):
 
 # decorator to deflect calls on this Page to its prelude
 def to_prelude (method):
@@ -108,7 +107,7 @@ class Page:
 
         # if cached, use it
         if 'metadata' in manifold and isinstance(manifold['metadata'],MetaData):
 
         # if cached, use it
         if 'metadata' in manifold and isinstance(manifold['metadata'],MetaData):
-            if debug: print("Page.get_metadata: return cached value")
+            logger.debug("Page.get_metadata: return cached value")
             return manifold['metadata']
 
         metadata_auth = {'AuthMethod':'anonymous'}
             return manifold['metadata']
 
         metadata_auth = {'AuthMethod':'anonymous'}
@@ -117,7 +116,7 @@ class Page:
         metadata.fetch(self.request)
         # store it for next time
         manifold['metadata']=metadata
         metadata.fetch(self.request)
         # store it for next time
         manifold['metadata']=metadata
-        if debug: print("Page.get_metadata: return new value")
+        logger.debug("Page.get_metadata: return new value")
         return metadata
             
     def expose_js_metadata (self):
         return metadata
             
     def expose_js_metadata (self):
index c00021a..9a65f59 100644 (file)
@@ -2,8 +2,6 @@
 # so it should be specialized in real plugin classes
 # like e.g. plugins.simplelist.SimpleList
 
 # so it should be specialized in real plugin classes
 # like e.g. plugins.simplelist.SimpleList
 
-from __future__ import print_function
-
 import json
 
 from django.template.loader import render_to_string
 import json
 
 from django.template.loader import render_to_string
@@ -11,30 +9,32 @@ from django.template.loader import render_to_string
 from unfold.page import Page
 from unfold.prelude import Prelude
 
 from unfold.page import Page
 from unfold.prelude import Prelude
 
+from myslice.settings import logger
+
 #################### 
 # set DEBUG to
 # . False : silent
 # . [ 'SliceList', 'TabbedView' ] : to debug these classes
 # . True : to debug all plugin
 
 #################### 
 # set DEBUG to
 # . False : silent
 # . [ 'SliceList', 'TabbedView' ] : to debug these classes
 # . True : to debug all plugin
 
-DEBUG= False
-#DEBUG= [ 'SimpleList' ]
-#DEBUG=True
+DEBUG = False
+#DEBUG = [ 'SimpleList' ]
+#DEBUG = True
 
 # decorator to deflect calls on Plugin to its Prelude through self.page.prelude
 def to_prelude (method):
     def actual (self, *args, **kwds):
         if not self.page: # jordan
             return None
 
 # decorator to deflect calls on Plugin to its Prelude through self.page.prelude
 def to_prelude (method):
     def actual (self, *args, **kwds):
         if not self.page: # jordan
             return None
-        prelude_method=Prelude.__dict__[method.__name__]
-        return prelude_method(self.page.prelude,*args, **kwds)
+        prelude_method = Prelude.__dict__[method.__name__]
+        return prelude_method(self.page.prelude, *args, **kwds)
     return actual
 
 class Plugin:
 
     # using a simple incremental scheme to generate domids for now
     # we just need this to be unique in a page
     return actual
 
 class Plugin:
 
     # using a simple incremental scheme to generate domids for now
     # we just need this to be unique in a page
-    domid=0
+    domid = 0
 
     # when a domid is not set by the caller, we name plugins after their respective class as well, 
     # so as to limit name clashes between different views
 
     # when a domid is not set by the caller, we name plugins after their respective class as well, 
     # so as to limit name clashes between different views
@@ -43,7 +43,7 @@ class Plugin:
     # and maybe xxx we should just enforce that...
     def newdomid(self):
         Plugin.domid += 1
     # and maybe xxx we should just enforce that...
     def newdomid(self):
         Plugin.domid += 1
-        return "plugin-%s-%d"%(self.__class__.__name__.lower(),Plugin.domid)
+        return "plugin-{}-{}".format(self.__class__.__name__.lower(), Plugin.domid)
 
     ########## 
     # Constructor
 
     ########## 
     # Constructor
@@ -86,31 +86,34 @@ class Plugin:
                   **settings):
         self.page = page
         # callers can provide their domid for css'ing 
                   **settings):
         self.page = page
         # callers can provide their domid for css'ing 
-        if not domid: domid=self.newdomid()
-        self.domid=domid
+        if not domid:
+            domid=self.newdomid()
+        self.domid = domid
         # title is shown when togglable
         #if not title: title="Plugin title for %s"%domid
         # title is shown when togglable
         #if not title: title="Plugin title for %s"%domid
-        self.title=title
-        self.classname=self._py_classname()
-        self.plugin_classname=self._js_classname()
-        self.visible=visible
-        if togglable is None:           self.togglable=self.default_togglable()
-        else:                           self.togglable=togglable
-        if toggled is None:             self.toggled=self.default_toggled()
-        else:                           self.toggled=toggled
-        if outline_complete is None:    self.outline_complete=self.default_outline_complete()
-        else:                           self.outline_complete=outline_complete
-        if outline_body is None:        self.outline_body=self.default_outline_body()
-        else:                           self.outline_body=outline_body
+        self.title = title
+        self.classname = self._py_classname()
+        self.plugin_classname = self._js_classname()
+        self.visible = visible
+        if togglable is None:           self.togglable = self.default_togglable()
+        else:                           self.togglable = togglable
+        if toggled is None:             self.toggled = self.default_toggled()
+        else:                           self.toggled = toggled
+        if outline_complete is None:    self.outline_complete = self.default_outline_complete()
+        else:                           self.outline_complete = outline_complete
+        if outline_body is None:        self.outline_body = self.default_outline_body()
+        else:                           self.outline_body = outline_body
         # what comes from subclasses
         for (k,v) in settings.iteritems():
         # what comes from subclasses
         for (k,v) in settings.iteritems():
-            setattr(self,k,v)
-            if self.need_debug(): print("%s init - subclass setting %s"%(self.classname,k))
+            setattr(self, k, v)
+            if self.need_debug():
+                logger.debug("{} init - subclass setting {}".format(self.classname, k))
         # minimal debugging
         if self.need_debug():
         # minimal debugging
         if self.need_debug():
-            print("%s init dbg .... BEG"%self.classname)
-            for (k,v) in self.__dict__.items(): print("dbg %s:%s"%(k,v))
-            print("%s init dbg .... END"%self.classname)
+            logger.debug("{} init dbg .... BEG".format(self.classname))
+            for (k, v) in self.__dict__.items():
+                logger.debug("dbg {}:{}".format(k, v))
+            logger.debug("{} init dbg .... END".format(self.classname))
         # do this only once the structure is fine
         if self.page: # I assume we can have a None page (Jordan)
             self.page.record_plugin(self)
         # do this only once the structure is fine
         if self.page: # I assume we can have a None page (Jordan)
             self.page.record_plugin(self)
@@ -134,18 +137,19 @@ class Plugin:
 
     def setting_json (self, setting):
         # TMP: js world expects plugin_uuid
 
     def setting_json (self, setting):
         # TMP: js world expects plugin_uuid
-        if setting=='plugin_uuid':
-            value=self.domid
-        elif setting=='query_uuid':
-            try: value=self.query.query_uuid
-            except: return '%s:"undefined"'%setting
+        if setting == 'plugin_uuid':
+            value = self.domid
+        elif setting == 'query_uuid':
+            try: value = self.query.query_uuid
+            except: return '{}:"undefined"'.format(setting)
         else:
         else:
-            value=getattr(self,setting,None)
-            if value is None: value = "unknown-setting-%s"%setting
+            value = getattr(self,setting,None)
+            if value is None:
+                value = "unknown-setting-%s"%setting
         # first try to use to_json method (json.dumps not working on class instances)
         # first try to use to_json method (json.dumps not working on class instances)
-        try:    value_json=value.to_json()
-        except: value_json=json.dumps(value,separators=(',',':'))
-        return "%s:%s"%(setting,value_json)
+        try:    value_json = value.to_json()
+        except: value_json = json.dumps(value,separators=(',',':'))
+        return "{}:{}".format(setting, value_json)
 
     # expose in json format to js the list of fields as described in json_settings_list()
     # and add plugin_uuid: domid in the mix
 
     # expose in json format to js the list of fields as described in json_settings_list()
     # and add plugin_uuid: domid in the mix
@@ -153,7 +157,7 @@ class Plugin:
     def settings_json (self):
         exposed_settings=self.json_settings_list()
         if 'query' in exposed_settings:
     def settings_json (self):
         exposed_settings=self.json_settings_list()
         if 'query' in exposed_settings:
-            print("WARNING, cannot expose 'query' directly in json_settings_list, query_uuid is enough")
+            logger.debug("WARNING, cannot expose 'query' directly in json_settings_list, query_uuid is enough")
         result = "{"
         result += ",".join([ self.setting_json(setting) for setting in self.json_settings_list() ])
         result += "}"
         result = "{"
         result += ",".join([ self.setting_json(setting) for setting in self.json_settings_list() ])
         result += "}"
@@ -172,24 +176,25 @@ class Plugin:
         plugin_content = self.render_content (request)
         # shove this into plugin.html
         env = {}
         plugin_content = self.render_content (request)
         # shove this into plugin.html
         env = {}
-        env ['plugin_content']= plugin_content
+        env['plugin_content'] = plugin_content
         env.update(self.__dict__)
         # translate high-level 'toggled' into 4 different booleans
         self.need_toggle = False
         env.update(self.__dict__)
         # translate high-level 'toggled' into 4 different booleans
         self.need_toggle = False
-        if self.toggled=='persistent':
+        if self.toggled == 'persistent':
             # start with everything turned off and let the js callback do its job
             # start with everything turned off and let the js callback do its job
-            env.update({'persistent_toggle':True,'display_hide_button':False,
-                        'display_show_button':False,'display_body':False})
-        elif self.toggled==False:
-            env.update({'persistent_toggle':False,'display_hide_button':False,
-                        'display_show_button':True,'display_body':False})
+            env.update({'persistent_toggle' : True, 'display_hide_button' : False,
+                        'display_show_button' : False, 'display_body' : False})
+        elif self.toggled == False:
+            env.update({'persistent_toggle' : False, 'display_hide_button' : False,
+                        'display_show_button' : True, 'display_body' : False})
         else:
         else:
-            env.update({'persistent_toggle':False,'display_hide_button':True,
-                        'display_show_button':False,'display_body':True})
+            env.update({'persistent_toggle' : False, 'display_hide_button' : True,
+                        'display_show_button' : False, 'display_body' : True})
         if self.need_debug(): 
         if self.need_debug(): 
-            print("rendering plugin.html with env keys %s"%env.keys())
+            logger.debug("rendering plugin.html with env keys {}".format(env.keys()))
             for (k,v) in env.items(): 
             for (k,v) in env.items(): 
-                if "display" in k or "persistent" in k: print(k,'->',v)
+                if "display" in k or "persistent" in k:
+                    logger.debug("{} -> {}".format(k, v))
         result = render_to_string ('plugin.html',env)
 
         # export this only for relevant plugins
         result = render_to_string ('plugin.html',env)
 
         # export this only for relevant plugins
@@ -212,40 +217,38 @@ class Plugin:
         """Should return an HTML fragment"""
         template = self.template_file()
         # start with a fresh one
         """Should return an HTML fragment"""
         template = self.template_file()
         # start with a fresh one
-        env={}
+        env = {}
         # add our own settings as defaults
         env.update(self.__dict__)
         # then the things explicitly defined in template_env()
         env.update(self.template_env(request))
         if not isinstance (env,dict):
             raise Exception, "%s.template_env returns wrong type"%self.classname
         # add our own settings as defaults
         env.update(self.__dict__)
         # then the things explicitly defined in template_env()
         env.update(self.template_env(request))
         if not isinstance (env,dict):
             raise Exception, "%s.template_env returns wrong type"%self.classname
-        result=render_to_string (template, env)
+        result = render_to_string (template, env)
         if self.need_debug():
         if self.need_debug():
-            print("%s.render_content: BEG --------------------"%self.classname)
-            print("template=%s"%template)
-            print("env.keys=%s"%env.keys())
-            #print "env=%s"%env
-            #print result
-            print("%s.render_content: END --------------------"%self.classname)
+            logger.debug("{}.render_content: BEG --------------------".format(self.classname))
+            logger.debug("template={}".format(template))
+            logger.debug("env.keys={}".format(env.keys()))
+            logger.debug("{}.render_content: END --------------------".format(self.classname))
         return result
 
     # or from the result of self.requirements()
     def handle_requirements (self, request):
         try:
         return result
 
     # or from the result of self.requirements()
     def handle_requirements (self, request):
         try:
-            d=self.requirements()
+            d = self.requirements()
             for (k,v) in d.iteritems():
                 if self.need_debug():
             for (k,v) in d.iteritems():
                 if self.need_debug():
-                    print("%s: handling requirement %s"%(self.classname,v))
+                    logger.debug("{}: handling requirement {}".format(self.classname, v))
                 # e.g. js_files -> add_js_files
                 # e.g. js_files -> add_js_files
-                method_name='add_'+k
-                method=Page.__dict__[method_name]
-                method(self.page,v)
+                method_name = 'add_' + k
+                method = Page.__dict__[method_name]
+                method(self.page, v)
         except AttributeError: 
             # most likely the object does not have that method defined, which is fine
             pass
         except:
             import traceback
         except AttributeError: 
             # most likely the object does not have that method defined, which is fine
             pass
         except:
             import traceback
-            traceback.print_exc()
+            logger.log(traceback.format_exc())
             pass
 
     #################### requirements/prelude management
             pass
 
     #################### requirements/prelude management
index c26c20b..13e1d6f 100644 (file)
@@ -1,9 +1,9 @@
-from __future__ import print_function
-
 from types import StringTypes, ListType
 
 from django.template.loader import render_to_string
 
 from types import StringTypes, ListType
 
 from django.template.loader import render_to_string
 
+from myslice.settings import logger
+
 debug=False
 
 # the need for js_init_chunks is because we need to have the plugins initialized
 debug=False
 
 # the need for js_init_chunks is because we need to have the plugins initialized
@@ -55,7 +55,7 @@ class Prelude:
         result += ",".join( [ "%s->%s"%(k,len(getattr(self,k))) for k in Prelude.keys ] )
         return result
     def inspect (self,msg):
         result += ",".join( [ "%s->%s"%(k,len(getattr(self,k))) for k in Prelude.keys ] )
         return result
     def inspect (self,msg):
-        print(self.inspect_string(msg))
+        logger.debug(self.inspect_string(msg))
 
     # first attempt was to use a simple dict like this
     #    env={}
 
     # first attempt was to use a simple dict like this
     #    env={}
@@ -88,8 +88,9 @@ class Prelude:
         env['all_js_chunks']= self.js_init_chunks + self.js_chunks
         env['css_chunks']=self.css_chunks
         if debug:
         env['all_js_chunks']= self.js_init_chunks + self.js_chunks
         env['css_chunks']=self.css_chunks
         if debug:
-            print("prelude has %d js_files, %d css files, (%d+%d) js chunks and %d css_chunks"%\
-                (len(self.js_files),len(self.css_files),len(self.js_init_chunks),len(self.js_chunks),len(self.css_chunks),))
+            logger.debug("prelude has {} js_files, {} css files, ({}+{}) js chunks and {} css_chunks"\
+                         .format (len(self.js_files), len(self.css_files),
+                                  len(self.js_init_chunks), len(self.js_chunks), len(self.css_chunks),))
         # render this with prelude.html and put the result in header_prelude
         header_prelude = render_to_string ('prelude.html',env)
         return { 'header_prelude' : header_prelude }
         # render this with prelude.html and put the result in header_prelude
         header_prelude = render_to_string ('prelude.html',env)
         return { 'header_prelude' : header_prelude }