|
- """
- Create a database from scratch (wip)
- """
-
- class DatabaseInstance:
-
- def __init__(self, conn = None,db_name = None):
- self.conn = conn
- self.db_name = db_name
-
-
- # def setup(self):
- # self.create_db_and_user()
- # self.create_base_tables()
- # self.import_system_module()
- # self.setup_users()
-
- def create_db_and_user(self):
- import webnotes.defs
-
- # create user and db
- self.conn.sql("CREATE USER '%s'@'localhost' IDENTIFIED BY '%s'" % (self.db_name, webnotes.defs.db_password))
- self.conn.sql("CREATE DATABASE IF NOT EXISTS `%s` ;" % self.db_name)
- self.conn.sql("GRANT ALL PRIVILEGES ON `%s` . * TO '%s'@'localhost';" % (self.db_name, self.db_name))
- self.conn.sql("FLUSH PRIVILEGES")
- self.conn.sql("SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;")
- self.conn.sql("USE %s"%self.db_name)
-
-
-
-
-
- def create_base_tables(self):
- self.create_singles()
- self.create_sessions()
- self.create_doctypecache()
- self.create_role()
- self.create_docfield()
- self.create_docperm()
- self.create_docformat()
- self.create_doctype()
-
- def import_system_module(self):
- docs = [
- ['DocType','Role']
- ,['Role','Administrator']
- ,['Role','Guest']
- ,['Role','All']
- ,['DocType','DocPerm']
- ,['DocType','DocFormat']
- ,['DocType','DocField']
- ,['DocType','DocType']
- ,['DocType','DefaultValue']
- ,['DocType','Profile']
- ,['DocType','UserRole']
- ]
-
- # import in sequence
- for d in docs:
- import_module.import_from_files(record_list=[['System',d[0],d[1]]])
-
- # import all
- import_module.import_from_files([['System']])
-
-
- # singles
- # ------------------------------------------------------
-
- def create_singles(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabSingles`")
- self.conn.sql("""CREATE TABLE `tabSingles` (
- `doctype` varchar(40) default NULL,
- `field` varchar(40) default NULL,
- `value` text,
- KEY `doctype` (`doctype`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;""")
-
- # sessions
- # ------------------------------------------------------
-
- def create_sessions(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabSessions`;")
- self.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
- ) ENGINE=MyISAM DEFAULT CHARSET=latin1;""")
-
- # doc type cache
- # ------------------------------------------------------
-
- def create_doctypecache(self):
- self.conn.sql("DROP TABLE IF EXISTS `__DocTypeCache`")
- self.conn.sql("create table `__DocTypeCache` (name VARCHAR(120), modified DATETIME, content TEXT, server_code_compiled TEXT)")
-
-
-
-
- # Role
- # ------------------------------------------------------
-
- def create_role(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabRole`")
- self.conn.sql("""CREATE TABLE `tabRole` (
- `name` varchar(120) NOT NULL,
- `creation` datetime default NULL,
- `modified` datetime default NULL,
- `modified_by` varchar(40) default NULL,
- `owner` varchar(40) default NULL,
- `docstatus` int(1) default '0',
- `parent` varchar(120) default NULL,
- `parentfield` varchar(120) default NULL,
- `parenttype` varchar(120) default NULL,
- `idx` int(8) default NULL,
- `role_name` varchar(180) default NULL,
- `module` varchar(180) default NULL,
- PRIMARY KEY (`name`),
- KEY `parent` (`parent`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;""")
-
- # DocField
- # ------------------------------------------------------
-
- def create_docfield(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabDocField`")
- self.conn.sql("""CREATE TABLE `tabDocField` (
- `name` varchar(120) NOT NULL,
- `creation` datetime default NULL,
- `modified` datetime default NULL,
- `modified_by` varchar(40) default NULL,
- `owner` varchar(40) default NULL,
- `docstatus` int(1) default '0',
- `parent` varchar(120) default NULL,
- `parentfield` varchar(120) default NULL,
- `parenttype` varchar(120) default NULL,
- `idx` int(8) default NULL,
- `fieldname` varchar(180) default NULL,
- `label` varchar(180) default NULL,
- `oldfieldname` varchar(180) default NULL,
- `fieldtype` varchar(180) default NULL,
- `oldfieldtype` varchar(180) default NULL,
- `options` text,
- `search_index` int(3) default NULL,
- `hidden` int(3) default NULL,
- `print_hide` int(3) default NULL,
- `report_hide` int(3) default NULL,
- `reqd` int(3) default NULL,
- `no_copy` int(3) default NULL,
- `allow_on_submit` int(3) default NULL,
- `trigger` varchar(180) default NULL,
- `depends_on` varchar(180) default NULL,
- `permlevel` int(3) default NULL,
- `width` varchar(180) default NULL,
- `default` text,
- `description` text,
- `colour` varchar(180) default NULL,
- `icon` varchar(180) default NULL,
- `in_filter` int(3) default NULL,
- PRIMARY KEY (`name`),
- KEY `parent` (`parent`),
- KEY `label` (`label`),
- KEY `fieldtype` (`fieldtype`),
- KEY `fieldname` (`fieldname`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;""")
-
- # DocPerm
- # ------------------------------------------------------
-
- def create_docperm(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabDocPerm`")
- self.conn.sql("""CREATE TABLE `tabDocPerm` (
- `name` varchar(120) NOT NULL,
- `creation` datetime default NULL,
- `modified` datetime default NULL,
- `modified_by` varchar(40) default NULL,
- `owner` varchar(40) default NULL,
- `docstatus` int(1) default '0',
- `parent` varchar(120) default NULL,
- `parentfield` varchar(120) default NULL,
- `parenttype` varchar(120) default NULL,
- `idx` int(8) default NULL,
- `permlevel` int(11) default NULL,
- `role` varchar(180) default NULL,
- `match` varchar(180) default NULL,
- `read` int(3) default NULL,
- `write` int(3) default NULL,
- `create` int(3) default NULL,
- `submit` int(3) default NULL,
- `cancel` int(3) default NULL,
- `amend` int(3) default NULL,
- `execute` int(3) default NULL,
- PRIMARY KEY (`name`),
- KEY `parent` (`parent`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;""")
-
- # DocFormat
- # ------------------------------------------------------
-
- def create_docformat(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabDocFormat`")
- self.conn.sql("""CREATE TABLE `tabDocFormat` (
- `name` varchar(120) NOT NULL,
- `creation` datetime default NULL,
- `modified` datetime default NULL,
- `modified_by` varchar(40) default NULL,
- `owner` varchar(40) default NULL,
- `docstatus` int(1) default '0',
- `parent` varchar(120) default NULL,
- `parentfield` varchar(120) default NULL,
- `parenttype` varchar(120) default NULL,
- `idx` int(8) default NULL,
- `format` varchar(180) default NULL,
- PRIMARY KEY (`name`),
- KEY `parent` (`parent`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;""")
-
- # DocType
- # ------------------------------------------------------
-
- def create_doctype(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabDocType`")
- self.conn.sql("""CREATE TABLE `tabDocType` (
- `name` varchar(180) NOT NULL default '',
- `creation` datetime default NULL,
- `modified` datetime default NULL,
- `modified_by` varchar(40) default NULL,
- `owner` varchar(180) default NULL,
- `docstatus` int(1) default '0',
- `parent` varchar(120) default NULL,
- `parentfield` varchar(120) default NULL,
- `parenttype` varchar(120) default NULL,
- `idx` int(8) default NULL,
- `search_fields` varchar(180) default NULL,
- `issingle` int(1) default NULL,
- `istable` int(1) default NULL,
- `version` int(11) default NULL,
- `module` varchar(180) default NULL,
- `autoname` varchar(180) default NULL,
- `name_case` varchar(180) default NULL,
- `description` text,
- `colour` varchar(180) default NULL,
- `read_only` int(1) default NULL,
- `in_create` int(1) default NULL,
- `show_in_menu` int(3) default NULL,
- `menu_index` int(11) default NULL,
- `parent_node` varchar(180) default NULL,
- `smallicon` varchar(180) default NULL,
- `allow_print` int(1) default NULL,
- `allow_email` int(1) default NULL,
- `allow_copy` int(1) default NULL,
- `allow_rename` int(1) default NULL,
- `hide_toolbar` int(1) default NULL,
- `hide_heading` int(1) default NULL,
- `allow_attach` int(1) default NULL,
- `use_template` int(1) default NULL,
- `max_attachments` int(11) default NULL,
- `section_style` varchar(180) default NULL,
- `client_script` text,
- `client_script_core` text,
- `server_code` text,
- `server_code_core` text,
- `server_code_compiled` text,
- `client_string` text,
- `server_code_error` varchar(180) default NULL,
- `print_outline` varchar(180) default NULL,
- `dt_template` text,
- `is_transaction_doc` int(1) default NULL,
- `change_log` text,
- `read_only_onload` int(1) default NULL,
- PRIMARY KEY (`name`),
- KEY `parent` (`parent`)
- ) ENGINE=InnoDB DEFAULT CHARSET=latin1;""")
-
- def create_module_def(self):
- self.conn.sql("DROP TABLE IF EXISTS `tabModule Def`")
- self.conn.sql("CREATE TABLE `tabModule Def` (`name` varchar(120) NOT NULL, `creation` datetime default NULL, `modified` datetime default NULL,`modified_by` varchar(40) default NULL,`owner` varchar(40) default NULL,`docstatus` int(1) default '0', `parent` varchar(120) default NULL,`parentfield` varchar(120) default NULL, `parenttype` varchar(120) default NULL, `idx` int(8) default NULL,`module_name` varchar(180) default NULL,`doctype_list` text, PRIMARY KEY (`name`), KEY `parent` (`parent`)) ENGINE=InnoDB")
-
-
- def post_cleanup(self):
- self.conn.sql("use %s;" % self.db_name)
- self.conn.sql("update tabProfile set password = password('admin') where name='Administrator'")
- self.conn.sql("update tabDocType set server_code_compiled = NULL")
|