commit b6e66db11e481bda6f804ba1ecf35b99ce9d7888 Author: raynald Date: Mon Oct 25 19:12:32 2021 +0200 first commit diff --git a/__init__.py b/__init__.py new file mode 100644 index 0000000..511a0ca --- /dev/null +++ b/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models \ No newline at end of file diff --git a/__manifest__.py b/__manifest__.py new file mode 100644 index 0000000..a6f119c --- /dev/null +++ b/__manifest__.py @@ -0,0 +1,37 @@ +# -*- coding: utf-8 -*- +{ + 'name': "donation_qualifier", + + 'summary': """ + Short (1 phrase/line) summary of the module's purpose, used as + subtitle on modules listing or apps.openerp.com""", + + 'description': """ + Long description of module's purpose + """, + + 'author': "My Company", + 'website': "http://www.yourcompany.com", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/14.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Uncategorized', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['base'], + + # always loaded + 'data': [ + 'security/ir.model.access.csv', + 'views/views.xml', + 'views/partner.xml', + 'views/templates.xml', + ], + # only loaded in demonstration mode + 'demo': [ + 'demo/demo.xml', + ], + 'installable': True, +} diff --git a/__pycache__/__init__.cpython-37.pyc b/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000..3721327 Binary files /dev/null and b/__pycache__/__init__.cpython-37.pyc differ diff --git a/controllers/__init__.py b/controllers/__init__.py new file mode 100644 index 0000000..457bae2 --- /dev/null +++ b/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers \ No newline at end of file diff --git a/controllers/__pycache__/__init__.cpython-37.pyc b/controllers/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000..5f09a5a Binary files /dev/null and b/controllers/__pycache__/__init__.cpython-37.pyc differ diff --git a/controllers/__pycache__/controllers.cpython-37.pyc b/controllers/__pycache__/controllers.cpython-37.pyc new file mode 100644 index 0000000..03ffe5a Binary files /dev/null and b/controllers/__pycache__/controllers.cpython-37.pyc differ diff --git a/controllers/controllers.py b/controllers/controllers.py new file mode 100644 index 0000000..7cd2042 --- /dev/null +++ b/controllers/controllers.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# from odoo import http + + +# class DonationQualifier(http.Controller): +# @http.route('/donation_qualifier/donation_qualifier/', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/donation_qualifier/donation_qualifier/objects/', auth='public') +# def list(self, **kw): +# return http.request.render('donation_qualifier.listing', { +# 'root': '/donation_qualifier/donation_qualifier', +# 'objects': http.request.env['donation_qualifier.donation_qualifier'].search([]), +# }) + +# @http.route('/donation_qualifier/donation_qualifier/objects//', auth='public') +# def object(self, obj, **kw): +# return http.request.render('donation_qualifier.object', { +# 'object': obj +# }) diff --git a/demo/demo.xml b/demo/demo.xml new file mode 100644 index 0000000..14c965a --- /dev/null +++ b/demo/demo.xml @@ -0,0 +1,30 @@ + + + + + \ No newline at end of file diff --git a/models/__init__.py b/models/__init__.py new file mode 100644 index 0000000..5305644 --- /dev/null +++ b/models/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models \ No newline at end of file diff --git a/models/__pycache__/__init__.cpython-37.pyc b/models/__pycache__/__init__.cpython-37.pyc new file mode 100644 index 0000000..75e4d6c Binary files /dev/null and b/models/__pycache__/__init__.cpython-37.pyc differ diff --git a/models/__pycache__/models.cpython-37.pyc b/models/__pycache__/models.cpython-37.pyc new file mode 100644 index 0000000..f88cce8 Binary files /dev/null and b/models/__pycache__/models.cpython-37.pyc differ diff --git a/models/models.py b/models/models.py new file mode 100644 index 0000000..b414325 --- /dev/null +++ b/models/models.py @@ -0,0 +1,135 @@ +# -*- coding: utf-8 -*- + +from odoo import models, fields, api +from odoo.exceptions import UserError, ValidationError +from psycopg2 import sql, DatabaseError + +from werkzeug import utils + +class donation_categoryQualifier(models.Model): + _name = 'donation_qualifier.donation_categoryqualifier' + _description = 'categories pour les qualificatifs' + + sql_constraints = [ + ('category_uniq', 'UNIQUE((name))', 'This name already exists.') + ] + name = fields.Char('Name', required=True) + order= fields.Integer() + description = fields.Text() + + @api.constrains('name') + def _check_name(self): + + count=self.search_count([('name','=',self.name),('id', '!=', self.id)]) + if count>0: + raise UserError('This name already exist') + + + + # @api.depends('value') + # def _value_pc(self): + # for record in self: + # record.value2 = float(record.value) / 100 + +class donation_qualifier(models.Model): + _name = 'donation_qualifier.donation_qualifier' + _description = 'qualificatifs de contacts' + + name = fields.Char() + type=fields.Selection([('checkbox','checkbox'),('text','text'),('numerical','numerical')], default='checkbox') + default_value = fields.Char() + description = fields.Text() + category_id = fields.Many2one( + 'donation_qualifier.donation_categoryqualifier', string='Category', tracking=True, + required=True) + + +class donation_partnerqualifier(models.Model): + _name = 'donation_qualifier.donation_partnerqualifier' + _description = 'qualificatifs pour stocker les valeurs au niveau du contact' + + # partner_id=fields.Many2one('res.partner',compute='compute_partner', inverse='partner_inverse') + # partner_ids = fields.One2many('res.partner', 'qualifier_id') + + value=fields.Char() + qualifier_id=fields.Many2one('donation_qualifier.donation_qualifier',string='qualifier') + category = fields.Char(related='qualifier_id.category_id.name') + partner_id = fields.Many2one( + 'res.partner', + string='partner', + required=True, + index=True, + readonly=True, + track_visibility='onchange', + ondelete='restrict' + ) + + sql_constraints = [ + ('qualifier_uniq', 'unique (qualifier_id,partner_id)', 'A qualifier could be defined only one time on same partner.') + ] + + @api.constrains('qualifier_id') + def _check_qualifier_id(self): + for q in self: + result=self.search_count([('qualifier_id','=',int(self.qualifier_id)),('id', '!=', self.id),('partner_id','=',int(self.partner_id))]) + if result>0: + raise UserError('A qualifier could be defined only one time on same partner.') + + # _sql_constraints = [ + # ('code_company_uniq', 'unique (code,company_id)', 'The code of the account must be unique per company !') + # ] + # def validate(self): + # raise UserError(_( + # 'This qualifier %s can\'t be used twice') + # % donation_partnerqualifier.qualifier_id.name) + + # for donation_partnerqualifier in self: + # vals={} + # if self.env['donation_qualifier.donation_qualifier'].search([('name','=',donation_partnerqualifier.qualifier_id.name)]): + # raise UserError(_( + # 'This qualifier %s can\'t be used twice') + # % donation_partnerqualifier.qualifier_id.name) + # vals['value']=donation_partnerqualifier.value + # vals['partner_id']=donation_partnerqualifier.partner_id + # vals['qualifier_id']=donation_partnerqualifier.qualifier_id + + # donation_partnerqualifier.write(vals) + # return +# @api.depends('contact_ids') +# def compute_partner(self): +# if len(self.partner_ids) > 0: +# self.partner_id = self.partner_ids[0] + + +# def partner_inverse(self): +# if len(self.partner_ids) > 0: +# # delete previous reference +# partner = self.env['res.partner'].browse(self.partner_ids[0].id) +# partner.qualifier_id = False +# # set new reference +# self.partner_id.qualifier_id = self + + +class partner(models.Model): + _inherit = 'res.partner' + + @api.depends('qualifier_ids.partner_id') + def _compute_qualifier_count(self): + # The current user may not have access rights for donations + for partner in self: + try: + partner.qualifier_count = len(partner.qualifier_ids) + except Exception: + partner.qualifier_count = 0 + + qualifier_ids = fields.One2many( + 'donation_qualifier.donation_partnerqualifier', + 'partner_id', + string='Qualifier', + readonly=True + ) + qualifier_count = fields.Integer( + compute='_compute_qualifier_count', + string="# of Qualifiers", + readonly=True + ) \ No newline at end of file diff --git a/security/ir.model.access.csv b/security/ir.model.access.csv new file mode 100644 index 0000000..0820f44 --- /dev/null +++ b/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_donation_qualifier_donation_qualifier,donation_qualifier.donation_qualifier,model_donation_qualifier_donation_qualifier,donation_main.group_donation_manager,1,1,1,1 +access_donation_qualifier_donation_categoryqualifier,donation_qualifier.donation_categoryqualifier,model_donation_qualifier_donation_categoryqualifier,donation_main.group_donation_manager,1,1,1,1 +access_donation_qualifier_donation_partnerqualifier,donation_qualifier.donation_partnerqualifier,model_donation_qualifier_donation_partnerqualifier,donation_main.group_donation_manager,1,1,1,1 \ No newline at end of file diff --git a/views/partner.xml b/views/partner.xml new file mode 100644 index 0000000..e5cfe08 --- /dev/null +++ b/views/partner.xml @@ -0,0 +1,30 @@ + + + + + + + Qualifiers + donation_qualifier.donation_partnerqualifier + tree,form,graph + {'search_default_partner_id': active_id} + + + + qualifier.button.res.partner.form + res.partner + + + + + + + + + + diff --git a/views/templates.xml b/views/templates.xml new file mode 100644 index 0000000..cea6b39 --- /dev/null +++ b/views/templates.xml @@ -0,0 +1,24 @@ + + + + + \ No newline at end of file diff --git a/views/views.xml b/views/views.xml new file mode 100644 index 0000000..727701a --- /dev/null +++ b/views/views.xml @@ -0,0 +1,145 @@ + + + + + + donation_categoryQualifier list + donation_qualifier.donation_categoryqualifier + + + + + + + + + + + donation_qualifier list + donation_qualifier.donation_qualifier + + + + + + + + + + + + + + donation_partnerqualifier list + donation_qualifier.donation_partnerqualifier + + + + + + + + + + donation_partnerqualifier.search + donation_qualifier.donation_partnerqualifier + + + + + + + + + donation_partnerqualifier Form + donation_qualifier.donation_partnerqualifier + +
+ + + +
+
+
+ + + + + categories + donation_qualifier.donation_categoryqualifier + tree,form + + + + qualifiers + donation_qualifier.donation_qualifier + tree,form + + + + partnerqualifiers + donation_qualifier.donation_partnerqualifier + tree,form + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
\ No newline at end of file