Skip to content

Commit

Permalink
WIP: Refactor to add new furetui (#25)
Browse files Browse the repository at this point in the history
* Update conf

* Refactored Makefile

* Updated setup

* Fixed unittest

* Added backend

* Added mssql

* Put package in dev mode

* Added update-project

* Added icon

* Use sesssion to store auth
  • Loading branch information
jssuzanne authored May 21, 2021
1 parent 276c69b commit 144e16a
Show file tree
Hide file tree
Showing 25 changed files with 436 additions and 53 deletions.
38 changes: 19 additions & 19 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@


test:
rm -rf travis_mysql
cookiecutter . --no-input project_name=travis_mysql db_driver_name=mysql
make -C travis_mysql/ setup-tests
make -C travis_mysql/ test
make -C travis_mysql/ lint
make -C travis_mysql/ documentation
rm -rf travis
cookiecutter . --no-input project_name=travis
make -C travis/ setup-tests
make -C travis/ test
make -C travis/ lint
make -C travis/ documentation
rm -rf travis_pyramid
cookiecutter . --no-input project_name=travis_pyramid http_server=anyblok_pyramid
cookiecutter . --no-input project_name=travis_pyramid http_server=pyramid
make -C travis_pyramid/ setup-tests
make -C travis_pyramid/ test
make -C travis_pyramid/ lint
make -C travis_pyramid/ documentation
rm -rf travis_pyramid_gunicorn
cookiecutter . --no-input project_name=travis_pyramid_gunicorn http_server=anyblok_pyramid+gunicorn
make -C travis_pyramid_gunicorn/ setup-tests
make -C travis_pyramid_gunicorn/ test
make -C travis_pyramid_gunicorn/ lint
make -C travis_pyramid_gunicorn/ documentation
rm -rf travis_pyramid_beaker
cookiecutter . --no-input project_name=travis_pyramid_beaker http_server=anyblok_pyramid+beaker
make -C travis_pyramid_beaker/ setup-tests
make -C travis_pyramid_beaker/ test
make -C travis_pyramid_beaker/ lint
make -C travis_pyramid_beaker/ documentation
rm -rf travis_furetui
cookiecutter . --no-input project_name=travis_furetui furetui=yes
make -C travis_furetui/ setup-tests
make -C travis_furetui/ test
make -C travis_furetui/ lint
make -C travis_furetui/ documentation
rm -rf travis_furetui_custom
rm -rf travis_mysql
cookiecutter . --no-input project_name=travis_mysql db_driver_name=mysql
make -C travis_mysql/ setup-tests
make -C travis_mysql/ test
make -C travis_mysql/ lint
make -C travis_mysql/ documentation
cookiecutter . --no-input project_name=travis_furetui_custom furetui=custom
make -C travis_furetui_custom/ setup-tests
make -C travis_furetui_custom/ test
make -C travis_furetui_custom/ lint
make -C travis_furetui_custom/ documentation
21 changes: 11 additions & 10 deletions cookiecutter.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@
"project_short_description": "A short description of the Anyblok based project",
"python_package": "{{ cookiecutter.project_name.lower().replace(' ', '_') }}",
"blok_name": "{{ cookiecutter.project_name.lower().replace(' ', '_') }}",
"db_driver_name": ["postgresql", "mysql"],
"db_driver_name": ["postgresql", "mysql", "mssql"],
"db_name": "{{ cookiecutter.project_name.lower().replace(' ', '_') }}",
"http_server": [
"no",
"anyblok_pyramid",
"anyblok_pyramid+beaker",
"anyblok_pyramid+gunicorn",
"anyblok_pyramid+beaker+gunicorn"
],
"has_anyblok_marshmallow": ["no", "yes"],
"open_source_license": ["Mozilla Public License Version 2.0", "GNU General Public License v3", "MIT license", "BSD license", "ISC license", "Apache Software License 2.0", "Not open source"],
"furetui": ["no", "yes", "custom"],
"http_server": ["no", "pyramid"],
"furetui": ["no", "yes", "custom"],
"open_source_license": [
"Mozilla Public License Version 2.0",
"GNU General Public License v3",
"MIT license", "BSD license",
"ISC license",
"Apache Software License 2.0",
"Not open source"],
"version": "0.1.0",
"full_name": "Your name",
"email": "Your address email (eq. [email protected])",
Expand Down
13 changes: 12 additions & 1 deletion hooks/post_gen_project.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,17 @@
#!/bin/bash

{%- if 'anyblok_pyramid' not in cookiecutter.http_server.split('+') %}
{%- if not ('pyramid' == cookiecutter.http_server or 'no' != cookiecutter.furetui) %}
rm -v {{cookiecutter.python_package}}/{{cookiecutter.blok_name}}/views.py
rm -v {{cookiecutter.python_package}}/{{cookiecutter.blok_name}}/tests/test_pyramid.py
{%- endif %}

{%- if 'custom' != cookiecutter.furetui %}
rm -vr src
rm -vr public
rm -vr tests
rm -v package.json
rm -v babel.config.js
rm -v vue.config.js
rm -v .env
rm -v .env.development
{%- endif %}
1 change: 1 addition & 0 deletions {{cookiecutter.project_slug}}/.env.development
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
VUE_APP_API_REST_URL = http://localhost:5000
42 changes: 34 additions & 8 deletions {{cookiecutter.project_slug}}/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,33 +17,53 @@ help:

setup: ## install python project dependencies
pip install --upgrade pip wheel
pip install .
anyblok_createdb -c app.cfg || anyblok_updatedb -c app.cfg
pip install --upgrade -r requirements.txt
python update_project.py -c app.cfg

setup-tests: ## install python project dependencies for tests
pip install --upgrade pip wheel
pip install --upgrade -r requirements.test.txt
pip install .
anyblok_createdb -c app.test.cfg || anyblok_updatedb -c app.test.cfg
python update_project.py -c app.test.cfg
{%- if 'custom' == cookiecutter.furetui %}
nodeenv -p
npm i -g npm
npm install
{%- endif %}

setup-dev: ## install python project dependencies for development
pip install --upgrade pip wheel
pip install --upgrade -r requirements.dev.txt
python setup.py develop
anyblok_createdb -c app.dev.cfg || anyblok_updatedb -c app.dev.cfg
python update_project.py -c app.dev.cfg
{%- if 'custom' == cookiecutter.furetui %}
nodeenv -p
npm i -g npm
npm install
{%- endif %}

{%- if 'anyblok_pyramid' in cookiecutter.http_server.split('+') %}
{%- if 'pyramid' == cookiecutter.http_server or 'no' != cookiecutter.furetui %}

run-dev: ## launch pyramid development server
anyblok_pyramid -c app.dev.cfg --wsgi-host 0.0.0.0
{%- if 'gunicorn' in cookiecutter.http_server.split('+') %}

run-gunicorn: ## launch pyramid server with gunicorn
gunicorn_anyblok_pyramid --anyblok-configfile app.cfg

{%- endif %}


{%- if 'custom' == cookiecutter.furetui %}
run-dev-npm: ## launch npm development server with hot reload
npm update
npm run serve

build-assets: ## build js and scss assets for production
npm update
npm run build
rm -rfv {{ cookiecutter.python_package }}/{{ cookiecutter.blok_name }}/static/furetui
mv dist {{ cookiecutter.python_package }}/{{ cookiecutter.blok_name }}/static/furetui
{%- endif %}


clean: clean-build clean-pyc clean-test ## remove all build, test, coverage and Python artifacts

clean-build: ## remove build artifacts
Expand All @@ -66,9 +86,15 @@ clean-test: ## remove test artifacts

lint: ## check style with flake8
flake8 {{ cookiecutter.python_package }}
{%- if 'custom' == cookiecutter.furetui %}
npm run lint
{%- endif %}

test: ## run tests
ANYBLOK_CONFIG_FILE=app.test.cfg py.test -v -s {{ cookiecutter.python_package }}
{%- if 'custom' == cookiecutter.furetui %}
npm run test:unit
{%- endif %}

documentation: ## generate documentation
anyblok_doc -c app.test.cfg --doc-format RST --doc-output doc/source/apidoc.rst
Expand Down
19 changes: 16 additions & 3 deletions {{cookiecutter.project_slug}}/app.cfg
Original file line number Diff line number Diff line change
@@ -1,7 +1,20 @@
[AnyBlok]
db_name = {{ cookiecutter.db_name }}
{%- if 'mssql' == cookiecutter.db_driver_name %}
db_driver_name = mssql+pymssql
{%- else %}
db_driver_name = {{ cookiecutter.db_driver_name }}
install_or_update_bloks = {{ cookiecutter.blok_name }}
{%- if 'anyblok_pyramid' in cookiecutter.http_server.split('+') %}
wsgi_port = 8080
{%- endif %}

{%- if 'pyramid' == cookiecutter.http_server or 'no' != cookiecutter.furetui %}
wsgi_port = 5000
beaker.session.data_dir = {{ cookiecutter.db_name }}.session
pyramid_authentication_method = anyblok_pyramid.bloks.pyramid.pyramid:getSessionAuthenticationPolicy
{%- endif %}

{%- if 'no' != cookiecutter.furetui %}
furetui_client_path = /backend
furetui_client_static = {{ cookiecutter.blok_name }}:static/furetui
{%- endif %}

logging_configfile = logging.cfg
1 change: 1 addition & 0 deletions {{cookiecutter.project_slug}}/app.dev.cfg
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
[AnyBlok]
extend = app.cfg
pyramid.reload_all = true
5 changes: 5 additions & 0 deletions {{cookiecutter.project_slug}}/babel.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
module.exports = {
presets: [
'@vue/cli-plugin-babel/preset'
]
}
76 changes: 76 additions & 0 deletions {{cookiecutter.project_slug}}/logging.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
[loggers]
{%- if 'no' != cookiecutter.furetui %}
keys = root, anyblok, sqlalchemy, {{ cookiecutter.python_package }}, anyblok_pyramid, anyblok_pyramid_rest_api, gunicorn, anyblok_furetui
{%- elif 'pyramid' == cookiecutter.http_server %}
keys = root, anyblok, sqlalchemy, {{ cookiecutter.python_package }}, anyblok_pyramid, anyblok_pyramid_rest_api, gunicorn
{%- else %}
keys = root, anyblok, sqlalchemy, {{ cookiecutter.python_package }}
{%- endif %}

[handlers]
keys = consoleHandler

[formatters]
keys = consoleFormatter

[logger_root]
level = INFO
handlers = consoleHandler

[logger_sqlalchemy]
level = WARN
handlers = consoleHandler
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither. (Recommended for production systems.)

[logger_anyblok]
level = INFO
handlers = consoleHandler
qualname = anyblok
propagate = 0

[logger_{{ cookiecutter.python_package }}]
level = INFO
handlers = consoleHandler
qualname = {{ cookiecutter.python_package }}
propagate = 0

{%- if 'no' != cookiecutter.furetui or 'pyramid' == cookiecutter.http_server %}
[logger_anyblok_pyramid]
level = INFO
handlers = consoleHandler
qualname = anyblok_pyramid
propagate = 0

[logger_anyblok_pyramid_rest_api]
level = INFO
handlers = consoleHandler
qualname = anyblok_pyramid_rest_api
propagate = 0

[logger_gunicorn]
level = INFO
handlers = consoleHandler
qualname = anyblok_gunicorn
propagate = 0
{%- endif %}

{%- if 'no' != cookiecutter.furetui %}
[logger_anyblok_furetui]
level = INFO
handlers = consoleHandler
qualname = anyblok_furetui
propagate = 0
{%- endif %}

[handler_consoleHandler]
class = StreamHandler
formatter = consoleFormatter
args = (sys.stdout,)

[formatter_consoleFormatter]
class = anyblok.logging.consoleFormatter
format = %(database)s:%(levelname)s - %(name)s:%(message)s
datefmt =
63 changes: 63 additions & 0 deletions {{cookiecutter.project_slug}}/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{
"name": "plop",
"version": "0.1.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"test:unit": "vue-cli-service test:unit",
"lint": "vue-cli-service lint"
},
"dependencies": {
"core-js": "^3.6.4",
"furetui": "git+ssh://[email protected]:AnyBlok/furet_ui.git#refactor",
"vue-select": "^3.4.0"
},
"devDependencies": {
"@vue/cli-plugin-babel": "~4.2.0",
"@vue/cli-plugin-eslint": "~4.2.0",
"@vue/cli-plugin-router": "~4.2.0",
"@vue/cli-plugin-unit-jest": "~4.2.0",
"@vue/cli-plugin-vuex": "~4.2.0",
"@vue/cli-service": "~4.2.0",
"@vue/test-utils": "1.0.0-beta.31",
"babel-eslint": "^10.0.3",
"eslint": "^6.7.2",
"eslint-plugin-vue": "^6.1.2",
"sass": "^1.25.0",
"sass-loader": "^8.0.2",
"vue-template-compiler": "^2.6.11"
},
"eslintConfig": {
"root": true,
"env": {
"node": true
},
"extends": [
"plugin:vue/essential",
"eslint:recommended"
],
"parserOptions": {
"parser": "babel-eslint"
},
"rules": {},
"overrides": [
{
"files": [
"**/__tests__/*.{j,t}s?(x)",
"**/tests/unit/**/*.spec.{j,t}s?(x)"
],
"env": {
"jest": true
}
}
]
},
"browserslist": [
"> 1%",
"last 2 versions"
],
"jest": {
"preset": "@vue/cli-plugin-unit-jest"
}
}
Binary file added {{cookiecutter.project_slug}}/public/favicon.ico
Binary file not shown.
18 changes: 18 additions & 0 deletions {{cookiecutter.project_slug}}/public/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css">
<title><%= htmlWebpackPlugin.options.title %></title>
</head>
<body>
<noscript>
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
<div id="furet-ui-custom"></div>
<!-- built files will be auto injected -->
</body>
</html>
Loading

0 comments on commit 144e16a

Please sign in to comment.