# $Id$ from zope.interface import implements from zope.component import adapts from zope.app.container.btree import BTreeContainer from zope.app.container.interfaces import INameChooser from zblog.interfaces import IBlog import re from datetime import datetime class Blog(BTreeContainer): """Blog implementation using BTree container. Make sure that Blog implements IBlog interface: >>> from zope.interface.verify import verifyClass >>> verifyClass(IBlog, Blog) True Example of changing blog title and description: >>> blog = Blog() >>> blog.title u'' >>> blog.title = u'Blog title' >>> blog.title u'Blog title' >>> blog.description u'' >>> blog.description = u'Blog description' >>> blog.description u'Blog description' """ implements(IBlog) # See zblog.interfaces.IBlog description = u'' # See zblog.interfaces.IBlog title = u'' class BlogNameChooser: """An adapter to choose names for blog entries.""" implements(INameChooser) adapts(IBlog) def __init__(self, context): self.context = context def chooseName(self, name, entry): if name: return name return datetime.now().strftime('%Y_%m_%d_') + \ re.sub('\s', '_', entry.title) def checkName(self, name, entry): return True