Basic support for scaffold --theme
This commit is contained in:
parent
faa60474ce
commit
227709dd21
|
@ -69,6 +69,8 @@ class Scaffold(Command):
|
||||||
scaffold.add_controller(args.controller)
|
scaffold.add_controller(args.controller)
|
||||||
if args.web:
|
if args.web:
|
||||||
scaffold.add_webclient_structure()
|
scaffold.add_webclient_structure()
|
||||||
|
if args.theme:
|
||||||
|
scaffold.add_theme_structure()
|
||||||
|
|
||||||
class ScaffoldModule(object):
|
class ScaffoldModule(object):
|
||||||
"""
|
"""
|
||||||
|
@ -102,7 +104,7 @@ class ScaffoldModule(object):
|
||||||
if_exists='append', model=model)
|
if_exists='append', model=model)
|
||||||
self.append_manifest_list('data', 'security/ir.model.access.csv')
|
self.append_manifest_list('data', 'security/ir.model.access.csv')
|
||||||
|
|
||||||
demo_file = '%s_demo.xml' % self.module
|
demo_file = 'data/%s_demo.xml' % self.module
|
||||||
self.append_xml_data('record.jinja2', self.path(demo_file),
|
self.append_xml_data('record.jinja2', self.path(demo_file),
|
||||||
model=model)
|
model=model)
|
||||||
self.append_manifest_list('demo', demo_file)
|
self.append_manifest_list('demo', demo_file)
|
||||||
|
@ -126,6 +128,13 @@ class ScaffoldModule(object):
|
||||||
self.render_file('webclient_%s.jinja2' % ext,
|
self.render_file('webclient_%s.jinja2' % ext,
|
||||||
self.path('static', 'src', ext, prefix % ext))
|
self.path('static', 'src', ext, prefix % ext))
|
||||||
|
|
||||||
|
def add_theme_structure(self):
|
||||||
|
self.append_manifest_list('depends', 'website')
|
||||||
|
css_file = '%s_theme.css' % self.module
|
||||||
|
self.render_file('theme_css.jinja2', self.path('static', 'src', 'css', css_file))
|
||||||
|
theme_file = '%s_theme.xml' % self.module
|
||||||
|
self.append_xml_data('theme_xml.jinja2', self.path('views', theme_file), skip_if_exist=True)
|
||||||
|
|
||||||
def has_import(self, initfile, module):
|
def has_import(self, initfile, module):
|
||||||
with open(initfile, 'r') as f:
|
with open(initfile, 'r') as f:
|
||||||
for imp in ast.parse(f.read()).body:
|
for imp in ast.parse(f.read()).body:
|
||||||
|
@ -183,9 +192,11 @@ class ScaffoldModule(object):
|
||||||
with open(dest, mode) as f:
|
with open(dest, mode) as f:
|
||||||
f.write(content)
|
f.write(content)
|
||||||
|
|
||||||
def append_xml_data(self, template, dest, **kwargs):
|
def append_xml_data(self, template, dest, skip_if_exist=False, **kwargs):
|
||||||
if not os.path.exists(dest):
|
if not os.path.exists(dest):
|
||||||
self.render_file('xmldata.jinja2', dest, **kwargs)
|
self.render_file('xmldata.jinja2', dest, **kwargs)
|
||||||
|
elif skip_if_exist:
|
||||||
|
warn("File `%s` already exists. Skipping it..." % dest)
|
||||||
with open(dest, 'r') as f:
|
with open(dest, 'r') as f:
|
||||||
data = f.read()
|
data = f.read()
|
||||||
m = re.search('(^\s*)?</data>', data, re.MULTILINE)
|
m = re.search('(^\s*)?</data>', data, re.MULTILINE)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
@charset "utf-8";
|
||||||
|
.{{ module }} {
|
||||||
|
background: white;
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
<template id="assets_frontend" inherit_id="website.assets_frontend" name="Theme Zen">
|
||||||
|
<xpath expr=". position="inside">
|
||||||
|
<link rel="stylesheet" type="text/css" href="/{{ module }}/static/src/css/{{ module }}_theme.css" />
|
||||||
|
</xpath>
|
||||||
|
</template>
|
||||||
|
|
|
@ -30,13 +30,15 @@ class Start(Command):
|
||||||
help="Specify the database name (default to project's directory name")
|
help="Specify the database name (default to project's directory name")
|
||||||
|
|
||||||
|
|
||||||
#openerp.tools.config.parse_config(args)
|
|
||||||
args, unknown = parser.parse_known_args(args=cmdargs)
|
args, unknown = parser.parse_known_args(args=cmdargs)
|
||||||
|
|
||||||
project_path = os.path.abspath(os.path.expanduser(os.path.expandvars(args.path)))
|
project_path = os.path.abspath(os.path.expanduser(os.path.expandvars(args.path)))
|
||||||
module_root = get_module_root(project_path)
|
module_root = get_module_root(project_path)
|
||||||
|
db_name = None
|
||||||
if module_root:
|
if module_root:
|
||||||
# go to the parent's directory of the module root if any
|
# started in a module so we choose this module name for database
|
||||||
|
db_name = project_path.split(os.path.sep)[-1]
|
||||||
|
# go to the parent's directory of the module root
|
||||||
project_path = os.path.abspath(os.path.join(project_path, os.pardir))
|
project_path = os.path.abspath(os.path.join(project_path, os.pardir))
|
||||||
|
|
||||||
# check if one of the subfolders has at least one module
|
# check if one of the subfolders has at least one module
|
||||||
|
@ -46,8 +48,7 @@ class Start(Command):
|
||||||
"in your project's directory or use `--path` argument" % project_path)
|
"in your project's directory or use `--path` argument" % project_path)
|
||||||
|
|
||||||
if not args.db_name:
|
if not args.db_name:
|
||||||
# Use the module's name if only one module found else the name of parent folder
|
args.db_name = db_name or project_path.split(os.path.sep)[-1]
|
||||||
args.db_name = mods[0] if len(mods) == 1 else project_path.split(os.path.sep)[-1]
|
|
||||||
# TODO: forbid some database names ? eg template1, ...
|
# TODO: forbid some database names ? eg template1, ...
|
||||||
try:
|
try:
|
||||||
_create_empty_database(args.db_name)
|
_create_empty_database(args.db_name)
|
||||||
|
@ -61,11 +62,12 @@ class Start(Command):
|
||||||
cmdargs.append('--addons-path=%s' % project_path)
|
cmdargs.append('--addons-path=%s' % project_path)
|
||||||
if '--db-filter' not in cmdargs:
|
if '--db-filter' not in cmdargs:
|
||||||
cmdargs.append('--db-filter=^%s$' % args.db_name)
|
cmdargs.append('--db-filter=^%s$' % args.db_name)
|
||||||
|
# Not sure we should auto install the module
|
||||||
|
# the user should use $ odoo start -i <module>
|
||||||
# if '-i' not in cmdargs and '--init' not in cmdargs:
|
# if '-i' not in cmdargs and '--init' not in cmdargs:
|
||||||
# # Install all modules of projects even if already installed
|
# # Install all modules of projects even if already installed
|
||||||
# cmdargs.extend(('-i', ','.join(mods)))
|
# cmdargs.extend(('-i', ','.join(mods)))
|
||||||
|
|
||||||
# FIXME: how to redo config ?
|
|
||||||
main(cmdargs)
|
main(cmdargs)
|
||||||
|
|
||||||
def die(message, code=1):
|
def die(message, code=1):
|
||||||
|
|
Loading…
Reference in New Issue