Exemplo n.º 1
0
    def action_remove(self, resource, context, form):
        # Tweak resource
        container = resource.get_order_root()
        # Tweak ids
        orig_ids = form['ids']
        form['ids'] = [ id for id in form['ids']
                        if id not in container.__fixed_handlers__ ]

        fixed_handlers_message = None
        fixed_names = set(orig_ids).difference(set(form['ids']))
        if fixed_names:
            # Use try to remove 'fixed handlers'
            fixed_resources = []
            for name in fixed_names:
                item = container.get_resource(name)
                fixed_resources.append(item.get_title())
            resources = ', '.join(sorted(list(fixed_resources)))
            msg = ERROR(u'These following resources cannot be removed: '
                        u'{resources}.')
            fixed_handlers_message = msg(resources=resources)

        # Call parent
        ret = Folder_BrowseContent.action_remove(self, container, context,
                                                 form)
        if fixed_handlers_message:
            context.message.append(fixed_handlers_message)
        # Restore form
        form['ids'] = orig_ids
        return ret