initial template for app based on wuttaweb
with e.g. `poser install` command
This commit is contained in:
		
						commit
						46b33a622f
					
				
					 18 changed files with 344 additions and 0 deletions
				
			
		
							
								
								
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
										
									
									
										vendored
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					newapp.sh
 | 
				
			||||||
 | 
					newapp.sh~
 | 
				
			||||||
							
								
								
									
										62
									
								
								contrib/newapp.example.sh
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										62
									
								
								contrib/newapp.example.sh
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
					@ -0,0 +1,62 @@
 | 
				
			||||||
 | 
					#!/bin/bash
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# auto rebuild 'playdough' app
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# This script can be used to automatically re-create from scratch, a new
 | 
				
			||||||
 | 
					# app named 'playdough' - for sake of testing the cookiecutter template.
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# IMPORTANT: To use this script, place a copy in the root of the
 | 
				
			||||||
 | 
					# cookiecutter template source folder (~/src/cookiecutter-wuttaweb)
 | 
				
			||||||
 | 
					# alongside the cookiecutter.json file.  Name it `newapp.sh` and then
 | 
				
			||||||
 | 
					# modify your copy of the script as needed.  (See TODO comments below.)
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					# The script does the following:
 | 
				
			||||||
 | 
					# - remove existing virtualenv and source code
 | 
				
			||||||
 | 
					# - drop and recreate database
 | 
				
			||||||
 | 
					# - make new virtualenv
 | 
				
			||||||
 | 
					# - install cookiecutter
 | 
				
			||||||
 | 
					# - make new source code via cookiecutter
 | 
				
			||||||
 | 
					# - install new app
 | 
				
			||||||
 | 
					# - run web app
 | 
				
			||||||
 | 
					#
 | 
				
			||||||
 | 
					################################################################################
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					set -e
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TODO: adjust paths as needed
 | 
				
			||||||
 | 
					# nb. thanks to https://stackoverflow.com/a/246128
 | 
				
			||||||
 | 
					SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
 | 
				
			||||||
 | 
					SRC_DIR=$( dirname -- "${SCRIPT_DIR}" )
 | 
				
			||||||
 | 
					WORKON_HOME=/srv/envs
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# teardown
 | 
				
			||||||
 | 
					rm -rf $WORKON_HOME/playdough
 | 
				
			||||||
 | 
					rm -rf $SRC_DIR/playdough
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# database
 | 
				
			||||||
 | 
					sudo -u postgres dropdb --if-exists playdough
 | 
				
			||||||
 | 
					# TODO: adjust db owner as needed
 | 
				
			||||||
 | 
					sudo -u postgres createdb -O playdough playdough
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# virtualenv
 | 
				
			||||||
 | 
					python3 -m venv $WORKON_HOME/playdough
 | 
				
			||||||
 | 
					cd $WORKON_HOME/playdough
 | 
				
			||||||
 | 
					bin/pip install -U pip
 | 
				
			||||||
 | 
					bin/pip install -U setuptools wheel
 | 
				
			||||||
 | 
					bin/pip install -U cookiecutter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# source
 | 
				
			||||||
 | 
					bin/cookiecutter --no-input -o $SRC_DIR $SCRIPT_DIR \
 | 
				
			||||||
 | 
					                 full_name="Your Name" \
 | 
				
			||||||
 | 
					                 email="you@example.com" \
 | 
				
			||||||
 | 
					                 project_name="Playdough" \
 | 
				
			||||||
 | 
					                 project_short_description="My web app" \
 | 
				
			||||||
 | 
					                 open_source_license="Not open source"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# install app
 | 
				
			||||||
 | 
					bin/pip install -e $SRC_DIR/playdough
 | 
				
			||||||
 | 
					bin/playdough install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# serve web app
 | 
				
			||||||
 | 
					bin/pserve --reload file+ini:app/web.conf
 | 
				
			||||||
							
								
								
									
										12
									
								
								cookiecutter.json
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								cookiecutter.json
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,12 @@
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
					    "full_name": "Your Name",
 | 
				
			||||||
 | 
					    "email": "you@example.com",
 | 
				
			||||||
 | 
					    "project_name": "Playdough",
 | 
				
			||||||
 | 
					    "distribution_name": "{{ cookiecutter.project_name.replace(' ', '-') }}",
 | 
				
			||||||
 | 
					    "package_name": "{{ cookiecutter.project_name.lower().replace(' ', '_').replace('-', '_') }}",
 | 
				
			||||||
 | 
					    "repo_name": "{{ cookiecutter.package_name }}",
 | 
				
			||||||
 | 
					    "project_short_description": "My web app",
 | 
				
			||||||
 | 
					    "open_source_license": ["MIT license", "BSD license", "ISC license", "Apache Software License 2.0", "GNU General Public License v3", "Not open source"],
 | 
				
			||||||
 | 
					    "__egg_name": "{{ cookiecutter.distribution_name.replace('-', '-') }}",
 | 
				
			||||||
 | 
					    "__studly_prefix": "{{ cookiecutter.project_name.replace(' ', '').replace('-', '') }}"
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
							
								
								
									
										8
									
								
								hooks/pre_prompt.py
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								hooks/pre_prompt.py
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,8 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import rich
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					rich.print("\n\t[blue]Welcome to Wutta Framework[/blue]")
 | 
				
			||||||
 | 
					rich.print("\n\tThis tool will generate initial project code for a new web app.")
 | 
				
			||||||
 | 
					rich.print("\n\tYou will be asked questions about yourself (the author), and")
 | 
				
			||||||
 | 
					rich.print("\tthe project naming and license.")
 | 
				
			||||||
 | 
					print()
 | 
				
			||||||
							
								
								
									
										18
									
								
								{{ cookiecutter.repo_name }}/README.md
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								{{ cookiecutter.repo_name }}/README.md
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,18 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# {{cookiecutter.project_name}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					This is a starter project based on `WuttaWeb
 | 
				
			||||||
 | 
					<https://wuttaproject.org>`_.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## Quick Start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Make a virtual environment and install the app:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    python3 -m venv {{cookiecutter.repo_name}}
 | 
				
			||||||
 | 
					    cd {{cookiecutter.repo_name}}
 | 
				
			||||||
 | 
					    bin/pip install {{cookiecutter.distribution_name}}
 | 
				
			||||||
 | 
					    bin/{{cookiecutter.package_name}} install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					For more info see
 | 
				
			||||||
 | 
					https://rattailproject.org/docs/wuttjamaican/narr/install/index.html
 | 
				
			||||||
							
								
								
									
										51
									
								
								{{ cookiecutter.repo_name }}/pyproject.toml
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										51
									
								
								{{ cookiecutter.repo_name }}/pyproject.toml
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -0,0 +1,51 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[build-system]
 | 
				
			||||||
 | 
					requires = ["hatchling"]
 | 
				
			||||||
 | 
					build-backend = "hatchling.build"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[project]
 | 
				
			||||||
 | 
					name = "{{cookiecutter.project_name}}"
 | 
				
			||||||
 | 
					version = "0.1.0"
 | 
				
			||||||
 | 
					description = "{{cookiecutter.project_short_description}}"
 | 
				
			||||||
 | 
					readme = "README.md"
 | 
				
			||||||
 | 
					authors = [
 | 
				
			||||||
 | 
					  {name = "{{cookiecutter.full_name}}", email = "{{cookiecutter.email}}"}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					maintainers = [
 | 
				
			||||||
 | 
					  {name = "{{cookiecutter.full_name}}", email = "{{cookiecutter.email}}"}
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					classifiers = [
 | 
				
			||||||
 | 
					        # TODO: remove this if you intend to publish your project
 | 
				
			||||||
 | 
					        # (it's here by default, to prevent accidental publishing)
 | 
				
			||||||
 | 
					        "Private :: Do Not Upload",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					license = {text = "{{cookiecutter.open_source_license}}"}
 | 
				
			||||||
 | 
					dependencies = [
 | 
				
			||||||
 | 
					        "psycopg2",
 | 
				
			||||||
 | 
					        "WuttaWeb",
 | 
				
			||||||
 | 
					]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[project.scripts]
 | 
				
			||||||
 | 
					"{{cookiecutter.package_name}}" = "{{cookiecutter.package_name}}.cli:{{cookiecutter.package_name}}_typer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[project.entry-points."paste.app_factory"]
 | 
				
			||||||
 | 
					"main" = "{{cookiecutter.package_name}}.web.app:main"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[project.entry-points."wutta.config.extensions"]
 | 
				
			||||||
 | 
					"{{cookiecutter.package_name}}" = "{{cookiecutter.package_name}}.config:{{cookiecutter.__studly_prefix}}Config"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [project.urls]
 | 
				
			||||||
 | 
					# Homepage = "https://example.com/"
 | 
				
			||||||
 | 
					# Repository = "https://github.com/example/{{cookiecutter.repo_name}}"
 | 
				
			||||||
 | 
					# Issues = "https://github.com/example/{{cookiecutter.repo_name}}/issues"
 | 
				
			||||||
 | 
					# Changelog = "https://github.com/example/{{cookiecutter.repo_name}}/blob/master/CHANGELOG.md"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# [tool.commitizen]
 | 
				
			||||||
 | 
					# version_provider = "pep621"
 | 
				
			||||||
 | 
					# tag_format = "v$version"
 | 
				
			||||||
 | 
					# update_changelog_on_bump = true
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[tool.hatch.build.targets.wheel]
 | 
				
			||||||
 | 
					packages = ["{{cookiecutter.package_name}}"]
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,30 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					{{cookiecutter.project_name}} CLI
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import typer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from wuttjamaican.cli import make_typer
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					{{cookiecutter.package_name}}_typer = make_typer(
 | 
				
			||||||
 | 
					    name='{{cookiecutter.package_name}}',
 | 
				
			||||||
 | 
					    help="{{cookiecutter.project_name}} -- {{cookiecutter.project_short_description}}"
 | 
				
			||||||
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					@{{cookiecutter.package_name}}_typer.command()
 | 
				
			||||||
 | 
					def install(
 | 
				
			||||||
 | 
					        ctx: typer.Context,
 | 
				
			||||||
 | 
					):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Install the {{cookiecutter.project_name}} app
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    config = ctx.parent.wutta_config
 | 
				
			||||||
 | 
					    app = config.get_app()
 | 
				
			||||||
 | 
					    install = app.get_install_handler(pkg_name='{{cookiecutter.package_name}}',
 | 
				
			||||||
 | 
					                                      app_title="{{cookiecutter.project_name}}",
 | 
				
			||||||
 | 
					                                      pypi_name='{{cookiecutter.distribution_name}}',
 | 
				
			||||||
 | 
					                                      egg_name='{{cookiecutter.__egg_name}}')
 | 
				
			||||||
 | 
					    install.run()
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,29 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					{{cookiecutter.project_name}} config extensions
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from wuttjamaican.conf import WuttaConfigExtension
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class {{cookiecutter.__studly_prefix}}Config(WuttaConfigExtension):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    Config extension for {{cookiecutter.project_name}}
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    key = '{{cookiecutter.package_name}}'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def configure(self, config):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # app info
 | 
				
			||||||
 | 
					        config.setdefault(f'{config.appname}.app_title', "{{cookiecutter.project_name.replace('"', '\\"')}}")
 | 
				
			||||||
 | 
					        config.setdefault(f'{config.appname}.app_dist', "{{cookiecutter.distribution_name}}")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # app model
 | 
				
			||||||
 | 
					        config.setdefault(f'{config.appname}.model_spec', '{{cookiecutter.package_name}}.db.model')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # web app menu
 | 
				
			||||||
 | 
					        config.setdefault(f'{config.appname}.web.menus.handler_spec',
 | 
				
			||||||
 | 
					                          '{{cookiecutter.package_name}}.web.menus:{{cookiecutter.__studly_prefix}}MenuHandler')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # web app libcache
 | 
				
			||||||
 | 
					        #config.setdefault('tailbone.static_libcache.module', '{{cookiecutter.package_name}}.web.static')
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,9 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					{{cookiecutter.project_name}} data models
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# bring in all of wutta
 | 
				
			||||||
 | 
					from wuttjamaican.db.model import *
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TODO: import other/custom models here...
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,28 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					{{cookiecutter.project_name}} web app
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from wuttaweb import app as base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def main(global_config, **settings):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    This function returns a Pyramid WSGI application.
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    # prefer {{cookiecutter.project_name}} templates over wuttaweb
 | 
				
			||||||
 | 
					    settings.setdefault('mako.directories', [
 | 
				
			||||||
 | 
					        '{{cookiecutter.package_name}}.web:templates',
 | 
				
			||||||
 | 
					        'wuttaweb:templates',
 | 
				
			||||||
 | 
					    ])
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # make config objects
 | 
				
			||||||
 | 
					    wutta_config = base.make_wutta_config(settings)
 | 
				
			||||||
 | 
					    pyramid_config = base.make_pyramid_config(settings)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # bring in the rest of {{cookiecutter.project_name}}
 | 
				
			||||||
 | 
					    pyramid_config.include('{{cookiecutter.package_name}}.web.static')
 | 
				
			||||||
 | 
					    pyramid_config.include('{{cookiecutter.package_name}}.web.subscribers')
 | 
				
			||||||
 | 
					    pyramid_config.include('{{cookiecutter.package_name}}.web.views')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return pyramid_config.make_wsgi_app()
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,26 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					{{cookiecutter.project_name}} Menu
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					from wuttaweb import menus as base
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					class {{cookiecutter.__studly_prefix}}MenuHandler(base.MenuHandler):
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					    {{cookiecutter.project_name}} menu handler
 | 
				
			||||||
 | 
					    """
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def make_menus(self, request, **kwargs):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # TODO: override this if you need custom menus...
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # menus = [
 | 
				
			||||||
 | 
					        #     self.make_products_menu(request),
 | 
				
			||||||
 | 
					        #     self.make_admin_menu(request),
 | 
				
			||||||
 | 
					        # ]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        # ...but for now this uses default menus
 | 
				
			||||||
 | 
					        menus = super().make_menus(request, **kwargs)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return menus
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,22 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					Static assets
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# from fanstatic import Library, Resource
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# # libcache
 | 
				
			||||||
 | 
					# libcache = Library('{{cookiecutter.package_name}}_libcache', 'libcache')
 | 
				
			||||||
 | 
					# bb_vue_js = Resource(libcache, 'vue.esm-browser-3.3.11.prod.js')
 | 
				
			||||||
 | 
					# bb_oruga_js = Resource(libcache, 'oruga-0.8.10.js')
 | 
				
			||||||
 | 
					# bb_oruga_bulma_js = Resource(libcache, 'oruga-bulma-0.3.0.js')
 | 
				
			||||||
 | 
					# bb_oruga_bulma_css = Resource(libcache, 'oruga-bulma-0.3.0.css')
 | 
				
			||||||
 | 
					# bb_fontawesome_svg_core_js = Resource(libcache, 'fontawesome-svg-core-6.5.2.js')
 | 
				
			||||||
 | 
					# bb_free_solid_svg_icons_js = Resource(libcache, 'free-solid-svg-icons-6.5.2.js')
 | 
				
			||||||
 | 
					# bb_vue_fontawesome_js = Resource(libcache, 'vue-fontawesome-3.0.6.index.es.js')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def includeme(config):
 | 
				
			||||||
 | 
					    config.include('wuttaweb.static')
 | 
				
			||||||
 | 
					    config.add_static_view('{{cookiecutter.package_name}}', '{{cookiecutter.package_name}}.web:static', cache_max_age=3600)
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,2 @@
 | 
				
			||||||
 | 
					Place files in this folder, which correspond to the Resource()
 | 
				
			||||||
 | 
					definitions found in `{{cookiecutter.package_name}}/web/static/__init__.py`
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					Pyramid event subscribers
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import {{cookiecutter.package_name}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def add_{{cookiecutter.package_name}}_to_context(event):
 | 
				
			||||||
 | 
					    renderer_globals = event
 | 
				
			||||||
 | 
					    renderer_globals['{{cookiecutter.package_name}}'] = {{cookiecutter.package_name}}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def includeme(config):
 | 
				
			||||||
 | 
					    config.include('wuttaweb.subscribers')
 | 
				
			||||||
 | 
					    config.add_subscriber(add_{{cookiecutter.package_name}}_to_context, 'pyramid.events.BeforeRender')
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,16 @@
 | 
				
			||||||
 | 
					<%inherit file="wuttaweb:templates/base_meta.mako" />
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					## TODO: you can override parent template as needed below, or you
 | 
				
			||||||
 | 
					## can simply delete this file if no customizations are needed
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<%def name="favicon()">
 | 
				
			||||||
 | 
					  ${parent.favicon()}
 | 
				
			||||||
 | 
					</%def>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<%def name="header_logo()">
 | 
				
			||||||
 | 
					  ${parent.header_logo()}
 | 
				
			||||||
 | 
					</%def>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					<%def name="footer()">
 | 
				
			||||||
 | 
					  ${parent.footer()}
 | 
				
			||||||
 | 
					</%def>
 | 
				
			||||||
| 
						 | 
					@ -0,0 +1,13 @@
 | 
				
			||||||
 | 
					# -*- coding: utf-8; -*-
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					{{cookiecutter.project_name}} Views
 | 
				
			||||||
 | 
					"""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def includeme(config):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # core views for wuttaweb
 | 
				
			||||||
 | 
					    config.include('wuttaweb.views.essential')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # TODO: include your own views here
 | 
				
			||||||
 | 
					    #config.include('{{cookiecutter.package_name}}.web.views.widgets')
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue