def create_request(path, environ=None): """Helper used in test cases to quickly setup a request obj. ``path`` The path will become PATH_INFO ``environ`` Additional environment Returns an instance of the `webob.Request` object. """ # setup the environ if environ is None: environ = {} environ.update(default_environ) # create a "blank" WebOb Request object # using Pylon's Request which is a webob Request plus # some compatibility methods req = Request.blank(path, environ) # setup a Registry reg = environ.setdefault('paste.registry', Registry()) reg.prepare() # setup pylons.request to point to our Registry reg.register(pylons.request, req) # setup tmpl context tmpl_context._push_object(ContextObj()) url._push_object(URLGenerator(default_map, environ)) return req
def create_fake_env(): registry = Registry() registry.prepare() registry.register(session, SessionObject({})) registry.register(request, Request.blank('/bootstrap')) request.identity = {} return session, request
def bootstrap(command, conf, vars): """Place any commands to setup bq here""" # <websetup.bootstrap.before.auth from sqlalchemy.exc import IntegrityError from bq.data_service.model import Taggable, Tag, BQUser, ModuleExecution registry = Registry() registry.prepare() registry.register(session, SessionObject({})) registry.register(request, Request.blank('/bootstrap')) request.identity = {} log.info('BEGIN boostrap') try: initial_mex = ModuleExecution(mex_id = False, owner_id = False) initial_mex.mex = initial_mex initial_mex.name = "initialization" initial_mex.type = "initialization" initial_mex.hidden = True model.DBSession.add(initial_mex) model.DBSession.flush() admin = model.User( user_name = u"admin", display_name = config.get('bisque.admin_display_name', u'Bisque admin')) admin._email_address = config.get('bisque.admin_email', u'*****@*****.**') admin.password = u'admin' # password = u'admin') #admin.password = u'admin' model.DBSession.add(admin) for g in [ u'admins', u'managers' ] : group = model.Group() group.group_name = g group.display_name = u'Administrators Group' group.users.append(admin) model.DBSession.add(group) permission = model.Permission() permission.permission_name = u'root' permission.description = u'This permission give an administrative right to the bearer' permission.groups.append(group) model.DBSession.add(permission) #model.DBSession.flush() # This commit will setup the BQUser also transaction.commit() except IntegrityError: print 'Warning, there was a problem adding your auth data, it may have already been added:' #import traceback #print traceback.format_exc() transaction.abort() print 'Continuing with bootstrapping...' try: ###### # #from bq.data_service.model import UniqueName initial_mex = model.DBSession.query(ModuleExecution).first() session['mex_id'] = initial_mex.id #request.identity['bisque.mex_id'] = initial_mex.id admin = model.DBSession.query(BQUser).filter_by(resource_name = 'admin').first() admin.mex_id = initial_mex.id initial_mex.owner = admin session['user'] = admin system = model.DBSession.query(Taggable).filter_by (resource_type='system').first() if system is None: system_prefs = defaults_path('preferences.xml.default') if os.path.exists(system_prefs): with open (system_prefs) as f: system = bisquik2db (f) system.permission = 'published' else: print( "Couldn't find %s: using minimal default preferences" % system_prefs) system = Taggable(resource_type = 'system') version = Tag(parent = system) version.name ='version' version.value = __VERSION__ prefs = Tag(parent = system) prefs.name = 'Preferences' model.DBSession.add(system) transaction.commit() except IntegrityError: log.exception ( 'Warning, there was a problem adding your system object, it may have already been added:') #import traceback #print traceback.format_exc() transaction.abort() log.warning ( 'Continuing with bootstrapping...' ) log.info('END boostrap')