Exemple #1
0
    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'])
Exemple #2
0
    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'],
        )
Exemple #3
0
    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'],
        )
Exemple #4
0
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()
Exemple #5
0
    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))
Exemple #6
0
 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))
Exemple #7
0
    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'))
Exemple #8
0
 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'))
Exemple #9
0
    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)
Exemple #10
0
 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)
Exemple #11
0
 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)
Exemple #12
0
    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)
Exemple #13
0
    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)
Exemple #14
0
    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 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
Exemple #16
0
    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
Exemple #17
0
 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 __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
Exemple #19
0
    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)
Exemple #20
0
 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