import os import datetime import docutils.core from docutils.writers import s5_html import zope.component from zope.traversing.browser import absoluteURL from zope.publisher.browser import BrowserPage from zope.formlib.form import Fields, applyChanges from zope.i18nmessageid import MessageFactory _ = MessageFactory('sfive') try: from Products.Five.formlib.formbase import AddForm, EditForm except ImportError: from zope.formlib.form import AddForm, EditForm from sfive.interfaces import IPresentation class ViewPresentation(BrowserPage): def __call__(self): # Zope 3 assumes text/plain as content type response = getattr(self.request, 'RESPONSE', self.request.response) response.setHeader('Content-Type', 'text/html') return docutils.core.publish_string( self.context.text, writer = s5_html.Writer(), settings_overrides = { 'input_encoding': 'unicode', 'output_encoding': 'unicode', 'theme': None, 'theme_url': (absoluteURL(self.context, self.request) + '/++resource++s5ui') # this is lame } ) def todaysDate(self): today = datetime.date.today() #XXX should use locale formatter here return today.strftime("%d %b %Y") class AddPresentation(AddForm): form_fields = Fields(IPresentation) label = _(u'Add Presentation') def create(self, data): presentation = zope.component.createObject(u'sfive.Presentation') applyChanges(presentation, self.form_fields, data) return presentation class EditPresentation(EditForm): form_fields = Fields(IPresentation) label = _(u'Edit Presentation')