Back to index

plone3  3.1.7
cancel.py
Go to the documentation of this file.
00001 ##################################################################
00002 #
00003 # (C) Copyright 2006 ObjectRealms, LLC
00004 # All Rights Reserved
00005 #
00006 # This file is part of iterate.
00007 #
00008 # iterate is free software; you can redistribute it and/or modify
00009 # it under the terms of the GNU General Public License as published by
00010 # the Free Software Foundation; either version 2 of the License, or
00011 # (at your option) any later version.
00012 #
00013 # iterate is distributed in the hope that it will be useful,
00014 # but WITHOUT ANY WARRANTY; without even the implied warranty of
00015 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00016 # GNU General Public License for more details.
00017 #
00018 # You should have received a copy of the GNU General Public License
00019 # along with iterate; if not, write to the Free Software
00020 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00021 ##################################################################
00022 
00023 from zope.component import getMultiAdapter
00024 
00025 from Acquisition import aq_inner
00026 from Products.Five.browser import BrowserView
00027 from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
00028 
00029 from Products.statusmessages.interfaces import IStatusMessage
00030 from Products.CMFPlone import PloneMessageFactory as _
00031 
00032 from plone.app.iterate.interfaces import ICheckinCheckoutPolicy
00033 from plone.app.iterate.interfaces import CheckoutException
00034 
00035 class Cancel(BrowserView):
00036     
00037     template = ViewPageTemplateFile('cancel.pt')
00038     
00039     def __call__(self):
00040         context = aq_inner(self.context)
00041         
00042         if self.request.form.has_key('form.button.Cancel'):
00043             control = getMultiAdapter((context, self.request), name=u"iterate_control")
00044             if not control.cancel_allowed():
00045                 raise CheckoutException(u"Not a checkout")
00046 
00047             policy = ICheckinCheckoutPolicy(context)
00048             baseline = policy.cancelCheckout()
00049             baseline.reindexObject()
00050             
00051             IStatusMessage(self.request).addStatusMessage(_(u"Checkout cancelled"), type='info')
00052             view_url = baseline.restrictedTraverse("@@plone_context_state").view_url()
00053             self.request.response.redirect(view_url)
00054         elif self.request.form.has_key('form.button.Keep'):
00055             view_url = context.restrictedTraverse("@@plone_context_state").view_url()
00056             self.request.response.redirect(view_url)
00057         else:
00058             return self.template()
00059