Join the social network of Tech Nerds, increase skill rank, get work, manage projects...
 
  • How to Share filter created by user in OpenERP?

    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 0
    • 252
    Comment on it

    In OpenERP first we create users and configure users access rights, then user will create a new filter, use filter group and also add a new ir.rule entry for model_id and domain on the target group_id. If restrict is True then instead of adding a rule, the domain will be combined with AND operator with all existing rules in the group and then share filter.

    Use this function show below

     

    def sharing_rule(self, cr, current_user, wizard_data, group_id, model_id, domain, restrict=False, rule_name=None, context=None):
     
            if rule_name is None:
                rule_name = _('Sharing filter created by user %s (%s) for group %s') % \
                                (current_user.name, current_user.login, group_id)
            rule_obj = self.pool.get('ir.rule')
            rule_ids = rule_obj.search(cr, UID_ROOT, [('groups', 'in', group_id), ('model_id', '=', model_id)])
            if rule_ids:
                for rule in rule_obj.browse(cr, UID_ROOT, rule_ids, context=context):
                    if rule.domain_force == domain:
                        # don't create it twice!
                        if restrict:
                            continue
                        else:
                            self._logger.debug("Ignoring sharing rule on model %s with domain: %s the same rule exists already", model_id, domain)
                            return
                    if restrict:
                        # restricting existing rules is done by adding the clause
                        # with an AND, but we can't alter the rule if it belongs to
                        # other groups, so we duplicate if needed
                        rule = self._check_personal_rule_or_duplicate(cr, group_id, rule, context=context)
                        eval_ctx = rule_obj._eval_context_for_combinations()
                        org_domain = expression.normalize(eval(rule.domain_force, eval_ctx))
                        new_clause = expression.normalize(eval(domain, eval_ctx))
                        combined_domain = expression.AND([new_clause, org_domain])
                        rule.write({'domain_force': combined_domain, 'name': rule.name + _('(Modified)')})
                        self._logger.debug("Combining sharing rule %s on model %s with domain: %s", rule.id, model_id, domain)
            if not rule_ids or not restrict:
    
                rule_obj.create(cr, UID_ROOT, {
                    'name': rule_name,
                    'model_id': model_id,
                    'domain_force': domain,
                    'groups': [(4,group_id)]
                    })
                self._logger.debug("Created sharing rule on model %s with domain: %s", model_id, domain)
    

     

 0 Comment(s)

Sign In
                           OR                           
                           OR                           
Register

Sign up using

                           OR                           
Forgot Password
Fill out the form below and instructions to reset your password will be emailed to you:
Reset Password
Fill out the form below and reset your password: