Skip to content

Feature/restore bobtemplates parity - #13

Merged
MrTango merged 4 commits into
mainfrom
feature/restore-bobtemplates-parity
Aug 12, 2026
Merged

Feature/restore bobtemplates parity#13
MrTango merged 4 commits into
mainfrom
feature/restore-bobtemplates-parity

Conversation

@MrTango

@MrTango MrTango commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

No description provided.

MrTango added 4 commits July 25, 2026 19:57
- Feature profiles declare GenericSetup dependencies: content_type ->
  plone.app.dexterity, restapi_service -> plone.restapi, themes ->
  plone.app.theming (idempotent MetadataXMLUpdater.add_dependency)
- content_type registers the type in repositorytool.xml (versioning)
  and diff_tool.xml (Compound Diff)
- portlets.xml and controlpanel.xml are idempotent post-copy merges
  instead of destructive static renders; portlets.xml regains the
  IColumn <for> entry and i18n attributes
- Free-text answers escaped in all XML/ZCML splices (shared
  xml_escape utility + explicit Jinja escape filters)
- behavior module named my_behavior.py instead of imybehavior.py
- form registration permission back to cmf.ManagePortal; view and
  form registrations bound to the package browser layer
- svelte_app: restore plone:static registration for the bundle
  directory; vite output filenames match the bundle registry entries
- controlpanel: fix restapi adapter (IControlpanel dotted path, name)
- New e2e smoke test installs a generated addon with all feature
  subtemplates into Plone and runs its scaffolded test suite
- Hostile-input matrix extended with XML-structural characters
- content_type: snake_case module name, content-local supermodel XML stub
- controlpanel: controlpanels/<name>/ subpackage with own configure.zcml
- restapi_service: nested api/services/<name>/ layout, one module per HTTP
  verb with reply(), legacy class naming (StatsGet), snake_case expand key
- portlet/viewlet: legacy module naming (myportlet.py; myviewlet.py with
  my-viewlet.pt template)
- upgrade_step: ship .gitkeep in the version profile dir
- indexer: adapters in per-indexer <name>.zcml, included from configure.zcml
- mockup_pattern: fixed demo page filename browser/pattern-demo.pt
- all generated tests moved into src/<pkg>/tests/ (pytest testpaths, ruff
  per-file ignores, coverage omit updated); upgrade test renamed to
  test_upgrade_step_<version>.py
The registry records pointed at
<pkg>.controlpanels.<module>.I<Name>Settings, but the schema lives in
the module's controlpanel.py, so GenericSetup failed to import it and
the whole layer setUp errored.

The unit test only asserted the interface name substring, so it passed
against the broken path; it now asserts the full dotted name.
Copier validates a question's default before prompting; the empty
default plus the required-validator crashed 'plonecli create project X'.
Default project_name to the destination directory name, as
backend_addon already does.
@MrTango
MrTango merged commit 84bc5b5 into main Aug 12, 2026
5 checks passed
@MrTango
MrTango deleted the feature/restore-bobtemplates-parity branch August 12, 2026 15:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant