Use module_name everywhere; module_folder is redundant
hyphen cannot be used as python module name, so the default cookiecutter example does not work completely. Once module_name is fixed, module_name and module_folder are now always same and module_folder is now unnecessary. Thus this commit also drops module_folder. Change-Id: I28a5f7bd349d73627874e1466c72cc66e918f77b
This commit is contained in:
parent
3ac73d21cb
commit
9125836588
@ -29,13 +29,12 @@ Generate a Python package project::
|
|||||||
This command prompts interactive input. Please check these parameters::
|
This command prompts interactive input. Please check these parameters::
|
||||||
|
|
||||||
* "repo_group": The name for the git repo group. e.g. "openstack"
|
* "repo_group": The name for the git repo group. e.g. "openstack"
|
||||||
* "repo_name": The name for the git repo. e.g. "cafe-ui",
|
* "repo_name": The name for the git repo. e.g. "cafe-ui", This is used as python package name too.
|
||||||
* "launchpad_project": The name of the project on launchpad. e.g. "cafe-ui",
|
* "launchpad_project": The name of the project on launchpad. e.g. "cafe-ui",
|
||||||
* "project_short_description": The short descriptions for your UI. e.g. "Cafe User Interface",
|
* "project_short_description": The short descriptions for your UI. e.g. "Cafe User Interface",
|
||||||
* "help_name": The name for the help. e.g. "Cafe-UI",
|
* "help_name": The name for the help. e.g. "Cafe-UI",
|
||||||
* "call_by_name": The name of this UI to write texts such as README or Help. e.g. "Cafe UI",
|
* "call_by_name": The name of this UI to write texts such as README or Help. e.g. "Cafe UI",
|
||||||
* "module_name": The name of the python module. e.g. "cafe-ui"
|
* "module_name": The name of the python module. e.g. "cafe_ui"
|
||||||
* "module_folder": The name for the module folder. e.g. "cafe_ui",
|
|
||||||
* "dashboard": The slug of the "dashboard" you want to add this plugin into. e.g. "project",
|
* "dashboard": The slug of the "dashboard" you want to add this plugin into. e.g. "project",
|
||||||
* "panel_group": The slug for the "panel_group". e.g. "cafe",
|
* "panel_group": The slug for the "panel_group". e.g. "cafe",
|
||||||
* "panel_group_name": The caption for the "panel_group". e.g. "Cafe",
|
* "panel_group_name": The caption for the "panel_group". e.g. "Cafe",
|
||||||
@ -52,8 +51,8 @@ Run with OpenStack Horizon::
|
|||||||
|
|
||||||
cd <repo_name>
|
cd <repo_name>
|
||||||
pip install
|
pip install
|
||||||
cp <repo_name>/<module_folder>/enabled/_90_project_<panel_group>_panelgroup.py <horizon-dir>/openstack_dashboard/local/enabled
|
cp <repo_name>/<module_name>/enabled/_90_project_<panel_group>_panelgroup.py <horizon-dir>/openstack_dashboard/local/enabled
|
||||||
cp <repo_name>/<module_folder>/enabled/_91_project_<panel_group>_<panel>s.py <horizon-dir>/openstack_dashboard/local/enabled
|
cp <repo_name>/<module_name>/enabled/_91_project_<panel_group>_<panel>s.py <horizon-dir>/openstack_dashboard/local/enabled
|
||||||
|
|
||||||
then reboot the Horizon.
|
then reboot the Horizon.
|
||||||
|
|
||||||
|
@ -5,8 +5,7 @@
|
|||||||
"project_short_description": "Cafe User Interface",
|
"project_short_description": "Cafe User Interface",
|
||||||
"help_name": "Cafe-UI",
|
"help_name": "Cafe-UI",
|
||||||
"call_by_name": "Cafe UI",
|
"call_by_name": "Cafe UI",
|
||||||
"module_name": "cafe-ui",
|
"module_name": "cafe_ui",
|
||||||
"module_folder": "cafe_ui",
|
|
||||||
"dashboard": "project",
|
"dashboard": "project",
|
||||||
"panel_group": "cafe",
|
"panel_group": "cafe",
|
||||||
"panel_group_name": "Cafe",
|
"panel_group_name": "Cafe",
|
||||||
@ -14,4 +13,4 @@
|
|||||||
"panel_func": "Drink",
|
"panel_func": "Drink",
|
||||||
"api_module": "cafe",
|
"api_module": "cafe",
|
||||||
"api_name": "Cafe"
|
"api_name": "Cafe"
|
||||||
}
|
}
|
||||||
|
2
{{cookiecutter.repo_name}}/.gitignore
vendored
2
{{cookiecutter.repo_name}}/.gitignore
vendored
@ -6,7 +6,7 @@ doc/source/sourcecode
|
|||||||
node_modules
|
node_modules
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
releasenotes/build
|
releasenotes/build
|
||||||
{{ cookiecutter.module_folder }}/test/.secret_key_store
|
{{ cookiecutter.module_name }}/test/.secret_key_store
|
||||||
.coverage*
|
.coverage*
|
||||||
.jshintrc
|
.jshintrc
|
||||||
.project
|
.project
|
||||||
|
@ -53,8 +53,8 @@ Install {{ cookiecutter.call_by_name }} with all dependencies in your virtual en
|
|||||||
|
|
||||||
And enable it in Horizon::
|
And enable it in Horizon::
|
||||||
|
|
||||||
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_folder }}/enabled/_90_project_{{ cookiecutter.panel_group }}_panelgroup.py openstack_dashboard/local/enabled
|
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_name }}/enabled/_90_project_{{ cookiecutter.panel_group }}_panelgroup.py openstack_dashboard/local/enabled
|
||||||
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_folder }}/enabled/_91_project_{{ cookiecutter.panel_group }}_{{ cookiecutter.panel }}s_panel.py openstack_dashboard/local/enabled
|
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_name }}/enabled/_91_project_{{ cookiecutter.panel_group }}_{{ cookiecutter.panel }}s_panel.py openstack_dashboard/local/enabled
|
||||||
|
|
||||||
To run horizon with the newly enabled {{ cookiecutter.call_by_name }} plugin run::
|
To run horizon with the newly enabled {{ cookiecutter.call_by_name }} plugin run::
|
||||||
|
|
||||||
|
@ -35,9 +35,9 @@ sys.path.insert(0, ROOT)
|
|||||||
|
|
||||||
# This is required for ReadTheDocs.org, but isn't a bad idea anyway.
|
# This is required for ReadTheDocs.org, but isn't a bad idea anyway.
|
||||||
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE',
|
||||||
'{{ cookiecutter.module_folder }}.test.settings')
|
'{{ cookiecutter.module_name }}.test.settings')
|
||||||
|
|
||||||
from {{ cookiecutter.module_folder }} \
|
from {{ cookiecutter.module_name }} \
|
||||||
import version as ui_ver
|
import version as ui_ver
|
||||||
|
|
||||||
|
|
||||||
@ -67,7 +67,7 @@ def write_autodoc_index():
|
|||||||
return modlist
|
return modlist
|
||||||
|
|
||||||
RSTDIR = os.path.abspath(os.path.join(BASE_DIR, "sourcecode"))
|
RSTDIR = os.path.abspath(os.path.join(BASE_DIR, "sourcecode"))
|
||||||
SRCS = [('{{ cookiecutter.module_folder }}', ROOT), ]
|
SRCS = [('{{ cookiecutter.module_name }}', ROOT), ]
|
||||||
|
|
||||||
EXCLUDED_MODULES = ()
|
EXCLUDED_MODULES = ()
|
||||||
CURRENT_SOURCES = {}
|
CURRENT_SOURCES = {}
|
||||||
|
@ -53,8 +53,8 @@ Install {{ cookiecutter.call_by_name }} with all dependencies in your virtual en
|
|||||||
|
|
||||||
And enable it in Horizon::
|
And enable it in Horizon::
|
||||||
|
|
||||||
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_folder }}/enabled/_90_project_{{ cookiecutter.panel_group }}_panelgroup.py openstack_dashboard/local/enabled
|
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_name }}/enabled/_90_project_{{ cookiecutter.panel_group }}_panelgroup.py openstack_dashboard/local/enabled
|
||||||
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_folder }}/enabled/_91_project_{{ cookiecutter.panel_group }}_{{ cookiecutter.panel }}s_panel.py openstack_dashboard/local/enabled
|
ln -s ../{{ cookiecutter.repo_name }}/{{ cookiecutter.module_name }}/enabled/_91_project_{{ cookiecutter.panel_group }}_{{ cookiecutter.panel }}s_panel.py openstack_dashboard/local/enabled
|
||||||
|
|
||||||
To run horizon with the newly enabled {{ cookiecutter.call_by_name }} plugin run::
|
To run horizon with the newly enabled {{ cookiecutter.call_by_name }} plugin run::
|
||||||
|
|
||||||
|
@ -19,5 +19,5 @@ from django.core.management import execute_from_command_line # noqa
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE",
|
||||||
"{{ cookiecutter.module_folder }}.test.settings")
|
"{{ cookiecutter.module_name }}.test.settings")
|
||||||
execute_from_command_line(sys.argv)
|
execute_from_command_line(sys.argv)
|
||||||
|
@ -25,8 +25,8 @@
|
|||||||
"dependencies": {},
|
"dependencies": {},
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"postinstall": "if [ ! -d .tox ] || [ ! -d .tox/py27 ]; then tox -epy27 --notest; fi",
|
"postinstall": "if [ ! -d .tox ] || [ ! -d .tox/py27 ]; then tox -epy27 --notest; fi",
|
||||||
"lint": "eslint --no-color {{ cookiecutter.module_folder }}/static",
|
"lint": "eslint --no-color {{ cookiecutter.module_name }}/static",
|
||||||
"lintq": "eslint --quiet {{ cookiecutter.module_folder }}/static",
|
"lintq": "eslint --quiet {{ cookiecutter.module_name }}/static",
|
||||||
"test": "karma start {{ cookiecutter.module_folder }}/karma.conf.js --single-run"
|
"test": "karma start {{ cookiecutter.module_name }}/karma.conf.js --single-run"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,7 +14,7 @@ setenv = VIRTUAL_ENV={envdir}
|
|||||||
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -U {opts} {packages}
|
install_command = pip install -c{env:UPPER_CONSTRAINTS_FILE:https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt} -U {opts} {packages}
|
||||||
deps = -r{toxinidir}/requirements.txt
|
deps = -r{toxinidir}/requirements.txt
|
||||||
-r{toxinidir}/test-requirements.txt
|
-r{toxinidir}/test-requirements.txt
|
||||||
commands = python manage.py test {posargs} --settings={{cookiecutter.module_folder}}.test.settings
|
commands = python manage.py test {posargs} --settings={{cookiecutter.module_name}}.test.settings
|
||||||
|
|
||||||
[testenv:pep8]
|
[testenv:pep8]
|
||||||
commands = flake8 {posargs}
|
commands = flake8 {posargs}
|
||||||
@ -25,7 +25,7 @@ commands = {posargs}
|
|||||||
[testenv:cover]
|
[testenv:cover]
|
||||||
commands =
|
commands =
|
||||||
coverage erase
|
coverage erase
|
||||||
coverage run {toxinidir}/manage.py test {{cookiecutter.module_folder}} --settings={{cookiecutter.module_folder}}.test.settings {posargs} --exclude-dir={{cookiecutter.module_folder}}/test/integration_tests {posargs}
|
coverage run {toxinidir}/manage.py test {{cookiecutter.module_name}} --settings={{cookiecutter.module_name}}.test.settings {posargs} --exclude-dir={{cookiecutter.module_name}}/test/integration_tests {posargs}
|
||||||
coverage xml --omit '.tox/cover/*' -o 'cover/coverage.xml'
|
coverage xml --omit '.tox/cover/*' -o 'cover/coverage.xml'
|
||||||
coverage html --omit '.tox/cover/*' -d 'cover/htmlcov'
|
coverage html --omit '.tox/cover/*' -d 'cover/htmlcov'
|
||||||
|
|
||||||
@ -33,7 +33,7 @@ commands =
|
|||||||
basepython = python2.7
|
basepython = python2.7
|
||||||
commands =
|
commands =
|
||||||
pip install django>=1.8,<1.9
|
pip install django>=1.8,<1.9
|
||||||
python manage.py test {posargs} --settings={{cookiecutter.module_folder}}.test.settings
|
python manage.py test {posargs} --settings={{cookiecutter.module_name}}.test.settings
|
||||||
|
|
||||||
[testenv:eslint]
|
[testenv:eslint]
|
||||||
whitelist_externals = npm
|
whitelist_externals = npm
|
||||||
@ -56,7 +56,7 @@ commands =
|
|||||||
echo "nexecute `npm run test`"
|
echo "nexecute `npm run test`"
|
||||||
|
|
||||||
[testenv:docs]
|
[testenv:docs]
|
||||||
setenv = DJANGO_SETTINGS_MODULE={{cookiecutter.module_folder}}.test.settings
|
setenv = DJANGO_SETTINGS_MODULE={{cookiecutter.module_name}}.test.settings
|
||||||
commands = python setup.py build_sphinx
|
commands = python setup.py build_sphinx
|
||||||
|
|
||||||
[testenv:releasenotes]
|
[testenv:releasenotes]
|
||||||
|
@ -12,7 +12,7 @@
|
|||||||
|
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
|
|
||||||
from {{cookiecutter.module_folder}}.api import client
|
from {{cookiecutter.module_name}}.api import client
|
||||||
|
|
||||||
from openstack_dashboard.api.rest import urls
|
from openstack_dashboard.api.rest import urls
|
||||||
from openstack_dashboard.api.rest import utils as rest_utils
|
from openstack_dashboard.api.rest import utils as rest_utils
|
@ -15,7 +15,7 @@ import horizon
|
|||||||
|
|
||||||
# This panel will be loaded from horizon, because specified in enabled file.
|
# This panel will be loaded from horizon, because specified in enabled file.
|
||||||
# To register REST api, import below here.
|
# To register REST api, import below here.
|
||||||
from {{cookiecutter.module_folder}}.api import rest_api # noqa
|
from {{cookiecutter.module_name}}.api import rest_api # noqa
|
||||||
|
|
||||||
|
|
||||||
class {{cookiecutter.panel_func}}s(horizon.Panel):
|
class {{cookiecutter.panel_func}}s(horizon.Panel):
|
@ -19,7 +19,7 @@ PANEL_GROUP_NAME = _('{{cookiecutter.panel_group_name}}')
|
|||||||
# The slug of the dashboard the PANEL_GROUP associated with. Required.
|
# The slug of the dashboard the PANEL_GROUP associated with. Required.
|
||||||
PANEL_GROUP_DASHBOARD = '{{cookiecutter.dashboard}}'
|
PANEL_GROUP_DASHBOARD = '{{cookiecutter.dashboard}}'
|
||||||
|
|
||||||
ADD_INSTALLED_APPS = ['{{cookiecutter.module_folder}}']
|
ADD_INSTALLED_APPS = ['{{cookiecutter.module_name}}']
|
||||||
|
|
||||||
ADD_ANGULAR_MODULES = [
|
ADD_ANGULAR_MODULES = [
|
||||||
'horizon.dashboard.{{cookiecutter.panel_group}}'
|
'horizon.dashboard.{{cookiecutter.panel_group}}'
|
@ -18,4 +18,4 @@ PANEL_GROUP = '{{cookiecutter.panel_group}}'
|
|||||||
PANEL_DASHBOARD = '{{cookiecutter.dashboard}}'
|
PANEL_DASHBOARD = '{{cookiecutter.dashboard}}'
|
||||||
|
|
||||||
# Python panel class of the PANEL to be added.
|
# Python panel class of the PANEL to be added.
|
||||||
ADD_PANEL = '{{cookiecutter.module_folder}}.content.{{cookiecutter.panel}}s.panel.{{cookiecutter.panel_func}}s'
|
ADD_PANEL = '{{cookiecutter.module_name}}.content.{{cookiecutter.panel}}s.panel.{{cookiecutter.panel_func}}s'
|
@ -19,14 +19,14 @@ from openstack_dashboard.test.settings import * # noqa
|
|||||||
HORIZON_CONFIG.pop('dashboards', None)
|
HORIZON_CONFIG.pop('dashboards', None)
|
||||||
HORIZON_CONFIG.pop('default_dashboard', None)
|
HORIZON_CONFIG.pop('default_dashboard', None)
|
||||||
|
|
||||||
# Update the dashboards with {{cookiecutter.module_folder}}
|
# Update the dashboards with {{cookiecutter.module_name}}
|
||||||
import {{cookiecutter.module_folder}}.enabled
|
import {{cookiecutter.module_name}}.enabled
|
||||||
import openstack_dashboard.enabled
|
import openstack_dashboard.enabled
|
||||||
from openstack_dashboard.utils import settings
|
from openstack_dashboard.utils import settings
|
||||||
|
|
||||||
settings.update_dashboards(
|
settings.update_dashboards(
|
||||||
[
|
[
|
||||||
{{cookiecutter.module_folder}}.enabled,
|
{{cookiecutter.module_name}}.enabled,
|
||||||
openstack_dashboard.enabled,
|
openstack_dashboard.enabled,
|
||||||
],
|
],
|
||||||
HORIZON_CONFIG,
|
HORIZON_CONFIG,
|
Loading…
Reference in New Issue
Block a user