.. image:: https://secure.travis-ci.org/kitconcept/bobtemplates.kitconcept.png?branch=master
:target: http://travis-ci.org/kitconcept/bobtemplates.kitconcept
.. image:: https://coveralls.io/repos/kitconcept/bobtemplates.kitconcept/badge.svg?branch=master&service=github
:target: https://coveralls.io/github/kitconcept/bobtemplates.kitconcept?branch=master
:alt: Coveralls
.. image:: https://img.shields.io/pypi/v/bobtemplates.kitconcept.svg
:target: https://pypi.python.org/pypi/bobtemplates.kitconcept/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/status/bobtemplates.kitconcept.svg
:target: https://pypi.python.org/pypi/bobtemplates.kitconcept/
:alt: Egg Status
.. image:: https://img.shields.io/pypi/l/bobtemplates.kitconcept.svg
:target: https://pypi.python.org/pypi/bobtemplates.kitconcept/
:alt: License
bobtemplates.kitconcept
=======================
``bobtemplates.kitconcept`` provides a `mr.bob <http://mrbob.readthedocs.org/en/latest/>`_ template to generate packages for Plone projects.
This is a fork of bobtemplates.plone 1.x. The scope of this package is simplicity, maintainablility and testability.
We contributed to ZopeSkel and templer and this package is an attempt to prevent doing what we consider to be "the same mistakes" over and over again.
Design Goals
- Simple is better than complex.
- Cover 80% of use cases, don’t become too complex.
- Provide a good starting point for development, not a swiss army knife for the entire development cycle.
- Code and tests should reflect the current coding best practice.
- Generated code should have 100% test coverage.
Concrete Decisions
- Do not use local commands. They significantly increase complexity and mr.bob has no support for them anyways. We tried this with ZopeSkel/Templer and it did not work out that well.
- Limit the overall number of questions to not confuse people too much. Having separate packages or providing commented out code sections might be a good alternative.
- Fix problems in Plone itself rather than providing workarounds in our templates. (see #27)
- Provide skeletons for the most important Plone package use cases, not for every possible scenario: Add-on product (collective, plone, custom project, policy product)
Those goals have been originally outlined for bobtemplates.plone here: https://github.com/plone/bobtemplates.plone/issues/29
Features
--------
Package created with ``bobtemplates.kitconcept`` use the current best-practices when creating an add-on.
Buildout
The package is contained in a buildout that allows you to build Plone with the new package installed for testing-purposes.
Tests
The package comes with a test setup and some `tests <http://docs.plone.org/external/plone.app.testing/docs/source/index.html>`_ for installing the package. It also contains a `robot-test <http://docs.plone.org/external/plone.app.robotframework/docs/source/index.html>`_ that tests logging in. The buildout also contains a config to allow testing the package on `travis <http://travis-ci.org/>`_ that sends `notifications <http://about.travis-ci.org/docs/user/notifications>`_ by email to the package author.
Profile
The package contains a `Generic Setup Profile <http://docs.plone.org/develop/addons/components/genericsetup.html>`_ that installs a browserlayer. For Plone 5 it also contains a uninstall-profile.
Locales
The package registers a directory for locales.
Template-Overrides
The package registers the folder ``browser/overrides`` as a directory where you can drop template-overrides using `z3c.jbot <https://pypi.python.org/pypi/z3c.jbot>`_.
Setuphandler
The package contains a `setuphandlers.py <http://docs.plone.org/develop/addons/components/genericsetup.html?highlight=setuphandler#custom-installer-code-setuphandlers-py>`_ where you can add code that is executed on installing the package. For Plone 5 there is also a method in `setuphandler.py` that is run on uninstalling.
The package-types `Dexterity` and `Theme` add the following to `Basic`:
Dexterity
Adds a simple content-type (you get asked about its name) in ``profiles/default/types/`` with a python-schema in ``interfaces.py``.
Theme
Adds a simple bootstrap-based Diazo theme in the folder ``theme/`` and registers it in ``profiles/default/theme.xml``
Compatibility
=============
Add-ons created with ``bobtemplates.kitconcept`` are tested to work in Plone 4.3.x and Plone 5.
They should also work with older versions but that was not tested.
It should work on Linux, Mac and Windows.
Installation
------------
Use in a buildout
^^^^^^^^^^^^^^^^^
::
[buildout]
parts += mrbob
[mrbob]
recipe = zc.recipe.egg
eggs =
mr.bob
bobtemplates.kitconcept
This creates a mrbob-executable in your bin-directory.
Call it from the ``src``-directory of your Plone project like this.::
$ ../bin/mrbob -O collective.foo bobtemplates:plone_addon
Installation in a virtualenv
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
You can also install ``bobtemplates.kitconcept`` in a virtualenv.::
$ pip install bobtemplates.kitconcept
With ``pip 6.0`` or newer ``mr.bob`` will automatically be installed as a dependency. If you still use a older version of pip you need install ``mr.bob`` before ``bobtemplates.kitconcept``.::
$ pip install mr.bob
Now you can use it like this::
$ mrbob -O collective.foo bobtemplates:plone_addon
See `the documentation of mr.bob <http://mrbob.readthedocs.org/en/latest/>`_ for further information.
Contribute
----------
- Issue Tracker: https://github.com/plone/bobtemplates.kitconcept/issues
- Source Code: https://github.com/plone/bobtemplates.kitconcept
Support
-------
If you are having issues, please let us know.
Contributors
============
This package is based on `bobtemplates.niteoweb <https://github.com/niteoweb/bobtemplates.niteoweb>`_ and `bobtemplates.ecreall <https://github.com/cedricmessiant/bobtemplates.ecreall>`_
- Philip Bauer [pbauer]
- Cédric Messiant [cedricmessiant]
- Vincent Fretin [vincentfretin]
- Thomas Desvenain [thomasdesvenain]
- Domen Kožar [iElectric]
- Nejc Zupan [zupo]
- Patrick Gerken [do3cc]
- Timo Stollenwerk [timo]
- Johannes Raggam [thet]
- Sven Strack [svx]
Changelog
=========
2.0.1 (2018-02-08)
------------------
- Add missing package name.
[sneridagh]
2.0.0 (2018-01-23)
------------------
- Upgrade to Plone 4.3.15.
[timo]
- Upgrade to Plone 5.0.8.
[timo]
- Switch RobotFramework tests to use Chrome browser.
[timo]
- Remove recommended extra from p.r.codeanalysis.
[timo]
1.0.4 (2016-07-23)
------------------
- Upgrade some pinns.
[pbauer]
- Upgrade to 5.0.5 and test against that.
[pbauer]
- Add ``i18n:attributes`` for action nodes in FTI profile.
[thet]
- Pin versions of coverage/createcoverage
[staeff]
- Default to Plone 5.0.4.
[jensens]
- Validate type name input (fixes #81).
[pbauer]
- Git ignore ``.installed.cfg`` and ``mr.developer.cfg`` by default.
[jensens]
- ``isort`` style checks are enabled, but no config was set. i
Added config according to http://docs.plone.org/develop/styleguide/python.html#grouping-and-sorting
[jensens]
- Ordered sections of generated FTI xml into semantical block and added comments for each block.
[jensens]
- Bump setuptools version to 21.0.0 in buildout.cfg.bob
[staeff]
- Configure buildout to install all recommended codeanalysis plugins
[staeff]
1.0.3 (2016-04-13)
------------------
- Fix Plone default version (Plone 4.3.9).
[timo]
1.0.2 (2016-04-13)
------------------
- Create uninstall profile also for Plone 4.3.x, since it already depends on ``Products.CMFQuickInstallerTool >= 3.0.9``.
[thet]
- Update Plone versions to 4.3.9 and 5.0.4.
[thet]
- Update robot test framework versions including Selenium to work with recent firefox releases.
[thet]
- Replaced import steps by post_handlers. Needs GenericSetup 1.8.2 or
higher. This is included by default in Plone 4.3.8 and 5.0.3 but
should be fine to use on older Plone versions. [maurits]
- Removed ``.*`` from the ``.gitignore`` file. This would ignore the
``.gitkeep`` files, which would mean some directories are not added
when you do ``git add`` after generating a new project. [maurits]
- Note about disabled ``z3c.autoinclude`` in test layer setup.
[thet]
- Remove the ``xmlns:five`` namespace, as it is not used at all.
[thet]
- Fix build failure on Plone 4.x due to plone.app.contenttypes pulled in and having a plone.app.locales >= 4.3.9 dependency in it's depending packages.
[thet]
- Declare the xml encoding for all GenericSetup profile files.
Otherwise the parser has to autodetect it.
Also add an xml version and encoding declaration to ``theme.xml``.
[thet]
- Add "(uninstall)" to the uninstall profile title.
Otherwise it cannot be distinguished from the install profile in portal_setup.
[thet]
- Simplify concatenation of ``.rst`` files for ``setup.py``.
[thet]
- Update ``.gitignores`` in repository to exclude ``lib64``, ``pip-selfcheck.json`` and all ``.*`` except necessary.
Update ``.gitignore.bob`` in templates with these changes too.
Add ``.gitattributes`` in repository for union-merge CHANGES.rst files.
[thet]
- Update docs and README
[svx]
1.0.1 (2015-12-12)
------------------
- Register locales directory before loading dependencies to avoid issues when overriding translations.
[hvelarde]
1.0 (2015-10-02)
----------------
- Upgrade to Plone 4.3.7 and 5.0.
[timo]
- Avoid pyflakes warnings for long package names.
[maurits]
1.0b1 (2015-09-17)
------------------
- Always start with 1.0a1. No more 0.x releases please.
[timo]
- Use Plone minor version for ``setup.py`` classifier. So 4.3 instead
of 4.3.6.
[maurits]
- Enabled robot part in generated package.
[maurits]
- Add depedency on plone.testing 5.0.0. Despite the major version number,
this change does not contain breaking changes.
[do3cc]
- Fix #84 Make travis cache the egg directory of the generated package.
[jensens]
- Update tests to use Plone 5.0b3.
[jensens]
- Remove unittest2 dependency.
[gforcada]
0.11 (2015-07-24)
-----------------
- Fix update.sh
[pbauer]
- Add i18ndude to buildout
[pbauer]
- Fix package-creation on Windows. Fixes #72.
[pbauer]
- Add packagename to licence.
[pbauer]
- Add uninstall-profile for Plone 5.
[pbauer]
- Fix indentation to follow the conventions of plone.api.
[pbauer]
- Move badges from pypin to shields.io.
[timo]
- Fix coverage on travis template.
[gil-cano]
- Enable code analysis on travis and fail if the code does not pass.
[gforcada]
0.10 (2015-06-15)
-----------------
- Add check-readme script that detects Restructured Text issues.
[timo]
- Use only version up to minor version in setup.py of package #56.
[tomgross]
- Use class method to load ZCML in tests.
[tomgross]
- Upgrade default Plone version to 4.3.6.
[timo]
- Add zest.releaser to package buildout.
[timo]
- Update README according to Plone docs best practice.
[do3cc, timo]
- Add flake8-extensions to code-analysis.
[timo]
- Upgrade Selenium to 2.46.0.
[timo, pbauer]
- Don't create a type-schema unless it is needed.
[pbauer]
0.9 (2015-03-24)
----------------
- Add Theme package type with simple bootstrap-based theme.
[timo]
- Add Dexterity package type.
[timo]
- Remove example view.
[timo]
- Remove question for keywords.
[timo]
- Remove question for locales.
[timo]
- Remove questions for version and license.
[timo]
- Remove questions for profile, setuphandler, and testing.
[timo]
- Unify buildout configuration in buildout.cfg
[timo]
- Fix bootstrap command in travis.yml.
[timo]
0.8 (2015-02-06)
----------------
- Add includeDependencies. This fixes #23.
[timo]
0.7 (2015-02-05)
----------------
- Use latest buildout-bootstrap.py.
[timo]
- Fix failing nosetests.
[timo]
- Add test that creates an add_on and runs all its tests and code analysis.
[timo]
- Run tests on travis.
[timo]
- Run code analysis on travis. Build fails on PEP8 violations.
[timo]
- Add code analysis.
[timo]
- Remove z2.InstallProducts. Not needed any longer.
[timo]
- Use testing best practices and follow common naming conventions.
[timo]
- Remove testing profile. Global testing state is considered an anti-pattern.
[timo]
- Add example robot test.
[timo]
- Add travis and pypip.in badges.
[timo]
- Run code analysis on the generated addon as well within the tests to make
sure we always ship 100% PEP8 compliant code.
[timo]
- Add REMOTE_LIBRARY_BUNDLE_FIXTURE to acceptance test fixture.
[timo]
0.6 (2015-01-17)
----------------
- Use PLONE_APP_CONTENTTYPES_FIXTURE for tests on when using Plone 5.
[pbauer]
0.5 (2015-01-17)
----------------
- Remove useless base-classes for tests. Use 'layer = xxx' instead.
[pbauer]
- Fix some minor code-analysis issues.
[pbauer]
- Added .editorconfig file.
[ale-rt]
0.4 (2014-12-08)
----------------
- Remove grok.
[pbauer]
- Fix missed removals when testing was deselected.
[pbauer]
- Only use jbot when there is a profile and a browser layer.
[pbauer]
- Get username and email from git.
[do3cc]
0.3 (2014-12-07)
----------------
- Pinn robotframework to 2.8.4 to fix package-tests.
[pbauer]
- Add browserlayer to demoview to allow multiple addons.
[pbauer]
- Fix creation of nested packages (wrong __init__.py).
[pbauer]
0.2 (2014-12-07)
----------------
- Fix documentation
[pbauer]
0.1 (2014-12-07)
----------------
- Get namespace, name and type from target-dir.
[pbauer]
- Remove obsolete plone_addon_nested. Auto-nest package in after-render hook.
[pbauer]
- Add many new features. Most of them are optional.
[pbauer]
- Initial import based on bobtemplates.ecreall by
cedricmessiant, vincentfretin and thomasdesvenain.
[pbauer]