Subtyping Pattern!


In a recent design discussion with Nate Aune he said he thinks some of my common design patterns are really similiar to this approach. After striping away the Plone-isms, I have to say there is merit to what Nate thinks. (Danny 07/05/2011)

by Rocky Burt

What is subtyping?

-Allowing for the subtyping of an existing content type

Why subtyping?

-Many possible faces for existing content type -simple conversion -delayed specification -not exclusive to p4a.subtyper, just built off of it

use cases ===============-

-Need diferent content identify depending on situation -ogg file is video or audio -transforming of identity based on event reaction -How do you handle when a file type is uploaded?


-minimal framework -Hooks up subtypes into content menu -$easy_install p4a.subtyper -use workingenv or virtualenv or buildit as preferred -special subtype events

  • add ISubtypAdded
  • addISubtypeRemoved

-extension by adapters and schema’s


-new modules interfaces and IUlradoc

  • IUltadoc os marker interface
  • interface.alsoProvides(needs marker interface, IContentType)
  • create descripters module
  • new descripter class called UltraDocDescriptor
    • for_portal_type = when this content type is displayed, this descriptor will be provided
  • create
  • register descriptor as utility
  • hook up new view applying to utility
  • lets you have different views all with files named differently

cases in Plone4Artists

-Look at Audio, Video, Calendar

  • no mention of p4a.subtyper
  • But uses these techniques