'Checks whether ownership can be required to access records in
this table (this may not apply to every record in this table).
@param method: the method as string or a list of methods (AND)
@param table: the database table or table name
@param c: controller name (falls back to current request)
@param f: function name (falls back to current request)'

def ownership_required(self, method, table, c=None, f=None):

    if (not self.use_cacls):
        if (self.policy in (1, 2)):
            return False
        else:
            return True
    if (not hasattr(table, '_tablename')):
        tablename = table
        table = current.s3db.table(tablename)
        if (not table):
            raise AttributeError(('undefined    table    %s' % tablename))
    if (('owned_by_user' not in table.fields) and ('owned_by_group' not in table.fields) and ('realm_entity' not in table.fields)):
        return False
    if (not isinstance(method, (list, tuple))):
        method = [method]
    auth = self.auth
    if (self.auth.override or (not self.use_cacls)):
        return False
    sr = auth.get_system_roles()
    logged_in = auth.s3_logged_in()
    racl = self.required_acl(method)
    user = auth.user
    if (not logged_in):
        realms = Storage({sr.ANONYMOUS: None})
        delegations = Storage()
    else:
        realms = user.realms
        delegations = user.delegations
    if (sr.ADMIN in realms):
        return False
    c = (c or self.controller)
    f = (f or self.function)
    acls = self.applicable_acls(racl, realms=realms, delegations=delegations, c=c, f=f, t=table)
    acls = [entity for entity in acls if ((acls[entity][0] & racl) == racl)]
    if (('ANY' in acls) or (acls and ('realm_entity' not in table.fields))):
        return False
    return True
