Slideshare.net (beta)

 
Post: 
Myspace Hi5 Friendster Xanga LiveJournal Facebook Blogger Tagged Typepad Freewebs BlackPlanet gigya icons



All comments

Add a comment on Slide 1

If you have a SlideShare account, login to comment; else you can comment as a guest


Showing 1-50 of 0 (more)

Building an artist community website with ArchGenXML / Poseidon

From Jazkarta, 8 months ago

Sept. 21, 2005. Talk given at Plone Conference 2005 in Vienna.

398 views  |  0 comments  |  0 favorites  |  19 downloads
 

Groups/Events

Not added to any group/event

 
 

Privacy InfoNew!

This slideshow is Public

 
Embed in your blog
Embed (wordpress.com)
custom

Slideshow Statistics
Total Views: 398
on Slideshare: 398
from embeds: 0* * Views from embeds since 21 Aug, 07

Slideshow transcript

Slide 1: Building an artist community website with Poseidon / ArchGenXML / Plone Nate Aune Plone Conference Vienna, Austria Sept. 21, 2005 Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 2: Who am I? • Developer and owner, Jazkarta Consulting (www.jazkarta.com) • Musician - saxophonist and composer (www.nateaune.com/music/) • Founder of Plone4Artists project (www.plone4artists.org) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 3: Overview • What is Archetypes? • What is UML? • What is ArchGenXML? • Build a model using UML • Transform the model into a Plone product • Multimedia • Questions? jazkarta.com/presentations/artist-community.pdf Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 4: What is Archetypes? • Framework for developing Plone products • Automatically creates view and edit pages • Maintains unique object IDs • Creates references between objects Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 5: Archetypes framework • Field validation • Standard security setup • Alternate storage options • Data transformation capabilities Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 6: Archetypes schemas Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 7: Example Archetype: Artist schema= Schema(( StringField('title'), ImageField('photo'), LinesField('instrument'), )) class Artist(BaseContent) schema = BaseSchema + schema registerType(Artist,PROJECTNAME) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 8: Widgets schema= Schema(( StringField('title', widget=StringWidget( label=’Artist name’, size=20), ), ImageField('photo', widget=ImageWidget( label=’Headshot’), ), LinesField('instrument', widget=MultiSelectionWidget( label=’Instruments’), multiValue=1, ), )) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 9: What is UML? • UML = Uniform Modeling Language • Standard widely-adopted graphical language • Describes the artifacts of software systems • Focus on conceptual representations Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 10: Artist: Described in UML Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 11: Poseidon UML tool Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 12: What is ArchGenXML? • Command line utility • Auto-generates code from a UML model • No round-trip support yet • Custom code is preserved upon regeneration Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 13: Why use ArchGenXML? (part 1) • You want to save time • You are a lazy programmer • You don’t like to reinvent the wheel • You don’t like copying and pasting code • You make heavy use of references and interfaces Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 14: Why use ArchGenXML? (part 2) • You have big projects with many different content types • You want or need a well-documented interface to your product • You like structured model- and pattern- driven software development • You want to maintain your project in the future without getting a headache Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 15: UML to Archetypes using ArchGenXML schema= Schema(( StringField('title', widget=StringWidget( label=’Artist name’ size=20), ), ImageField('photo', widget=ImageWidget( label=’Headshot’), ), LinesField('instrument', widget=MultiSelectionWidget( label=’Instruments’), multiValue=1, ), )) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 16: UML speak to AT speak • package • product • class • content type • operation • method • attribute • field • tagged value • property • stereotype • subclass, view Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 17: In practice • 1) Save your model to the Products dir • 2) Run the ArchGenXML script • 3) Restart Zope • 4) Install the newly generated product svn co svn://svn.plone4artists.org/trunk/ArtistSite Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 18: Running the script $ cd /var/local/zope/instance1/Products $ ArchGenXML/ArchGenXML.py -o ArtistSite ArtistSite.zuml ArchGenXML 1.4 devel 4 (c) 2003 BlueDynamics GmbH, under GNU General Public License 2.0 or later set outfilename [string] to ArtistSite Parsing... =============== opening zargo XMI version: 1.2 using xmi 1.2+ parser outfile: ArtistSite Generating... ============== method bodies will be preserved >>> Starting new Product: ArtistSite Generating class: Artist $ Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 19: ArtistSite product dir $ ls Products/ArtistSite Artist.py __init__.py i18n skins Extensions config.py refresh.txt version.txt $ Restart Zope Install product using QuickInstaller Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 20: Artist.py • Inserts documentation • Placeholders for custom code • i18n message ids • Using ArtistSite/model/generate_source.sh • Inserts author information • Creates i18n msg catalog .pot file • strips HTML from doc strings Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 21: Add new artist Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 22: Edit artist form Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 23: View artist Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 24: Static vocabulary • Define a static vocabulary of instruments Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 25: Dynamic vocabulary Use ATVocabularyManager to manage list of instruments Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 26: Dynamic vocab cont... Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 27: Containment Use the solid rhomb to make a strict containment ‘Artist’ instances can only be added to an ‘Artists’ instance Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 28: Artist container Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 29: Override base class The artists folder will get large, so make it a BTreeFolder Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 30: Stereotype <<large>> • Select the class • Click on the stereotypes button (...) • Select the ‘stub’ stereotype Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 31: References Create a direct association results in: Reference field group to artist(s) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 32: Group edit form Group is associated with artists Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 33: Reference Browser Widget as default Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 34: Configure browser widget Select the end point Make multivalued Specify relationship Define query Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 35: Adding references Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 36: Back references Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 37: Back references Groups that artist belongs to Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 38: Stereotype <<member>> Add the ‘member’ stereotype to tell ArchGenXML to subclass CMFMember Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 39: Registration form • SiteMember is installed • Replaces default member • Easy way to create new member types Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 40: Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 41: Stereotype <<stub>> • Add content types to your model without having them get generated • Makes it easy to integrate 3rd party products into your custom product • Adds allowed_content_types to your class Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 42: <<stub>> • Select the class • Click on the stereotypes button (...) • Select the ‘stub’ stereotype Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 43: Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 44: PloneMall • Example of a sophisticated e-commerce framework built using UML • See the UML model here: • http://www.plonemall.com/uml/UML-beta2.png/image_view_fullscreen Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 45: SiteEvent : a custom event type • Subclass ATEvent and add your own fields Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 46: Associate with venue • Make a: • Venues container • Venue content type • Direct association from SiteEvent to Venue Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 47: What I didn’t cover • Methods • Additional Stereotypes • actions, portal_tool, abstract, ordered • Generalization (Interfaces) • Workflow • Unit testing • Documentation Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 48: Acknowledgements • Philipp Auersperg (Blue Dynamics) • Jens Klein (jensens) • Martin Aspeli (optilude) • Fabiano Weimar dos Santos (xiru) • Bernie Snizek (DrZoltron) • Blue Dynamics - conference organizers • Plone community Go to Jens and Phil’s ArchGenXML talk! Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 49: Links • How to subclass ATContentType in 7 minutes •http://plone.org/documentation/how-to/subclass-atct-using-archgenxml • ArchGenXML product page - http://plone.org/products/archgenxml • ArchGenXML getting started tutorial by Jens Klein • http://plone.org/documentation/tutorial/archgenxml-getting-started • ArchGenXML manual (with screenshots) • http://plone.org/documentation/archetypes/archgenxml-manual • Intro to Archetypes by Sidnei da Silva, published on ZopeMag.com • http://www.zopemag.com/Issue006/Section_Articles/article_IntroToArchteypes.html • Archetypes: Customizing Plone in 60 seconds (PDF) by Andy McKay • http://www.enfoldsystems.com/About/Talks/archetypes.pdf • Archetypes Fields Quick Reference by Maik Röder • http://plone.org/documentation/archetypes/arch_field_quickref_1_3_1 • Archetypes Widgets Quick Reference by Maik Röder • http://plone.org/documentation/archetypes/arch_widget_quickref_1_3_1 Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 50: Multimedia in Plone • Multimedia = audio, video, photo, etc. • Currently limited built-in support for these media file types • No definitive multimedia package for Plone Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 51: Existing 3rd party products • Audio • ATAudio, Plodcasting, PloneRadio • Video • ATVideo, lilix.movie, Parwin • Photo • ATPhoto, CMFPhoto, ZPhotoSlides Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 52: PloneMultimedia • PloneMultimedia • ATAudio • ATVideo • ATPhoto • Common ‘base’ products in which to build custom multimedia products • Add-on product for ATContentTypes Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 53: Subclass ATCT • ATAudio - subclass ATFile • inherit methods: cleanupFilename, download, getIcon • validators: checkFileSize • ATPhoto - subclass ATImage • getEXIF, ATFolder template-mixin (Display menu) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 54: Upload audio file • Type in a description • Upload file • Click ‘Next’ button Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 55: Metadata • ATAudio extracts metadata • Auto-populates form fields • Extensible genres • Upload album art Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 56: Audio view page • Embedded player • Play in popup window • Stream to external media player • Download to FS Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 57: Drag-n-drop MP3s Drag-n-drop MP3s to MP3s appear in recordings folder WebDAV folder

Slide 58: Metadata extracted Song Metadata ATAudio (from iTunes) auto-extracts ID3 tags

Slide 59: CD view page Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 60: Flash player • Flash popup player • Uses XSPF playlist • Jump forward/ backward through tracks Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 61: Demo Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 62: Thanks to... • ATAudio team • Volodymr Cherepanyak (chervol) • Rocky Burt (RockyBurt) • Salim Fadhley (_salimfadhley) • jenner (for adding Flash player support) Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 63: Multimedia sprint • This thursday and friday at the Hotel Academia! • http://plone.org/events/sprints/multimedia • Ask Nate for a map to the hotel Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 64: Multimedia Resources • http://plone.org/products/ataudio • http://plone.org/products/plonemultimedia • http://plone4artists.org • Mailing list: ataudio@plone4artists.org with subject “subscribe” • Mailing list: plone4artists@plone4artists.org with subject “subscribe” Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918

Slide 65: Questions? Building an Artist Community Website (9/21/05) www.jazkarta.com 866.864.4918