def _create_indirect_sharing_rules(self, cr, uid, wizard_data, group_id, fields_relations, context=None): user_obj = self.pool.get('res.users') current_user = user_obj.browse(cr, uid, uid, context=context) rule_obj = self.pool.get('ir.rule') try: domain = safe_eval(wizard_data.domain) if domain: domain_expr = expression(domain) for rel_field, model in fields_relations: related_domain = [] for element in domain: if domain_expr._is_leaf(element): left, operator, right = element left = '%s.%s'%(rel_field, left) element = left, operator, right related_domain.append(element) rule_obj.create(cr, 1, { 'name': _('Indirect sharing filter created by user %s (%s) for group %s') % \ (current_user.name, current_user.login, group_id), 'model_id': model.id, 'domain_force': str(related_domain), 'groups': [(4,group_id)] }) self.__logger.debug("Created indirect rule on model %s with domain: %s", model.model, repr(related_domain)) except Exception: self.__logger.exception('Failed to create share access') raise osv.except_osv(_('Sharing access could not be setup'), _('Sorry, the current screen and filter you are trying to share are not supported at the moment.\nYou may want to try a simpler filter.'))
def _create_indirect_sharing_rules(self, cr, uid, wizard_data, group_id, fields_relations, context=None): user_obj = self.pool.get('res.users') current_user = user_obj.browse(cr, uid, uid, context=context) rule_obj = self.pool.get('ir.rule') try: domain = safe_eval(wizard_data.domain) if domain: domain_expr = expression(domain) for rel_field, model in fields_relations: related_domain = [] for element in domain: if domain_expr._is_leaf(element): left, operator, right = element left = '%s.%s' % (rel_field, left) element = left, operator, right related_domain.append(element) rule_obj.create(cr, 1, { 'name': _('Indirect sharing filter created by user %s (%s) for group %s') % \ (current_user.name, current_user.login, group_id), 'model_id': model.id, 'domain_force': str(related_domain), 'groups': [(4,group_id)] }) self.__logger.debug( "Created indirect rule on model %s with domain: %s", model.model, repr(related_domain)) except Exception: self.__logger.exception('Failed to create share access') raise osv.except_osv( _('Sharing access could not be setup'), _('Sorry, the current screen and filter you are trying to share are not supported at the moment.\nYou may want to try a simpler filter.' ))
def _create_indirect_sharing_rules(self, cr, current_user, wizard_data, group_id, fields_relations, context=None): rule_name = _('Indirect sharing filter created by user %s (%s) for group %s') % \ (current_user.name, current_user.login, group_id) try: domain = safe_eval(wizard_data.domain) if domain: domain_expr = expression.expression(domain) for rel_field, model in fields_relations: related_domain = [] if not rel_field: continue for element in domain: if domain_expr._is_leaf(element): left, operator, right = element left = '%s.%s'%(rel_field, left) element = left, operator, right related_domain.append(element) self._create_or_combine_sharing_rule(cr, current_user, wizard_data, group_id, model_id=model.id, domain=str(related_domain), rule_name=rule_name, restrict=True, context=context) except Exception: self._logger.exception('Failed to create share access') raise osv.except_osv(_('Sharing access could not be created'), _('Sorry, the current screen and filter you are trying to share are not supported at the moment.\nYou may want to try a simpler filter.'))