def block_portlets(self, action):
        status = IStatusMessage(self.request)
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()
        blockstatus = data.get('blockstatus', False)

        manager = data.get('portlet_manager', None)
        path = "/".join(context.getPhysicalPath())

        if manager is not None:
            managernames = [manager]
        else:
            managernames = utils.get_portlet_manager_names()

        status.addStatusMessage(u'Set portlet block status on %s' % ', '.join(
            managernames), type='info')
        managers = dict()
        for managername in managernames:
            managers[managername] = assignment_mapping_from_key(
                context,
                managername,
                CONTEXT_CATEGORY,
                path,)

        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.block_portlets,
            managers=managers,
            blockstatus=blockstatus,)

        self.handle_status(status, info, warnings, errors)
    def reindex_all(self, action):
        context = Acquisition.aq_inner(self.context)

        def _setter(ob, *args, **kw):
            ob.reindexObject()

        status = IStatusMessage(self.request)
        status.addStatusMessage(_(u"Reindex object"), type='info')

        info, warnings, errors = utils.exec_for_all_langs(context, _setter)

        self.handle_status(status, info, warnings, errors)
    def set_description(self, action):
        status = IStatusMessage(self.request)
        status.addStatusMessage(_(u"Set text as description"), type="info")
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()

        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.set_po_description,
            text=data.get('text', ''),
            po_domain=data.get('po_domain', ''))

        self.handle_status(status, info, warnings, errors)
    def delete_property(self, action):
        """ deletes the given property """
        status = IStatusMessage(self.request)
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()
        property_id = data.get('property_to_delete')
        status.addStatusMessage(
            u'Delete property %s' % property_id, type='info')
        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.delete_property,
            property_id=property_id,)

        self.handle_status(status, info, warnings, errors)
    def remove_interface(self, action):
        data, error = self.extractData()
        interface_to_remove = data.get('interface_to_remove')
        status = IStatusMessage(self.request)
        status.addStatusMessage(_(
            u"Remove marker interface '%s' on this object and all "
            u"translations" % interface_to_remove), type="info")
        context = Acquisition.aq_inner(self.context)

        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.remove_interface,
            interface_to_remove=interface_to_remove,)

        self.handle_status(status, info, warnings, errors)
    def delete(self, action):
        """ deletes object in all languages """
        status = IStatusMessage(self.request)
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()
        id_to_delete = data.get('id_to_delete')
        status.addStatusMessage(
            u'Delete object %s' % id_to_delete, type='info')
        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.delete_this,
            id_to_delete=id_to_delete,
            target_id=id_to_delete,)

        self.handle_status(status, info, warnings, errors)
    def do_action(self, action):
        data, error = self.extractData()
        transition = data.get('transition')
        status = IStatusMessage(self.request)
        status.addStatusMessage(_(
            u"Perform workflow-action '%s' on this object and all "
            u"translations" % transition),
            type="info")
        context = Acquisition.aq_inner(self.context)

        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.workflow_action,
            transition=transition,)

        self.handle_status(status, info, warnings, errors)
    def cut_and_paste(self, action):
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()
        target_path = data.get('target_path', '')
        id_to_move = data.get('id_to_move', '')
        status = IStatusMessage(self.request)
        status.addStatusMessage(_(u"Move object %s to %s" % (
            id_to_move, target_path)), type="info")

        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.cut_and_paste,
            target_path=target_path,
            id_to_move=id_to_move,
            target_id=id_to_move)
        self.handle_status(status, info, warnings, errors)
    def rename(self, action):
        status = IStatusMessage(self.request)
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()
        old_id = data.get('old_id', '')
        new_id = data.get('new_id', '')
        status.addStatusMessage(
            u'Rename from %s to %s.' % (old_id, new_id), type="info")
        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.renamer,
            oldid=old_id,
            newid=new_id,
            target_id=old_id,)

        self.handle_status(status, info, warnings, errors)
    def set_property(self, action):
        """ sets the given property """
        status = IStatusMessage(self.request)
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()
        property_id = data.get('property_id')
        property_value = data.get('property_value')
        if isinstance(property_value, unicode):
            property_value = property_value.encode('utf-8')
        status.addStatusMessage(u'Set property %s' % property_id, type='info')
        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.set_property,
            property_id=property_id,
            property_type=data.get('property_type'),
            property_value=property_value,)

        self.handle_status(status, info, warnings, errors)
    def set_title(self, action):
        status = IStatusMessage(self.request)
        status.addStatusMessage(_(u"Set text as title"), type="info")
        context = Acquisition.aq_inner(self.context)
        data, error = self.extractData()

        info, warnings, errors = utils.exec_for_all_langs(
            context,
            utils.set_po_title,
            text=data.get('text', ''),
            po_domain=data.get('po_domain', ''))

        for msg in info:
            status.addStatusMessage(msg, type='info')
        for msg in warnings:
            status.addStatusMessage(msg, type='warning')
        for msg in errors:
            status.addStatusMessage(msg, type='error')

        self.request.response.redirect(self.context.REQUEST.get('URL'))