コード例 #1
0
ファイル: fc.py プロジェクト: tkimnguyen/castle.cms
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if ob.wl_isLocked():
             self.errors.append(
                 _(u'${title} is being edited and cannot be cut.',
                   mapping={u'title': self.objectTitle(ob)}))
             continue
         if not ob.cb_isMoveable():
             self.errors.append(
                 _(u'${title} is being edited and can not be cut.',
                   mapping={u'title': self.objectTitle(ob)}))
             continue
         m = Moniker(ob)
         oblist.append(m.dump())
     if len(oblist) > 20 and cache.redis_installed():
         cache_key = str(uuid4())
         cache.set(cache_key, oblist, expire=60 * 60 * 24)
         cp = (1, [['cache:' + cache_key]])
     else:
         cp = (1, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #2
0
ファイル: copy.py プロジェクト: johndam/ploneintranet
    def __call__(self):
        request = self.request
        obj_list = []
        for obj in self.items:
            if obj and obj.cb_isCopyable():
                m = Moniker(obj)
                obj_list.append(m.dump())
        # now store copydata into a cookie
        # TODO: what if there's nothing in the list?
        cp_data = (0, obj_list)
        cp_data = _cb_encode(cp_data)  # probably means "clipboard encode"?

        response = request.response
        path = '{0}'.format(cookie_path(request))
        response.setCookie('__cp', cp_data, path=path)
        request['__cp'] = cp_data

        msg = _(
            u"batch_copied_success",
            default=u"${num_elems} Files were copied to your cloud clipboard.",
            mapping={"num_elems": len(obj_list)})
        api.portal.show_message(
            message=msg,
            request=request,
            type="info",
        )
        return self.index()
コード例 #3
0
ファイル: CopySupport.py プロジェクト: kenara/Zope
    def manage_cutObjects(self, ids=None, REQUEST=None):
        """Put a reference to the objects named in ids in the clip board"""
        if ids is None and REQUEST is not None:
            raise BadRequest('No items specified')
        elif ids is None:
            raise ValueError('ids must be specified')

        if isinstance(ids, str):
            ids = [ids]
        oblist = []
        for id in ids:
            ob = self._getOb(id)

            if ob.wl_isLocked():
                raise ResourceLockedError('Object "%s" is locked' % ob.getId())

            if not ob.cb_isMoveable():
                raise CopyError('Not Supported')
            m = Moniker(ob)
            oblist.append(m.dump())
        cp = (1, oblist)
        cp = _cb_encode(cp)
        if REQUEST is not None:
            resp = REQUEST['RESPONSE']
            resp.setCookie('__cp', cp, path='%s' % cookie_path(REQUEST))
            REQUEST['__cp'] = cp
            return self.manage_main(self, REQUEST)
        return cp
コード例 #4
0
    def manage_cutObjects(self, ids=None, REQUEST=None):
        """Put a reference to the objects named in ids in the clip board"""
        if ids is None and REQUEST is not None:
            return eNoItemsSpecified
        elif ids is None:
            raise ValueError('ids must be specified')

        if type(ids) is type(''):
            ids=[ids]
        oblist=[]
        for id in ids:
            ob=self._getOb(id)

            if ob.wl_isLocked():
                raise ResourceLockedError('Object "%s" is locked via WebDAV'
                                            % ob.getId())

            if not ob.cb_isMoveable():
                raise CopyError(eNotSupported % escape(id))
            m = Moniker(ob)
            oblist.append(m.dump())
        cp=(1, oblist)
        cp=_cb_encode(cp)
        if REQUEST is not None:
            resp=REQUEST['RESPONSE']
            resp.setCookie('__cp', cp, path='%s' % cookie_path(REQUEST))
            REQUEST['__cp'] = cp
            return self.manage_main(self, REQUEST)
        return cp
コード例 #5
0
    def __call__(self):
        """Cut all items currently in cart and add them to clipboard.

        The tricky part here is that the method that Plone uses
        (manage_cutObjects) was only ment to work on objects of the same
        parent. However, our use case allows cutting objects of different
        parents. Hence we need to go one level deeper and reimplement some
        stuff that manage_cutObjects does in our own way.

        """

        request = self.request
        obj_list = []
        cannot_cut = []
        for obj in self.items:
            if obj:
                is_allowed = api.user.has_permission('Delete objects', obj=obj)
                is_locked = obj.wl_isLocked()
                is_movable = obj.cb_isMoveable()
                can_cut = is_allowed and is_movable and not is_locked
                if can_cut:
                    m = Moniker(obj)
                    obj_list.append(m.dump())
                else:
                    cannot_cut.append(u'"%s"' % safe_unicode(obj.Title()))

        if obj_list:
            # now store cutdata into a cookie
            # TODO: what if there's nothing in the list?
            ct_data = (1, obj_list)
            ct_data = _cb_encode(ct_data)  # probably means "clipboard encode"?

            response = request.response
            path = '{0}'.format(cookie_path(request))
            response.setCookie('__cp', ct_data, path=path)
            request['__cp'] = ct_data

            msg = _(
                u"batch_cut_success",
                default=
                u"${num_elems} Files were cut and moved to your cloud clipboard.",  # noqa
                mapping={"num_elems": len(obj_list)})
            api.portal.show_message(
                message=msg,
                request=request,
                type="info",
            )

        if cannot_cut:
            msg = _(
                u"batch_cut_failure",
                default=u"The following items could not be cut: ${num_elems}",
                mapping={"num_elems": ', '.join(sorted(cannot_cut))})
            api.portal.show_message(
                message=msg,
                request=request,
                type="info",
            )
        return self.index()
コード例 #6
0
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if not ob.cb_isCopyable():
             raise CopyError(eNotSupported % escape(id))
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (0, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #7
0
ファイル: copy.py プロジェクト: kkdhanesh/NBADEMO
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if not ob.cb_isCopyable():
             raise CopyError(eNotSupported % escape(id))
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (0, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #8
0
    def run(self):
        """Cut all items currently in cart and add them to clipboard.

        The tricky part here is that the method that Plone uses
        (manage_cutObjects) was only ment to work on objects of the same
        parent. However, our use case allows cutting objects of different
        parents. Hence we need to go one level deeper and reimplement some
        stuff that manage_cutObjects does in our own way.

        """
        cart_view = self.context.restrictedTraverse('cart')
        request = self.context.REQUEST
        cart = cart_view.cart

        # create a list of "Monik-ed" object paths for those objects
        # that we will store into clipboard
        obj_list = []

        for obj_uuid in cart:
            obj = api.content.get(UID=obj_uuid)
            if obj is None:
                # An object that is in cart was apparently deleted by someone
                # else and dosn't exist anymore, so there's nothing to do.
                continue

            if obj.wl_isLocked():
                continue

            if not obj.cb_isMoveable():
                continue

            m = Moniker(obj)
            obj_list.append(m.dump())

        # now store cutdata into a cookie
        # TODO: what if there's nothing in the list?
        ct_data = (1, obj_list)
        ct_data = _cb_encode(ct_data)  # probably means "clipboard encode"?

        response = request.response
        path = '{0}'.format(cookie_path(request))
        response.setCookie('__cp', ct_data, path=path)
        request['__cp'] = ct_data

        api.portal.show_message(message="{0} item(s) cut.".format(
            len(obj_list)),
                                request=request,
                                type="info")

        portal = api.portal.get()
        response.redirect(portal.absolute_url())
コード例 #9
0
ファイル: cut.py プロジェクト: syslabcom/slc.cart
    def run(self):
        """Cut all items currently in cart and add them to clipboard.

        The tricky part here is that the method that Plone uses
        (manage_cutObjects) was only ment to work on objects of the same
        parent. However, our use case allows cutting objects of different
        parents. Hence we need to go one level deeper and reimplement some
        stuff that manage_cutObjects does in our own way.

        """
        cart_view = self.context.restrictedTraverse('cart')
        request = self.context.REQUEST
        cart = cart_view.cart

        # create a list of "Monik-ed" object paths for those objects
        # that we will store into clipboard
        obj_list = []

        for obj_uuid in cart:
            obj = api.content.get(UID=obj_uuid)
            if obj is None:
                # An object that is in cart was apparently deleted by someone
                # else and dosn't exist anymore, so there's nothing to do.
                continue

            if obj.wl_isLocked():
                continue

            if not obj.cb_isMoveable():
                continue

            m = Moniker(obj)
            obj_list.append(m.dump())

        # now store cutdata into a cookie
        # TODO: what if there's nothing in the list?
        ct_data = (1, obj_list)
        ct_data = _cb_encode(ct_data)  # probably means "clipboard encode"?

        response = request.response
        path = '{0}'.format(cookie_path(request))
        response.setCookie('__cp', ct_data, path=path)
        request['__cp'] = ct_data

        api.portal.show_message(
            message="{0} item(s) cut.".format(len(obj_list)),
            request=request,
            type="info")

        portal = api.portal.get()
        response.redirect(portal.absolute_url() + '/@@cart')
コード例 #10
0
ファイル: copy.py プロジェクト: plone/plone.app.content
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if not ob.cb_isCopyable():
             self.errors.append(_(u'${title} cannot be copied.',
                                  mapping={u'title': self.objectTitle(ob)}))
             continue
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (0, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #11
0
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if not ob.cb_isCopyable():
             self.errors.append(
                 _('${title} cannot be copied.',
                   mapping={'title': self.objectTitle(ob)}))
             continue
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (0, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #12
0
 def manage_pasteObjects(self, cp):
     """ merge another conversation """
     try:
         op, mdatas = _cb_decode(cp)
     except Exception:
         raise CopyError("Invalid content")
     if op == 0:
         raise ValueError('Not allowed to copy content into conversation')
     if op != 1:
         raise ValueError("Invalid operation of content")
     obj = self.unrestrictedTraverse(mdatas[0])
     if IConversation.providedBy(obj):
         if obj.getParentNode() != self.getParentNode():
             raise ValueError("Invalid parent of content")
         forum = obj.getForum()
         obj_id = obj.getId()
         o_list = obj.objectValues()
         oblist = [Moniker(o1).dump() for o1 in o_list]
         cp = (1, oblist)
         cp = _cb_encode(cp)
         CopyContainer.manage_pasteObjects(self, cp)
         forum.manage_delObjects([obj_id])
     elif IComment.providedBy(obj):
         return CopyContainer.manage_pasteObjects(self, cp)
     else:
         raise ValueError('Invalid type of content')
コード例 #13
0
    def finish(self):
        oblist = []
        for ob in self.oblist:
            if ob.wl_isLocked():
                raise ResourceLockedError('Object "%s" is locked via WebDAV' %
                                          ob.getId())

            if not ob.cb_isMoveable():
                raise CopyError(eNotSupported % escape(id))
            m = Moniker(ob)
            oblist.append(m.dump())
        cp = (1, oblist)
        cp = _cb_encode(cp)
        resp = self.request.response
        resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
        self.request['__cp'] = cp
コード例 #14
0
ファイル: cut.py プロジェクト: pretaweb/plone.app.content
    def finish(self):
        oblist = []
        for ob in self.oblist:
            if ob.wl_isLocked():
                raise ResourceLockedError('Object "%s" is locked via WebDAV'
                                          % ob.getId())

            if not ob.cb_isMoveable():
                raise CopyError(eNotSupported % escape(id))
            m = Moniker(ob)
            oblist.append(m.dump())
        cp = (1, oblist)
        cp = _cb_encode(cp)
        resp = self.request.response
        resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
        self.request['__cp'] = cp
コード例 #15
0
 def __call__(self):
     oblist = []
     request = self.request
     paths = request.get('paths', [])
     brains = api.portal.get_tool('portal_catalog')(path=paths)
     for brain in brains:
         ob = brain.getObject()
         if not ob.cb_isCopyable():
             raise CopyError(eNotSupported % escape(id))
         m = Moniker(ob)
         oblist.append(m.dump())
     cp=(0, oblist)
     cp=_cb_encode(cp)
     resp=request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(request))
     request.set('__cp', cp)
     request.response.redirect(request.get('HTTP_REFERER'))
コード例 #16
0
 def __call__(self):
     oblist = []
     request = self.request
     paths = request.get('paths', [])
     brains = api.portal.get_tool('portal_catalog')(path=paths)
     for brain in brains:
         ob = brain.getObject()
         if not ob.cb_isCopyable():
             raise CopyError(eNotSupported % escape(id))
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (0, oblist)
     cp = _cb_encode(cp)
     resp = request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(request))
     request.set('__cp', cp)
     request.response.redirect(request.get('HTTP_REFERER'))
コード例 #17
0
ファイル: cut.py プロジェクト: plone/plone.app.content
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if ob.wl_isLocked():
             self.errors.append(_(u'${title} is being edited and cannot be cut.',
                                  mapping={u'title': self.objectTitle(ob)}))
             continue
         if not ob.cb_isMoveable():
             self.errors.append(_(u'${title} is being edited and cannot be cut.',
                                  mapping={u'title': self.objectTitle(ob)}))
             continue
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (1, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #18
0
 def finish(self):
     oblist = []
     for ob in self.oblist:
         if ob.wl_isLocked():
             self.errors.append(_(u'${title} is being edited and cannot be cut.',
                                  mapping={u'title': self.objectTitle(ob)}))
             continue
         if not ob.cb_isMoveable():
             self.errors.append(_(u'${title} is being edited and cannot be cut.',
                                  mapping={u'title': self.objectTitle(ob)}))
             continue
         m = Moniker(ob)
         oblist.append(m.dump())
     cp = (1, oblist)
     cp = _cb_encode(cp)
     resp = self.request.response
     resp.setCookie('__cp', cp, path='%s' % cookie_path(self.request))
     self.request['__cp'] = cp
コード例 #19
0
ファイル: copy.py プロジェクト: syslabcom/slc.cart
    def run(self):
        """Copy all items currently in cart to clipboard."""
        cart_view = self.context.restrictedTraverse('cart')
        request = self.context.REQUEST
        cart = cart_view.cart

        # create a list of "Monik-ed" object paths for those objects
        # that we will store into clipboard
        obj_list = []

        for obj_uuid in cart:
            obj = api.content.get(UID=obj_uuid)
            if obj is None:
                # An object that is in cart was apparently deleted by someone
                # else and dosn't exist anymore, so there's nothing to do.
                continue

            if not obj.cb_isCopyable():
                continue

            m = Moniker(obj)
            obj_list.append(m.dump())

        # now store copydata into a cookie
        # TODO: what if there's nothing in the list?
        cp_data = (0, obj_list)
        cp_data = _cb_encode(cp_data)  # probably means "clipboard encode"?

        response = request.response
        path = '{0}'.format(cookie_path(request))
        response.setCookie('__cp', cp_data, path=path)
        request['__cp'] = cp_data

        api.portal.show_message(
            message="{0} item(s) copied.".format(len(obj_list)),
            request=request,
            type="info")

        portal = api.portal.get()
        response.redirect(portal.absolute_url() + '/@@cart')
コード例 #20
0
    def run(self):
        """Copy all items currently in cart to clipboard."""
        cart_view = self.context.restrictedTraverse('cart')
        request = self.context.REQUEST
        cart = cart_view.cart

        # create a list of "Monik-ed" object paths for those objects
        # that we will store into clipboard
        obj_list = []

        for obj_uuid in cart:
            obj = api.content.get(UID=obj_uuid)
            if obj is None:
                # An object that is in cart was apparently deleted by someone
                # else and dosn't exist anymore, so there's nothing to do.
                continue

            if not obj.cb_isCopyable():
                continue

            m = Moniker(obj)
            obj_list.append(m.dump())

        # now store copydata into a cookie
        # TODO: what if there's nothing in the list?
        cp_data = (0, obj_list)
        cp_data = _cb_encode(cp_data)  # probably means "clipboard encode"?

        response = request.response
        path = '{0}'.format(cookie_path(request))
        response.setCookie('__cp', cp_data, path=path)
        request['__cp'] = cp_data

        api.portal.show_message(message="{0} item(s) copied.".format(
            len(obj_list)),
                                request=request,
                                type="info")

        portal = api.portal.get()
        response.redirect(portal.absolute_url())
コード例 #21
0
    def manage_copyObjects(self, ids=None, REQUEST=None, RESPONSE=None):
        """Put a reference to the objects named in ids in the clip board"""
        if ids is None and REQUEST is not None:
            return eNoItemsSpecified
        elif ids is None:
            raise ValueError('ids must be specified')

        if type(ids) is type(''):
            ids=[ids]
        oblist=[]
        for id in ids:
            ob=self._getOb(id)
            if not ob.cb_isCopyable():
                raise CopyError(eNotSupported % escape(id))
            m = Moniker(ob)
            oblist.append(m.dump())
        cp=(0, oblist)
        cp=_cb_encode(cp)
        if REQUEST is not None:
            resp=REQUEST['RESPONSE']
            resp.setCookie('__cp', cp, path='%s' % cookie_path(REQUEST))
            REQUEST['__cp'] = cp
            return self.manage_main(self, REQUEST)
        return cp
コード例 #22
0
ファイル: CopySupport.py プロジェクト: zopefoundation/Zope
    def manage_copyObjects(self, ids=None, REQUEST=None, RESPONSE=None):
        """Put a reference to the objects named in ids in the clip board"""
        if ids is None and REQUEST is not None:
            raise BadRequest('No items specified')
        elif ids is None:
            raise ValueError('ids must be specified')

        if isinstance(ids, str):
            ids = [ids]
        oblist = []
        for id in ids:
            ob = self._getOb(id)
            if not ob.cb_isCopyable():
                raise CopyError('Not Supported')
            m = Moniker(ob)
            oblist.append(m.dump())
        cp = (0, oblist)
        cp = _cb_encode(cp)
        if REQUEST is not None:
            resp = REQUEST['RESPONSE']
            resp.setCookie('__cp', cp, path='%s' % cookie_path(REQUEST))
            REQUEST['__cp'] = cp
            return self.manage_main(self, REQUEST)
        return cp
コード例 #23
0
    def _generate_cp_cookie(self, ids, flag, REQUEST=None):
        if type(ids) is StringType:
            ids = [ids]

        try:
            oblist = [Moniker(self[id]).dump() for id in ids]
        except KeyError:
            # Plone expects attribute errors here
            raise AttributeError
        cp = _cb_encode((flag, oblist))

        if REQUEST is not None:
            resp = REQUEST['RESPONSE']
            resp.setCookie('__cp', cp, path=cookie_path(REQUEST))
            REQUEST['__cp'] = cp
        return cp