Back to index

plone3  3.1.7
checkin.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 CheckinException
00034 
00035 class Checkin(BrowserView):
00036     
00037     template = ViewPageTemplateFile('checkin.pt')
00038     
00039     def __call__(self):
00040         context = aq_inner(self.context)
00041         
00042         if self.request.form.has_key('form.button.Checkin'):
00043             control = getMultiAdapter((context, self.request), name=u"iterate_control")
00044             if not control.checkin_allowed():
00045                 raise CheckinException(u"Not a checkout")
00046 
00047             message = self.request.form.get('checkin_message', "")
00048 
00049             policy = ICheckinCheckoutPolicy(context)
00050             baseline = policy.checkin(message)
00051             baseline.reindexObject()
00052             
00053             IStatusMessage(self.request).addStatusMessage(_("Checked in"), type='info')
00054             view_url = baseline.restrictedTraverse("@@plone_context_state").view_url()
00055             self.request.response.redirect(view_url)
00056         elif self.request.form.has_key('form.button.Cancel'):
00057             view_url = context.restrictedTraverse("@@plone_context_state").view_url()
00058             self.request.response.redirect(view_url)
00059         else:
00060             return self.template()