Пример #1
0
 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.'))
Пример #2
0
 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.'
               ))
Пример #3
0
 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.'))