Ejemplo n.º 1
0
class Installer:
	def __init__(self, root_login, root_password):

		import webnotes
		import webnotes.db
		import webnotes.defs
	
		self.root_password = root_password
		from webnotes.model.db_schema import DbManager
		
		self.conn = webnotes.db.Database(user=root_login, password=root_password)			
		webnotes.conn=self.conn
		webnotes.session= {'user':'******'}
		self.dbman = DbManager(self.conn)
		self.mysql_path = hasattr(webnotes.defs, 'mysql_path') and webnotes.defs.mysql_path or ''

	#
	# run framework related cleanups
	#
	def framework_cleanups(self, target):

		import webnotes
		self.dbman.drop_table('__DocTypeCache')
		webnotes.conn.sql("create table `__DocTypeCache` (name VARCHAR(120), modified DATETIME, content TEXT, server_code_compiled TEXT)")

		# set the basic passwords
		webnotes.conn.begin()
		webnotes.conn.sql("update tabProfile set password = password('admin') where name='Administrator'")
		webnotes.conn.commit()

	def import_core_module(self):
		"""
			Imports the "Core" module from .txt file and creates
			Creates profile Administrator
		"""
		import webnotes
		from webnotes.modules import Module
		core = Module('core')

		core.reload('doctype','doctype')
		core.reload('doctype','docfield')
		core.reload('doctype','docperm')
		core.sync_all(verbose=1)
		
	def create_users(self):
		"""
			Create Administrator / Guest
		"""
		webnotes.conn.begin()
		
		from webnotes.model.doc import Document
		p = Document('Profile')
		p.name = p.first_name = 'Administrator'
		p.email = 'admin@localhost'
		p.save(new = 1)
		
		ur = Document('UserRole')
		ur.parent = 'Administrator'
		ur.role = 'Administrator'
		ur.parenttype = 'Profile'
		ur.parentfield = 'userroles'
		p.enabled = 1
		ur.save(1)

		p = Document('Profile')
		p.name = p.first_name = 'Guest'
		p.email = 'guest@localhost'
		p.enabled = 1
		p.save(new = 1)
		
		ur = Document('UserRole')
		ur.parent = 'Guest'
		ur.role = 'Guest'
		ur.parenttype = 'Profile'
		ur.parentfield = 'userroles'
		ur.save(1)

		webnotes.conn.commit()

	def get_db_password(self, db_name):
		"""
			Get the db_password by method
		"""
		import webnotes.defs
		if hasattr(webnotes.defs, 'get_db_password'):
			return webnotes.defs.get_db_password(db_name)
		if hasattr(webnotes.defs, 'db_password'):
			return webnotes.defs.db_password
		return ''

	def import_from_db(self, target, source_path='', password = '******', verbose=0):
		"""
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""
		import webnotes.defs		
		
		# delete user (if exists)
		self.dbman.delete_user(target)

		# create user and db
		self.dbman.create_user(target,self.get_db_password(target))
		if verbose: print "Created user %s" % target
	
		# create a database
		self.dbman.create_database(target)
		if verbose: print "Created database %s" % target
		
		# grant privileges to user
		self.dbman.grant_all_privileges(target,target)
		if verbose: print "Granted privileges to user %s and database %s" % (target, target)

		# flush user privileges
		self.dbman.flush_privileges()

		self.conn.use(target)
		
		# import in target
		if verbose: print "Starting database import..."

		# get the path of the sql file to import
		source_given = True
		if not source_path:
			source_given = False
			source_path = os.path.join(os.path.sep.join(os.path.abspath(webnotes.__file__).split(os.path.sep)[:-3]), 'data', 'Framework.sql')

		self.dbman.restore_database(target, source_path, self.root_password)
		if verbose: print "Imported from database %s" % source_path

		if not source_given:
			if verbose: print "Importing core module..."
			self.import_core_module()
			self.create_users()

		# framework cleanups
		self.framework_cleanups(target)
		if verbose: print "Ran framework startups on %s" % target
		
		return target		
Ejemplo n.º 2
0
class Installer:
    def __init__(self, root_login, root_password=None):
        if root_login:
            if not root_password:
                root_password = getattr(conf, "root_password", None)
            if not root_password:
                root_password = getpass.getpass("MySQL root password: "******"""
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""
        # delete user (if exists)
        self.dbman.delete_user(target)

        # create user and db
        self.dbman.create_user(target, conf.db_password)

        if verbose: print "Created user %s" % target

        # create a database
        self.dbman.create_database(target)
        if verbose: print "Created database %s" % target

        # grant privileges to user
        self.dbman.grant_all_privileges(target, target)
        if verbose:
            print "Granted privileges to user %s and database %s" % (target,
                                                                     target)

        # flush user privileges
        self.dbman.flush_privileges()

        self.conn.use(target)

        # import in target
        if verbose: print "Starting database import..."

        # get the path of the sql file to import
        source_given = True
        if not source_path:
            source_given = False
            source_path = os.path.join(
                os.path.sep.join(
                    os.path.abspath(webnotes.__file__).split(
                        os.path.sep)[:-3]), 'data', 'Framework.sql')

        self.dbman.restore_database(target, source_path, target,
                                    conf.db_password)
        if verbose: print "Imported from database %s" % source_path

        # fresh app
        if 'Framework.sql' in source_path:
            print "Installing app..."
            self.install_app()

        # update admin password
        self.create_auth_table()
        self.update_admin_password(password)
        return target

    def install_app(self):
        try:
            from startup import install
        except ImportError, e:
            print "No app install found"

        sync_for("lib", force=True, sync_everything=True)
        self.import_core_docs()
        install.pre_import()
        sync_for("app", force=True, sync_everything=True)
        print "Completing App Import..."
        install.post_import()
        print "Updating patches..."
        self.set_all_patches_as_completed()
