def test_save(self): request = self.request response = request.response current = ICurrentDraftManagement(request) self.assertEquals(False, current.save()) self.failIf('plone.app.drafts.targetKey' in response.cookies) self.failIf('plone.app.drafts.draftName' in response.cookies) self.failIf('plone.app.drafts.userId' in response.cookies) self.failIf('plone.app.drafts.path' in response.cookies) current.targetKey = u"123" self.assertEquals(True, current.save()) self.assertEquals({'value': '123', 'quoted': True, 'path': '/'}, response.cookies['plone.app.drafts.targetKey']) self.failIf('plone.app.drafts.draftName' in response.cookies) self.failIf('plone.app.drafts.path' in response.cookies) current.targetKey = u"123" current.draftName = u"draft-1" self.assertEquals(True, current.save()) self.assertEquals({'value': '123', 'quoted': True, 'path': '/'}, response.cookies['plone.app.drafts.targetKey']) self.assertEquals({'value': 'draft-1', 'quoted': True, 'path': '/'}, response.cookies['plone.app.drafts.draftName']) self.failIf('plone.app.drafts.path' in response.cookies) current.targetKey = u"123" current.draftName = u"draft-1" current.path = '/test' self.assertEquals(True, current.save()) self.assertEquals({'value': '123', 'quoted': True, 'path': '/test'}, response.cookies['plone.app.drafts.targetKey']) self.assertEquals({'value': 'draft-1', 'quoted': True, 'path': '/test'}, response.cookies['plone.app.drafts.draftName']) self.assertEquals({'value': '/test', 'quoted': True, 'path': '/test'}, response.cookies['plone.app.drafts.path'])
def test_save(self): request = self.request response = request.response current = ICurrentDraftManagement(request) self.assertEqual(False, current.save()) self.assertFalse('plone.app.drafts.targetKey' in response.cookies) self.assertFalse('plone.app.drafts.draftName' in response.cookies) self.assertFalse('plone.app.drafts.userId' in response.cookies) self.assertFalse('plone.app.drafts.path' in response.cookies) current.targetKey = u'123' self.assertEqual(True, current.save()) self.assertEqual( {'value': '123', 'quoted': True, 'path': '/'}, response.cookies['plone.app.drafts.targetKey'], ) self.assertFalse('plone.app.drafts.draftName' in response.cookies) self.assertFalse('plone.app.drafts.path' in response.cookies) current.targetKey = u'123' current.draftName = u'draft-1' self.assertEqual(True, current.save()) self.assertEqual( {'value': '123', 'quoted': True, 'path': '/'}, response.cookies['plone.app.drafts.targetKey'], ) self.assertEqual( {'value': 'draft-1', 'quoted': True, 'path': '/'}, response.cookies['plone.app.drafts.draftName'], ) self.assertFalse('plone.app.drafts.path' in response.cookies) current.targetKey = u'123' current.draftName = u'draft-1' current.path = '/test' # clear data del self.request.response.cookies['plone.app.drafts.targetKey'] del self.request.response.cookies['plone.app.drafts.draftName'] self.assertEqual(True, current.save()) self.assertEqual( {'value': '123', 'quoted': True, 'path': '/test'}, response.cookies['plone.app.drafts.targetKey'], ) self.assertEqual( {'value': 'draft-1', 'quoted': True, 'path': '/test'}, response.cookies['plone.app.drafts.draftName'], ) self.assertEqual( {'value': '/test', 'quoted': True, 'path': '/test'}, response.cookies['plone.app.drafts.path'], )
def test_getCurrentDraft_draft_details_set_not_in_storage_create(self): request = self.request management = ICurrentDraftManagement(request) management.userId = u'user1' management.targetKey = u'123' management.draftName = u'bogus' draft = getCurrentDraft(request, create=True) inStorage = getUtility(IDraftStorage).getDraft( u'user1', u'123', draft.__name__) self.assertEqual(inStorage, draft) response = request.response self.assertTrue('plone.app.drafts.targetKey' in response.cookies) self.assertTrue('plone.app.drafts.draftName' in response.cookies) self.assertEqual( '123', response.cookies['plone.app.drafts.targetKey']['value'], ) self.assertEqual( draft.__name__, response.cookies['plone.app.drafts.draftName']['value'], )
def beginDrafting(context, event): """When we enter the edit screen, set up the target key and draft cookie path. If there is exactly one draft for the given user id and target key, consider that to be the current draft. Also mark the request with IDrafting if applicable. """ storage = queryUtility(IDraftStorage) if storage is None or not storage.enabled: return request = getattr(context, 'REQUEST', None) if request is None: return current = ICurrentDraftManagement(request) # Update target key regardless - we could have a stale cookie current.targetKey = getObjectKey(context) if current.draftName is None: drafts = storage.getDrafts(current.userId, current.targetKey) if len(drafts) == 1: current.draftName = tuple(drafts.keys())[0] # Save the path now so that we can use it again later, even on URLs # (e.g. in AJAX dialogues) that are below this path. current.path = current.defaultPath current.mark() current.save()
def test_mark(self): request = self.request current = ICurrentDraftManagement(request) current.mark() self.assertFalse(IDrafting.providedBy(request)) current.targetKey = u'123' current.mark() self.assertTrue(IDrafting.providedBy(request))
def test_mark(self): request = self.request current = ICurrentDraftManagement(request) current.mark() self.failIf(IDrafting.providedBy(request)) current.targetKey = u"123" current.mark() self.failUnless(IDrafting.providedBy(request))
def test_targetKey(self): request = self.request current = ICurrentDraftManagement(request) self.assertEqual(None, current.targetKey) request.set('plone.app.drafts.targetKey', u'123') self.assertEqual(u'123', current.targetKey) current.targetKey = u'234' self.assertEqual(u'234', current.targetKey) self.assertEqual(u'123', request.get('plone.app.drafts.targetKey'))
def test_targetKey(self): request = self.request current = ICurrentDraftManagement(request) self.assertEquals(None, current.targetKey) request.set('plone.app.drafts.targetKey', u"123") self.assertEquals(u"123", current.targetKey) current.targetKey = u"234" self.assertEquals(u"234", current.targetKey) self.assertEquals(u"123", request.get('plone.app.drafts.targetKey'))
def test_getCurrentDraft_draft_details_set_not_in_storage(self): request = self.request management = ICurrentDraftManagement(request) management.userId = u'user1' management.targetKey = u'123' management.draftName = u'bogus' draft = getCurrentDraft(request) self.assertEqual(None, draft) response = request.response self.assertFalse('plone.app.drafts.targetKey' in response.cookies) self.assertFalse('plone.app.drafts.draftName' in response.cookies)
def test_getCurrentDraft_draft_details_set_not_in_storage(self): request = self.request management = ICurrentDraftManagement(request) management.userId = u"user1" management.targetKey = u"123" management.draftName = u"bogus" draft = getCurrentDraft(request) self.assertEquals(None, draft) response = request.response self.failIf('plone.app.drafts.targetKey' in response.cookies) self.failIf('plone.app.drafts.draftName' in response.cookies)
def test_getCurrentDraft_draft_details_set_in_storage_create(self): request = self.request inStorage = getUtility(IDraftStorage).createDraft(u"user1", u"123") management = ICurrentDraftManagement(request) management.userId = u"user1" management.targetKey = u"123" management.draftName = inStorage.__name__ draft = getCurrentDraft(request, create=True) self.assertEquals(inStorage, draft) response = request.response self.failIf('plone.app.drafts.targetKey' in response.cookies) self.failIf('plone.app.drafts.draftName' in response.cookies)
def test_getCurrentDraft_draft_details_set_in_storage(self): request = self.request inStorage = getUtility(IDraftStorage).createDraft(u'user1', u'123') management = ICurrentDraftManagement(request) management.userId = u'user1' management.targetKey = u'123' management.draftName = inStorage.__name__ draft = getCurrentDraft(request) self.assertEqual(inStorage, draft) response = request.response self.assertFalse('plone.app.drafts.targetKey' in response.cookies) self.assertFalse('plone.app.drafts.draftName' in response.cookies)
def test_getCurrentDraft_draft_details_set_in_storage_create(self): request = self.request inStorage = getUtility(IDraftStorage).createDraft(u'user1', u'123') management = ICurrentDraftManagement(request) management.userId = u'user1' management.targetKey = u'123' management.draftName = inStorage.__name__ draft = getCurrentDraft(request, create=True) self.assertEqual(inStorage, draft) response = request.response self.assertFalse('plone.app.drafts.targetKey' in response.cookies) self.assertFalse('plone.app.drafts.draftName' in response.cookies)
def __init__(self, form, request, context): fti = queryUtility(IDexterityFTI, name=form.portal_type) if isDraftable(fti): current = ICurrentDraftManagement(request) if current.targetKey is None: beginDrafting(context, None) current.path = '/'.join(context.getPhysicalPath()) current.targetKey = IUUID(context) current.save() else: current.mark() if current.draft: context = DraftProxy(current.draft, context) alsoProvides(request, IEditFormDrafting) super(DefaultEditFormFieldWidgets, self).__init__(form, request, context) # noqa
def __init__(self, form, request, context): fti = queryUtility(IDexterityFTI, name=form.portal_type) if isDraftable(fti): current = ICurrentDraftManagement(request) if current.targetKey != '++add++{0}'.format(form.portal_type): beginDrafting(context, None) current.path = '/'.join(context.getPhysicalPath()) current.targetKey = '++add++{0}'.format(form.portal_type) current.save() else: current.mark() target = getattr(current.draft, '_draftAddFormTarget', None) if current.draft and target: context = DraftProxy(current.draft, target.__of__(context)) alsoProvides(request, IAddFormDrafting) super(DefaultAddFormFieldWidgets, self).__init__(form, request, context) # noqa
def test_getCurrentDraft_draft_details_set_not_in_storage_create(self): request = self.request management = ICurrentDraftManagement(request) management.userId = u"user1" management.targetKey = u"123" management.draftName = u"bogus" draft = getCurrentDraft(request, create=True) inStorage = getUtility(IDraftStorage).getDraft(u"user1", u"123", draft.__name__) self.assertEquals(inStorage, draft) response = request.response self.failUnless('plone.app.drafts.targetKey' in response.cookies) self.failUnless('plone.app.drafts.draftName' in response.cookies) self.assertEquals('123', response.cookies['plone.app.drafts.targetKey']['value']) self.assertEquals(draft.__name__, response.cookies['plone.app.drafts.draftName']['value'])
def test_draft(self): request = self.request current = ICurrentDraftManagement(request) self.assertEqual(None, current.draft) current.userId = u'user1' current.targetKey = u'123' current.draftName = u'draft' self.assertEqual(None, current.draft) storage = getUtility(IDraftStorage) created = storage.createDraft(u'user1', u'123') current.draftName = created.__name__ self.assertEqual(created, current.draft) newDraft = storage.createDraft(u'user1', u'123') current.draft = newDraft self.assertEqual(newDraft, current.draft)
def test_draft(self): request = self.request current = ICurrentDraftManagement(request) self.assertEquals(None, current.draft) current.userId = u"user1" current.targetKey = u"123" current.draftName = u"draft" self.assertEquals(None, current.draft) storage = getUtility(IDraftStorage) created = storage.createDraft(u"user1", u"123") current.draftName = created.__name__ self.assertEquals(created, current.draft) newDraft = storage.createDraft(u"user1", u"123") current.draft = newDraft self.assertEquals(newDraft, current.draft)
def _get_adapted_request(self): # returns the adapted request for the draft stuff adapted_request = ICurrentDraftManagement(self.request, None) adapted_request.userId = getCurrentUserId() adapted_request.targetKey = getDefaultKey(self.context) return adapted_request