1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- # -*- coding: utf-8 -*-
- from odoo import models, fields, api
- from odoo.exceptions import ValidationError
- from . import base_archive
- from ..utils.label_info import LabelInfo
- from ..utils.label_list import LabelList
- class ReportLabel(base_archive.BaseInfoUnique):
- _name = 'jc_bi.report_label'
- _description = u'BI:标签'
- _order = 'id desc'
- _module = 'jc_bi'
- order = fields.Integer('顺序')
- report_set_id = fields.Many2one('jc_bi.report_set', '报表集')
- report_label_condition_id = fields.Many2one('jc_bi.report_label_condition', '标签条件')
- user_detail = fields.One2many('jc_bi.report_label_user_detail', 'report_label_id', string=u'标签用户明细', copy=True)
- @api.constrains('name')
- def _check_name(self):
- if self.name:
- result = self.search_count(
- [('name', '=', self.name), ('id', '!=', self.id)])
- if result:
- raise ValidationError('{名称}已存在')
- return
- @api.model
- def query_user_info(self, label_id):
- all_user_list = self.env['res.users'].search_read([], ['id', 'name'])
- all_user_list = [[x['id'], x['name']] for x in all_user_list]
- bill = self.env[self._name].sudo().browse(int(label_id))
- if not bill:
- return label_id, [], all_user_list
- exist_user_list = [[d.user_id.id, d.user_id.name] for d in bill.user_detail]
- if not exist_user_list:
- return label_id, [], all_user_list
- not_used_user_list = []
- for _id, _name in all_user_list:
- if ReportLabel._is_exist(exist_user_list, _id):
- continue
- not_used_user_list.append([_id, _name])
- return label_id, exist_user_list, not_used_user_list
- @staticmethod
- def _is_exist(list1, key):
- for item in list1:
- if item[0] == key:
- return True
- return False
- @api.model
- def save_user(self, label_id, user_list):
- bill = self.env[self._name].sudo().browse(int(label_id))
- for d in bill.user_detail:
- d.unlink()
- for user_id in user_list:
- val = {
- 'report_label_id': bill.id,
- 'user_id': user_id,
- }
- self.env['jc_bi.report_label_user_detail'].sudo().create(val)
- return label_id
|