Ejemplo n.º 3
0
class Installer:
	def __init__(self, root_login, root_password=None):

		import webnotes
		import webnotes.db
	
		if not root_password:
			import getpass
			root_password = getpass.getpass("MySQL root password: "******"""
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""
		import conf
		
		# delete user (if exists)
		self.dbman.delete_user(target)

		# create user and db
		self.dbman.create_user(target, 
			hasattr(conf, 'db_password') and conf.db_password or password)
			
		if verbose: print "Created user %s" % target
	
		# create a database
		self.dbman.create_database(target)
		if verbose: print "Created database %s" % target
		
		# grant privileges to user
		self.dbman.grant_all_privileges(target,target)
		if verbose: print "Granted privileges to user %s and database %s" % (target, target)

		# flush user privileges
		self.dbman.flush_privileges()

		self.conn.use(target)
		
		# import in target
		if verbose: print "Starting database import..."

		# get the path of the sql file to import
		source_given = True
		if not source_path:
			source_given = False
			source_path = os.path.join(os.path.sep.join(os.path.abspath(webnotes.__file__).split(os.path.sep)[:-3]), 'data', 'Framework.sql')

		self.dbman.restore_database(target, source_path, self.root_password)
		if verbose: print "Imported from database %s" % source_path

		# fresh app
		if 'Framework.sql' in source_path:
			from webnotes.model.sync import sync_install
			print "Building tables from all module..."
			sync_install()

		# framework cleanups
		self.framework_cleanups(target)
		if verbose: print "Ran framework startups on %s" % target
		
		return target	

	def framework_cleanups(self, target):
		"""create framework internal tables"""
		import webnotes
		self.create_sessions_table()
		self.create_scheduler_log()
		self.create_session_cache()
		self.create_cache_item()

		# set the basic passwords
		webnotes.conn.begin()
		webnotes.conn.sql("""update tabProfile set password = password('admin') 
			where name='Administrator'""")
		webnotes.conn.commit()

	def create_sessions_table(self):
		"""create sessions table"""
		import webnotes
		self.dbman.drop_table('tabSessions')
		webnotes.conn.sql("""CREATE TABLE `tabSessions` (
		  `user` varchar(40) DEFAULT NULL,
		  `sid` varchar(120) DEFAULT NULL,
		  `sessiondata` longtext,
		  `ipaddress` varchar(16) DEFAULT NULL,
		  `lastupdate` datetime DEFAULT NULL,
		  `status` varchar(20) DEFAULT NULL,
		  KEY `sid` (`sid`)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8""")
	
	def create_scheduler_log(self):
		import webnotes
		self.dbman.drop_table('__SchedulerLog')
		webnotes.conn.sql("""create table __SchedulerLog (
			`timestamp` timestamp,
			method varchar(200),
			error text
		) engine=MyISAM""")
	
	def create_session_cache(self):
		import webnotes
		self.dbman.drop_table('__SessionCache')
		webnotes.conn.sql("""create table `__SessionCache` ( 
			user VARCHAR(120), 
			country VARCHAR(120), 
			cache LONGTEXT)""")

	def create_cache_item(self):
		import webnotes
		self.dbman.drop_table('__CacheItem')
		webnotes.conn.sql("""create table __CacheItem(
			`key` VARCHAR(180) NOT NULL PRIMARY KEY,
			`value` LONGTEXT,
			`expires_on` DATETIME
			) ENGINE=MyISAM DEFAULT CHARSET=utf8""")
Ejemplo n.º 4
0
class Installer:
	def __init__(self, root_login, root_password=None, db_name=None, site=None, site_config=None):
		make_conf(db_name, site=site, site_config=site_config)
		self.site = site
		
		self.make_connection(root_login, root_password)

		webnotes.local.conn = self.conn
		webnotes.local.session = webnotes._dict({'user':'******'})
	
		self.dbman = DbManager(self.conn)
		
	def make_connection(self, root_login, root_password):
		if root_login:
			if not root_password:
				root_password = webnotes.conf.get("root_password") or None
			
			if not root_password:
				root_password = getpass.getpass("MySQL root password: "******"Database %s already exists" % (db_name,))

		# create user and db
		self.dbman.create_user(db_name, webnotes.conf.db_password)
			
		if verbose: print "Created user %s" % db_name
	
		# create a database
		self.dbman.create_database(db_name)
		if verbose: print "Created database %s" % db_name
		
		# grant privileges to user
		self.dbman.grant_all_privileges(db_name, db_name)
		if verbose: print "Granted privileges to user %s and database %s" % (db_name, db_name)

		# flush user privileges
		self.dbman.flush_privileges()
		
		# close root connection
		self.conn.close()

		webnotes.connect(db_name=db_name, site=self.site)
		self.dbman = DbManager(webnotes.conn)
		
		# import in db_name
		if verbose: print "Starting database import..."

		# get the path of the sql file to import
		if not source_sql:
			source_sql = os.path.join(os.path.dirname(webnotes.__file__), "..", 
				'conf', 'Framework.sql')

		self.dbman.restore_database(db_name, source_sql, db_name, webnotes.conf.db_password)
		if verbose: print "Imported from database %s" % source_sql
		
		self.create_auth_table()

		# fresh app
		if 'Framework.sql' in source_sql:
			if verbose: print "Installing app..."
			self.install_app(verbose=verbose)

		# update admin password
		self.update_admin_password(admin_password)
		
		# create public folder
		from webnotes.install_lib import setup_public_folder
		setup_public_folder.make(site=self.site)
		
		if not self.site:
			from webnotes.build import bundle
			bundle(False)
		
		return db_name
		
	def install_app(self, verbose=False):
		sync_for("lib", force=True, sync_everything=True, verbose=verbose)
		self.import_core_docs()

		try:
			from startup import install
		except ImportError, e:
			install = None

		if os.path.exists("app"):
			sync_for("app", force=True, sync_everything=True, verbose=verbose)

		if os.path.exists(os.path.join("app", "startup", "install_fixtures")):
			install_fixtures()

		if verbose: print "Completing App Import..."
		install and install.post_import()
		if verbose: print "Updating patches..."
		self.set_all_patches_as_completed()
		self.assign_all_role_to_administrator()
Ejemplo n.º 5
0
class Installer:
	def __init__(self, root_login, root_password=None):
		if root_login:
			if not root_password:
				root_password = getattr(conf, "root_password", None)
			if not root_password:
				root_password = getpass.getpass("MySQL root password: "******"""
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""		
		# delete user (if exists)
		self.dbman.delete_user(target)

		# create user and db
		self.dbman.create_user(target, conf.db_password)
			
		if verbose: print "Created user %s" % target
	
		# create a database
		self.dbman.create_database(target)
		if verbose: print "Created database %s" % target
		
		# grant privileges to user
		self.dbman.grant_all_privileges(target,target)
		if verbose: print "Granted privileges to user %s and database %s" % (target, target)

		# flush user privileges
		self.dbman.flush_privileges()

		self.conn.use(target)
		
		# import in target
		if verbose: print "Starting database import..."

		# get the path of the sql file to import
		source_given = True
		if not source_path:
			source_given = False
			source_path = os.path.join(os.path.sep.join(os.path.abspath(webnotes.__file__).split(os.path.sep)[:-3]), 'data', 'Framework.sql')

		self.dbman.restore_database(target, source_path, target, conf.db_password)
		if verbose: print "Imported from database %s" % source_path

		# fresh app
		if 'Framework.sql' in source_path:
			print "Installing app..."
			self.install_app()

		# update admin password
		self.create_auth_table()
		self.update_admin_password(password)
		return target
		
	def install_app(self):
		try:
			from startup import install
		except ImportError, e:
			print "No app install found"

		sync_for("lib", force=True, sync_everything=True)
		self.import_core_docs()
		install.pre_import()
		sync_for("app", force=True, sync_everything=True)
		print "Completing App Import..."
		install.post_import()
		print "Updating patches..."
		self.set_all_patches_as_completed()
Ejemplo n.º 6
0
class Installer:
    def __init__(self, root_login, root_password=None):

        import webnotes
        import webnotes.db

        if root_login and not root_password:
            import getpass
            root_password = getpass.getpass("MySQL root password: "******"""
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""
        import conf

        # delete user (if exists)
        self.dbman.delete_user(target)

        # create user and db
        self.dbman.create_user(
            target,
            hasattr(conf, 'db_password') and conf.db_password or password)

        if verbose: print "Created user %s" % target

        # create a database
        self.dbman.create_database(target)
        if verbose: print "Created database %s" % target

        # grant privileges to user
        self.dbman.grant_all_privileges(target, target)
        if verbose:
            print "Granted privileges to user %s and database %s" % (target,
                                                                     target)

        # flush user privileges
        self.dbman.flush_privileges()

        self.conn.use(target)

        # import in target
        if verbose: print "Starting database import..."

        # get the path of the sql file to import
        source_given = True
        if not source_path:
            source_given = False
            source_path = os.path.join(
                os.path.sep.join(
                    os.path.abspath(webnotes.__file__).split(
                        os.path.sep)[:-3]), 'data', 'Framework.sql')

        self.dbman.restore_database(target, source_path, self.root_password)
        if verbose: print "Imported from database %s" % source_path

        # fresh app
        if 'Framework.sql' in source_path:
            from webnotes.model.sync import sync_install
            print "Building tables from all module..."
            sync_install()

        # framework cleanups
        self.framework_cleanups(target)
        if verbose: print "Ran framework startups on %s" % target

        return target

    def framework_cleanups(self, target):
        """create framework internal tables"""
        import webnotes
        self.create_sessions_table()
        self.create_scheduler_log()
        self.create_auth_table()

        # set the basic passwords
        webnotes.conn.begin()
        webnotes.conn.sql("""update __Auth set password = password('admin') 
			where user='******'""")
        webnotes.conn.commit()

    def create_sessions_table(self):
        """create sessions table"""
        import webnotes
        self.dbman.drop_table('tabSessions')
        webnotes.conn.sql("""CREATE TABLE `tabSessions` (
		  `user` varchar(40) DEFAULT NULL,
		  `sid` varchar(120) DEFAULT NULL,
		  `sessiondata` longtext,
		  `ipaddress` varchar(16) DEFAULT NULL,
		  `lastupdate` datetime DEFAULT NULL,
		  `status` varchar(20) DEFAULT NULL,
		  KEY `sid` (`sid`)
		) ENGINE=InnoDB DEFAULT CHARSET=utf8""")

    def create_scheduler_log(self):
        import webnotes
        self.dbman.drop_table('__SchedulerLog')
        webnotes.conn.sql("""create table __SchedulerLog (
			`timestamp` timestamp,
			method varchar(200),
			error text
		) engine=MyISAM""")

    def create_auth_table(self):
        import webnotes
        webnotes.conn.sql("""create table if not exists __Auth (
			`user` VARCHAR(180) NOT NULL PRIMARY KEY,
			`password` VARCHAR(180) NOT NULL
			) ENGINE=InnoDB DEFAULT CHARSET=utf8""")
Ejemplo n.º 7
0
class Installer:
    def __init__(self, root_login, root_password):

        self.root_password = root_password
        from webnotes.model.db_schema import DbManager

        self.conn = webnotes.db.Database(user=root_login, password=root_password)
        webnotes.conn = self.conn
        webnotes.session = {"user": "******"}
        self.dbman = DbManager(self.conn)
        self.mysql_path = hasattr(defs, "mysql_path") and webnotes.defs.mysql_path or ""

        #
        # run framework related cleanups
        #

    def framework_cleanups(self, target):
        self.dbman.drop_table("__DocTypeCache")
        webnotes.conn.sql(
            "create table `__DocTypeCache` (name VARCHAR(120), modified DATETIME, content TEXT, server_code_compiled TEXT)"
        )

        # set the basic passwords
        webnotes.conn.begin()
        webnotes.conn.sql("update tabProfile set password = password('admin') where name='Administrator'")
        webnotes.conn.commit()

    def import_core_module(self):
        """
			Imports the "Core" module from .txt file and creates
			Creates profile Administrator
		"""
        from webnotes.modules.import_module import import_module
        from webnotes.modules.module_manager import reload_doc

        reload_doc("core", "doctype", "doctype")
        reload_doc("core", "doctype", "docfield")
        reload_doc("core", "doctype", "docperm")

        import_module("core")

        webnotes.conn.begin()

        from webnotes.model.doc import Document

        p = Document("Profile")
        p.name = p.first_name = "Administrator"
        p.email = "admin@localhost"
        p.save(new=1)

        ur = Document("UserRole")
        ur.parent = "Administrator"
        ur.role = "Administrator"
        ur.parenttype = "Profile"
        ur.parentfield = "userroles"
        p.enabled = 1
        ur.save(1)

        p = Document("Profile")
        p.name = p.first_name = "Guest"
        p.email = "guest@localhost"
        p.enabled = 1
        p.save(new=1)

        ur = Document("UserRole")
        ur.parent = "Guest"
        ur.role = "Guest"
        ur.parenttype = "Profile"
        ur.parentfield = "userroles"
        ur.save(1)

        webnotes.conn.commit()

        #
        # main script to create a database from
        #

    def import_from_db(self, target, source_path="", password="******", verbose=0):
        """
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""

        # get the path of the sql file to import
        if not source_path:
            source_path = os.path.join(
                os.path.sep.join(os.path.abspath(webnotes.__file__).split(os.path.sep)[:-3]), "data", "Framework.sql"
            )

            # delete user (if exists)
        self.dbman.delete_user(target)

        # create user and db
        self.dbman.create_user(target, getattr(defs, "db_password", None))
        if verbose:
            print "Created user %s" % target

        # create a database
        self.dbman.create_database(target)
        if verbose:
            print "Created database %s" % target

        # grant privileges to user
        self.dbman.grant_all_privileges(target, target)
        if verbose:
            print "Granted privileges to user %s and database %s" % (target, target)

        # flush user privileges
        self.dbman.flush_privileges()

        self.conn.use(target)

        # import in target
        if verbose:
            print "Starting database import..."
        self.dbman.restore_database(target, source_path, self.root_password)
        if verbose:
            print "Imported from database %s" % source_path

        self.import_core_module()

        # framework cleanups
        self.framework_cleanups(target)
        if verbose:
            print "Ran framework startups on %s" % target

        return target
Ejemplo n.º 8
0
class Installer:
    def __init__(self,
                 root_login,
                 root_password=None,
                 db_name=None,
                 site=None,
                 site_config=None):
        make_conf(db_name, site=site, site_config=site_config)
        self.site = site

        self.make_connection(root_login, root_password)

        webnotes.local.conn = self.conn
        webnotes.local.session = webnotes._dict({'user': '******'})

        self.dbman = DbManager(self.conn)

    def make_connection(self, root_login, root_password):
        if root_login:
            if not root_password:
                root_password = webnotes.conf.get("root_password") or None

            if not root_password:
                root_password = getpass.getpass("MySQL root password: "******"Database %s already exists" % (db_name, ))

        # create user and db
        self.dbman.create_user(db_name, webnotes.conf.db_password)

        if verbose: print "Created user %s" % db_name

        # create a database
        self.dbman.create_database(db_name)
        if verbose: print "Created database %s" % db_name

        # grant privileges to user
        self.dbman.grant_all_privileges(db_name, db_name)
        if verbose:
            print "Granted privileges to user %s and database %s" % (db_name,
                                                                     db_name)

        # flush user privileges
        self.dbman.flush_privileges()

        # close root connection
        self.conn.close()

        webnotes.connect(db_name=db_name, site=self.site)
        self.dbman = DbManager(webnotes.conn)

        # import in db_name
        if verbose: print "Starting database import..."

        # get the path of the sql file to import
        if not source_sql:
            source_sql = os.path.join(os.path.dirname(webnotes.__file__), "..",
                                      'conf', 'Framework.sql')

        self.dbman.restore_database(db_name, source_sql, db_name,
                                    webnotes.conf.db_password)
        if verbose: print "Imported from database %s" % source_sql

        self.create_auth_table()

        # fresh app
        if 'Framework.sql' in source_sql:
            if verbose: print "Installing app..."
            self.install_app(verbose=verbose)

        # update admin password
        self.update_admin_password(admin_password)

        # create public folder
        from webnotes.install_lib import setup_public_folder
        setup_public_folder.make(site=self.site)

        if not self.site:
            from webnotes.build import bundle
            bundle(False)

        return db_name

    def install_app(self, verbose=False):
        sync_for("lib", force=True, sync_everything=True, verbose=verbose)
        self.import_core_docs()

        try:
            from startup import install
        except ImportError, e:
            install = None

        if os.path.exists("app"):
            sync_for("app", force=True, sync_everything=True, verbose=verbose)

        if os.path.exists(os.path.join("app", "startup", "install_fixtures")):
            install_fixtures()

        if verbose: print "Completing App Import..."
        install and install.post_import()
        if verbose: print "Updating patches..."
        self.set_all_patches_as_completed()
        self.assign_all_role_to_administrator()
Ejemplo n.º 9
0
class Installer:
    def __init__(self, root_login, root_password):

        import webnotes
        import webnotes.db
        import webnotes.defs

        self.root_password = root_password
        from webnotes.model.db_schema import DbManager

        self.conn = webnotes.db.Database(user=root_login,
                                         password=root_password)
        webnotes.conn = self.conn
        webnotes.session = {'user': '******'}
        self.dbman = DbManager(self.conn)
        self.mysql_path = hasattr(
            webnotes.defs, 'mysql_path') and webnotes.defs.mysql_path or ''

    #
    # run framework related cleanups
    #
    def framework_cleanups(self, target):

        import webnotes
        self.dbman.drop_table('__DocTypeCache')
        webnotes.conn.sql(
            "create table `__DocTypeCache` (name VARCHAR(120), modified DATETIME, content TEXT, server_code_compiled TEXT)"
        )

        # set the basic passwords
        webnotes.conn.begin()
        webnotes.conn.sql(
            "update tabProfile set password = password('admin') where name='Administrator'"
        )
        webnotes.conn.commit()

    def import_core_module(self):
        """
			Imports the "Core" module from .txt file and creates
			Creates profile Administrator
		"""
        import webnotes
        from webnotes.modules import Module
        core = Module('core')

        core.reload('doctype', 'doctype')
        core.reload('doctype', 'docfield')
        core.reload('doctype', 'docperm')
        core.sync_all(verbose=1)

    def create_users(self):
        """
			Create Administrator / Guest
		"""
        webnotes.conn.begin()

        from webnotes.model.doc import Document
        p = Document('Profile')
        p.name = p.first_name = 'Administrator'
        p.email = 'admin@localhost'
        p.save(new=1)

        ur = Document('UserRole')
        ur.parent = 'Administrator'
        ur.role = 'Administrator'
        ur.parenttype = 'Profile'
        ur.parentfield = 'userroles'
        p.enabled = 1
        ur.save(1)

        p = Document('Profile')
        p.name = p.first_name = 'Guest'
        p.email = 'guest@localhost'
        p.enabled = 1
        p.save(new=1)

        ur = Document('UserRole')
        ur.parent = 'Guest'
        ur.role = 'Guest'
        ur.parenttype = 'Profile'
        ur.parentfield = 'userroles'
        ur.save(1)

        webnotes.conn.commit()

    def get_db_password(self, db_name):
        """
			Get the db_password by method
		"""
        import webnotes.defs
        if hasattr(webnotes.defs, 'get_db_password'):
            return webnotes.defs.get_db_password(db_name)
        if hasattr(webnotes.defs, 'db_password'):
            return webnotes.defs.db_password
        return ''

    def import_from_db(self,
                       target,
                       source_path='',
                       password='******',
                       verbose=0):
        """
		a very simplified version, just for the time being..will eventually be deprecated once the framework stabilizes.
		"""
        import webnotes.defs

        # delete user (if exists)
        self.dbman.delete_user(target)

        # create user and db
        self.dbman.create_user(target, self.get_db_password(target))
        if verbose: print "Created user %s" % target

        # create a database
        self.dbman.create_database(target)
        if verbose: print "Created database %s" % target

        # grant privileges to user
        self.dbman.grant_all_privileges(target, target)
        if verbose:
            print "Granted privileges to user %s and database %s" % (target,
                                                                     target)

        # flush user privileges
        self.dbman.flush_privileges()

        self.conn.use(target)

        # import in target
        if verbose: print "Starting database import..."

        # get the path of the sql file to import
        source_given = True
        if not source_path:
            source_given = False
            source_path = os.path.join(
                os.path.sep.join(
                    os.path.abspath(webnotes.__file__).split(
                        os.path.sep)[:-3]), 'data', 'Framework.sql')

        self.dbman.restore_database(target, source_path, self.root_password)
        if verbose: print "Imported from database %s" % source_path

        if not source_given:
            if verbose: print "Importing core module..."
            self.import_core_module()
            self.create_users()

        # framework cleanups
        self.framework_cleanups(target)
        if verbose: print "Ran framework startups on %s" % target

        return target