示例#1
0
    def _checkout(self):
        # NOTE: this code is copied from plone.app.iterate.browser.checkout
        context = aq_inner(self.context)

        # containers = list(self._containers())
        location = self.context.aq_parent   #containers[0]['name']

        # We want to redirect to a specific template, else we might
        # end up downloading a file
        control = getMultiAdapter((context, self.request),
                                  name=u"iterate_control")
        if not control.checkout_allowed():
            raise CheckoutException(u"Not allowed")

        policy = ICheckinCheckoutPolicy(context)
        wc = policy.checkout(location)
        transition(wc, to_state='sent')

        # we do this for metadata update side affects which will update lock info
        context.reindexObject('review_state')

        IStatusMessage(self.request).addStatusMessage(_("Check-out created"),
                                                      type='info')
        #view_url = wc.restrictedTraverse("@@plone_context_state").view_url()
        return wc
示例#2
0
    def __call__(self):
        context = aq_inner(self.context)

        containers = list(self.containers())
        if len(containers) == 1:
            # Special case for when there's only when folder to select
            self.request.form['form.button.Checkout'] = 1
            self.request.form['checkout_location'] = containers[0]['name']

        # We want to redirect to a specific template, else we might
        # end up downloading a file
        if self.request.form.has_key('form.button.Checkout'):
            control = getMultiAdapter((context, self.request),
                                      name=u"iterate_control")
            if not control.checkout_allowed():
                raise CheckoutException(u"Not allowed")

            location = self.request.form.get('checkout_location', None)
            locator = None
            try:
                locator = [
                    c['locator'] for c in self.containers()
                    if c['name'] == location
                ][0]
            except IndexError:
                IStatusMessage(self.request).addStatusMessage(
                    _("Cannot find checkout location"), type='stop')
                view_url = context.restrictedTraverse(
                    "@@plone_context_state").view_url()
                self.request.response.redirect(view_url)
                return

            policy = ICheckinCheckoutPolicy(context)
            wc = policy.checkout(locator())

            # we do this for metadata update side affects which will update lock info
            context.reindexObject('review_state')

            IStatusMessage(self.request).addStatusMessage(
                _("Check-out created"), type='info')
            view_url = wc.restrictedTraverse(
                "@@plone_context_state").view_url()
            self.request.response.redirect(view_url)
        elif self.request.form.has_key('form.button.Cancel'):
            view_url = context.restrictedTraverse(
                "@@plone_context_state").view_url()
            self.request.response.redirect(view_url)
        else:
            return self.index()
示例#3
0
    def __call__(self):
        context = aq_inner(self.context)

        # We want to redirect to a specific template, else we might
        # end up downloading a file
        if 'form.button.Checkout' in self.request.form:
            control = getMultiAdapter((context, self.request),
                                      name=u'iterate_control')
            if not control.checkout_allowed():
                raise CheckoutException(u'Not allowed')

            location = self.request.form.get('checkout_location', None)
            locator = None
            try:
                locator = [
                    c['locator'] for c in self.containers()
                    if c['name'] == location
                ][0]
            except IndexError:
                IStatusMessage(self.request).addStatusMessage(
                    _('Cannot find checkout location'), type='error')
                view_url = context.restrictedTraverse(
                    '@@plone_context_state').view_url()
                self.request.response.redirect(view_url)
                return

            policy = ICheckinCheckoutPolicy(context)
            wc = policy.checkout(locator())

            # we do this for metadata update side affects which will update
            # lock info
            context.reindexObject('review_state')

            IStatusMessage(self.request).addStatusMessage(
                _('Check-out created'), type='info')
            view_url = wc.restrictedTraverse(
                '@@plone_context_state').view_url()
            self.request.response.redirect(view_url)
        elif 'form.button.Cancel' in self.request.form:
            view_url = context.restrictedTraverse(
                '@@plone_context_state').view_url()
            self.request.response.redirect(view_url)
        else:
            return self.index()
示例#4
0
    def _checkout(self):
        # NOTE: this code is copied from plone.app.iterate.browser.checkout
        context = aq_inner(self.context)

        containers = list(self._containers())
        location = containers[0]['name']

        # We want to redirect to a specific template, else we might
        # end up downloading a file
        control = getMultiAdapter((context, self.request),
                                  name=u"iterate_control")
        if not control.checkout_allowed():
            raise CheckoutException(u"Not allowed")

        locator = None
        try:
            locator = [
                c['locator'] for c in containers if c['name'] == location
            ][0]
        except IndexError:
            IStatusMessage(self.request).addStatusMessage(
                _("Cannot find checkout location"), type='stop')
            view_url = context.restrictedTraverse(
                "@@plone_context_state").view_url()
            self.request.response.redirect(view_url)
            return

        policy = ICheckinCheckoutPolicy(context)
        wc = policy.checkout(locator())

        # we do this for metadata update side affects which will update lock info
        context.reindexObject('review_state')

        IStatusMessage(self.request).addStatusMessage(_("Check-out created"),
                                                      type='info')
        #view_url = wc.restrictedTraverse("@@plone_context_state").view_url()
        return wc
示例#5
0
    def __call__(self):
        context = aq_inner(self.context)

        if 'form.button.Cancel' in self.request.form:
            control = getMultiAdapter((context, self.request),
                                      name=u'iterate_control')
            if not control.cancel_allowed():
                raise CheckoutException(u'Not a checkout')

            policy = ICheckinCheckoutPolicy(context)
            baseline = policy.cancelCheckout()
            baseline.reindexObject()

            IStatusMessage(self.request).addStatusMessage(
                _(u'Checkout cancelled'), type='info')
            view_url = baseline.restrictedTraverse(
                '@@plone_context_state').view_url()
            self.request.response.redirect(view_url)
        elif 'form.button.Keep' in self.request.form:
            view_url = context.restrictedTraverse(
                '@@plone_context_state').view_url()
            self.request.response.redirect(view_url)
        else:
            return self.index()