'As per channel access configuration (visibility)
- public  ==> no restriction on slides access
- private ==> restrict all slides of channel based on access group defined on channel group_ids field
- partial ==> show channel, but presentations based on groups means any user can see channel but not slide\'s content.
For private: implement using record rule
For partial: user can see channel, but channel gridview have slide detail so we have to implement
partial field access mechanism for public user so he can have access of promotional field (name, view_count) of slides,
but not all fields like data (actual pdf content)
all fields should be accessible only for user group defined on channel group_ids'

@api.model
def check_field_access_rights(self, operation, fields):

    if (self.env.uid == SUPERUSER_ID):
        return (fields or list(self._fields))
    fields = super(Slide, self).check_field_access_rights(operation, fields)
    if self.ids:
        self.env.cr.execute((('SELECT    DISTINCT    channel_id    FROM    ' + self._table) + '    WHERE    id    IN    %s'), (tuple(self.ids),))
        channel_ids = [x[0] for x in self.env.cr.fetchall()]
        channels = self.env['slide.channel'].sudo().browse(channel_ids)
        limited_access = all((((channel.visibility == 'partial') and (not len((channel.group_ids & self.env.user.groups_id)))) for channel in channels))
        if limited_access:
            fields = [field for field in fields if (field in self._PROMOTIONAL_FIELDS)]
    return fields
