def listed_objects_info(self,
                            skey='sortorder',
                            rkey=0,
                            sort_on='title',
                            sort_order=0):
        sorted_objects = self.utSortObjsListByAttr(self.contained_objects(),
                                                   sort_on, sort_order)
        sorted_objects = self.utSortObjsListByAttr(sorted_objects, skey, rkey)

        ret = []
        for o in sorted_objects:
            o_view = IObjectView(o)
            versionable, editable = o_view.version_status()
            info = {
                'view_permission': o.checkPermissionView(),
                'del_permission': o.checkPermissionDeleteObject(),
                'copy_permission': o.checkPermissionCopyObject(),
                'edit_permission': o.checkPermissionEditObject(),
                'approved': o.approved,
                'versionable': versionable,
                'editable': editable,
                'self': o,
                'view': o_view,
            }
            if info['view_permission'] and (info['approved']
                                            or info['del_permission']
                                            or info['copy_permission']
                                            or info['edit_permission']):
                ret.append(info)

        return ret
 def modif_date_getter(info):
     return IObjectView(info['self']).get_modification_date()