def reply(self): # Disable CSRF protection if "IDisableCSRFProtection" in dir(plone.protect.interfaces): alsoProvides(self.request, plone.protect.interfaces.IDisableCSRFProtection) policy = ICheckinCheckoutPolicy(self.context) working_copy = policy.getWorkingCopy() if not policy.getBaseline(): # We are in the baseline, get the working copy policy policy = ICheckinCheckoutPolicy(working_copy) control = getMultiAdapter((working_copy, self.request), name="iterate_control") if not control.checkin_allowed(): pm = getToolByName(self.context, "portal_membership") if bool(pm.isAnonymousUser()): return self._error(401, "Not authenticated", "Checkin not allowed") else: return self._error(403, "Not authorized", "Checkin not allowed") policy.checkin("") return self.reply_no_content()
def test_annotation_saved_on_checkin(self): # First we get and save a custom annotation to the existing object obj_annotations = IAnnotations(self.s1) self.assertEqual(obj_annotations, {}) obj_annotations['key1'] = u'value1' obj_annotations = IAnnotations(self.s1) self.assertEqual(obj_annotations, {'key1': u'value1'}) # Now, let's get a working copy for it. locators = getAdapters((self.s1,), IWCContainerLocator) location = u'plone.app.iterate.parent' locator = [c[1] for c in locators if c[0] == location][0] policy = ICheckinCheckoutPolicy(self.s1) wc = policy.checkout(locator()) # Annotations should be the same new_annotations = IAnnotations(wc) self.assertEqual(new_annotations['key1'], u'value1') # Now, let's modify the existing one, and create a new one new_annotations['key1'] = u'value2' new_annotations['key2'] = u'value1' # Check that annotations were stored correctly and original ones were # not overriten new_annotations = IAnnotations(wc) self.assertEqual(new_annotations['key1'], u'value2') self.assertEqual(new_annotations['key2'], u'value1') obj_annotations = IAnnotations(self.s1) self.assertEqual(obj_annotations['key1'], u'value1') self.assertFalse('key2' in obj_annotations) # Now, we do a checkin policy = ICheckinCheckoutPolicy(wc) policy.checkin(u'Commit message') # And finally check that the old object has the same annotations as # its working copy obj_annotations = IAnnotations(self.s1) self.assertTrue('key1' in obj_annotations) self.assertTrue('key2' in obj_annotations) self.assertEqual(obj_annotations['key1'], u'value2') self.assertEqual(obj_annotations['key2'], u'value1')
def __call__(self): context = aq_inner(self.context) if 'form.button.Checkin' in self.request.form: control = getMultiAdapter( (context, self.request), name=u'iterate_control') if not control.checkin_allowed(): raise CheckinException(u'Not a checkout') message = self.request.form.get('checkin_message', '') policy = ICheckinCheckoutPolicy(context) baseline = policy.checkin(message) IStatusMessage(self.request).addStatusMessage( _('Checked in'), type='info') view_url = baseline.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()
def __call__(self): context = aq_inner(self.context) if 'form.button.Checkin' in self.request.form: control = getMultiAdapter((context, self.request), name=u'iterate_control') if not control.checkin_allowed(): raise CheckinException(u'Not a checkout') message = self.request.form.get('checkin_message', '') policy = ICheckinCheckoutPolicy(context) baseline = policy.checkin(message) IStatusMessage(self.request).addStatusMessage(_('Checked in'), type='info') view_url = baseline.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()
def checkInIfNeeded(document, event): context = aq_inner(document) workflowTool = getToolByName(context, "portal_workflow") status = workflowTool.getStatusOf("1MX_wiki_workflow", document) if IWorkingCopy.providedBy(context) and status["review_state"] == "internally_published": policy = ICheckinCheckoutPolicy(context) baseline = policy.checkin("") IStatusMessage(context.REQUEST).addStatusMessage( _("Checked in"), type='info') view_url = baseline.unrestrictedTraverse("@@plone_context_state").view_url() transaction.commit() raise Redirect(view_url)
def __call__(self): context = aq_inner(self.context) if self.request.form.has_key('form.button.Checkin'): control = getMultiAdapter((context, self.request), name=u"iterate_control") if not control.checkin_allowed(): raise CheckinException(u"Not a checkout") message = self.request.form.get('checkin_message', "") policy = ICheckinCheckoutPolicy(context) baseline = policy.checkin(message) baseline.reindexObject() IStatusMessage(self.request).addStatusMessage(_("Checked in"), type='info') view_url = baseline.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.template()
def do_checkin(self, working_copy): policy = ICheckinCheckoutPolicy(working_copy) return policy.checkin('')
if args.owner: member = membership.getMemberById(args.owner) user = member.getUser() working_copy.changeOwnership(user, recursive=False) working_copy.manage_setLocalRoles(args.owner, ["Owner",]) working_copy.reindexObjectSecurity() print "Set owner to {}".format(args.owner) if args.workflow in ['review', 'publish'] and not creating: workflow.doActionFor(working_copy, 'submit') print "Set workflow state to review." if args.workflow == 'publish': workflow.doActionFor(working_copy, 'publish', comment=change_note) print "Set workflow state to published." policy = ICheckinCheckoutPolicy(working_copy) policy.checkin(change_note) print "Checked in working copy." if creating and args.workflow in ['review', 'publish']: workflow.doActionFor(working_copy, 'submit', comment=change_note) print "Set workflow state to reviewing." if creating and args.workflow == 'publish': workflow.doActionFor(working_copy, 'publish', comment=change_note) print "Set workflow state to published." working_copy.reindexObject() print 'Updated "{}".'.format(working_copy.Title()) print if args.dry_run: print "Dry run. No changes made in Plone." else:
def do_checkin(self, working_copy): policy = ICheckinCheckoutPolicy(working_copy) policy.checkin("")
def do_checkin(self, working_copy): policy = ICheckinCheckoutPolicy(working_copy) policy.checkin('')