def update(self): request = self.request context = self.context if 'form.button.remove' in request: ids = request.get('draftId', ()) if not ids: IStatusMessage(request).add(_('Please select draft items.')) else: for id in request.get('draftId', ()): if id in context: del context[id] IStatusMessage(request).add( _('Selected draft items have been removed.')) if 'form.button.publish' in request: ids = request.get('draftId', ()) if not ids: IStatusMessage(request).add(_('Please select draft items.')) else: for id in request.get('draftId', ()): if id in context: draft = context[id] try: content = draft.publish() except DraftException, err: IStatusMessage(request).add(str(err), 'error') return draft = removeAllProxies(draft) del draft.__parent__[draft.__name__] IStatusMessage(request).add( _('Selected draft items have been published.'))
def listDrafts(self): ids = getUtility(IIntIds) request = self.request context = self.context drafts = [] for name in context: draft = context[name] if not checkPermission('zope.View', draft): continue try: loc = ids.queryObject(draft.location) locTitle = loc.title locUrl = '%s/'%absoluteURL(loc, request) except: locTitle = _('Unknown') locUrl = u'' dc = ICMFDublinCore(draft.content) info = {'name': name, 'title': draft.title or _('[No title]'), 'description': draft.description, 'url': '%s/'%absoluteURL(draft, request), 'location': locTitle, 'locationURL': locUrl, 'icon': queryMultiAdapter((draft, request), name='zmi_icon'), 'draft': draft, 'modified': dc.modified, 'status': ISubmittedDraftContent.providedBy(draft), 'contentType': IContentType(draft.content)} drafts.append(info) return drafts
def handlePublish(self, action): errorSteps = [] for step in self.steps: if not step.isComplete(): errorSteps.append(step) if errorSteps: IStatusMessage(self.request).add(errorSteps, 'wizardError') return draft = self.draft request = self.request try: content = draft.publish() IStatusMessage(self.request).add( _(u'Your ${type_title} has been published.', mapping={'type_title': IContentType(content).title})) view = queryMultiAdapter((content, request), IContentViewView) if view is not None: self.redirect('%s/%s'%(absoluteURL(content,request), view.name)) else: self.redirect('%s/'%absoluteURL(content, request)) del draft.__parent__[draft.__name__] except DraftException, err: IStatusMessage(request).add(str(err), 'error') self.wizard.setCurrentStep('content') self.redirect('%s/index.html'%absoluteURL(draft, request))
def handleRetract(self, action): self.draft.retract() self.redirect('../') event.notify(ObjectModifiedEvent(self.draft)) IStatusMessage(self.request).add( _(u'Your ${type_title} has been retracted.', mapping={'type_title': IContentType(self.draft.content).title}))
def handleSaveContinueDraft(self, action): draft = self.draft ct = IContentType(draft) if not ct.saveable: raise DraftException("Saving draft is not allowed.") errorSteps = [] for step in self.steps: if not step.isComplete(): errorSteps.append(step) if errorSteps: IStatusMessage(self.request).add(errorSteps, 'wizardError') return draft = removeAllProxies(self.draft) draftContainer = self.getDraftContainer() name = INameChooser(draftContainer).chooseName(u'', draft) name = IObjectMover(draft).moveTo(draftContainer, name) draft = draftContainer[name] self.clear() self.redirect('%s/'%absoluteURL(draft, self.request)) IStatusMessage(self.request).add( _(u'Your ${type_title} draft has been added.', mapping={'type_title': IContentType(draft.content).title}))
def handleRemove(self, action): container = self.draft.__parent__ del container[self.draft.__name__] IStatusMessage(self.request).add( _(u'${type_title} draft has been removed.', mapping={'type_title': IContentType(self.draft.content).title})) self.redirect('../../../')
def handleReject(self, action): comment = self.request.get('form.action.comment', u'') self.draft.reject(comment) event.notify(ObjectModifiedEvent(self.draft)) IStatusMessage(self.request).add( _(u'${type_title} has been rejected.', mapping={'type_title': IContentType(self.draft.content).title})) self.redirect('../../')
def handleSubmit(self, action): errorSteps = [] for step in self.steps: if not step.isComplete(): errorSteps.append(step) if errorSteps: IStatusMessage(self.request).add(errorSteps, 'wizardError') return self.draft.submit() IStatusMessage(self.request).add( _(u'Your ${type_title} draft has been submitted.', mapping={'type_title': IContentType(self.draft.content).title})) self.redirect('../')
self.redirect('%s/index.html'%absoluteURL(draft, self.request)) return self.clear() view = queryMultiAdapter((content, self.request), IContentViewView) if self.request.response.getStatus() in (302, 303): self.redirect(self.request.response.getHeader('location')) else: if view is not None: self.redirect('%s/%s'%(absoluteURL(content,self.request),view.name)) else: self.redirect('%s/'%absoluteURL(content, self.request)) IStatusMessage(self.request).add( _(u'Your ${type_title} has been published.', mapping={'type_title': IContentType(content).title})) def clear(self): container = self.getDraftContainer() if 'draft' in container: del container['draft'] def getDraftContainer(self): return self.context.__parent__.__parent__ def nextURL(self): return '%s/'%absoluteURL( self.context.__parent__.__parent__, self.request) def cancelURL(self): return '%s/'%absoluteURL(