I know how to restrict visibility of a field using the groups attribute. But how do I restrict the values that would be visible in the field?
Here's my specific case:-
So in our application there is a request lifecycle and each request created has to pass through several stages, in a specific order. There are different groups who operate on the request at each stage and their access is restricted to that stage. So a user can only see a request if they have access to the stage it is currently in. And when they open it, they have the ability to process the request and push it to the next stage, if they have access to the next stage.
We need to know what are the next stages that the request can go through depending on the stage it is currently in. For this we compute a field called "next_stage_ids" in the model file:-
@api.depends('type_id', 'stage_id')
def _compute_next_stage_ids(self):
for record in self:
routes = self.env['request.stage.route'].search(
record._get_next_stage_route_domain())
record.next_stage_ids = (
record.stage_id + routes.mapped('stage_to_id'))
Currently we are giving all the users all the available stage_ids that come after the current stage. But we have to restrict the available stage ids based on the user group that the user belongs to. How do we do this?
Update:-
I should clarify that we already have specified the groups that each stage is allowed to be accessible by. So access control-wise it is configured. But the problem is that we have a widget at the right top where it shows which is the next stage that it should be moved to and it is visible regardless of whether the user has access to that stage or not. When a user clicks on it, it will either completed the moving to the stage or say that they don't have access. What I need is for that stage to not even show up on the screen if they don't have access. I'm sorry, I should have clarified this in the original post.
Groups and Access Rights: https://goo.gl/4jAhtH