Browse Source

first commit

master
raynald 4 years ago
commit
b6e66db11e
16 changed files with 436 additions and 0 deletions
  1. +4
    -0
      __init__.py
  2. +37
    -0
      __manifest__.py
  3. BIN
      __pycache__/__init__.cpython-37.pyc
  4. +3
    -0
      controllers/__init__.py
  5. BIN
      controllers/__pycache__/__init__.cpython-37.pyc
  6. BIN
      controllers/__pycache__/controllers.cpython-37.pyc
  7. +21
    -0
      controllers/controllers.py
  8. +30
    -0
      demo/demo.xml
  9. +3
    -0
      models/__init__.py
  10. BIN
      models/__pycache__/__init__.cpython-37.pyc
  11. BIN
      models/__pycache__/models.cpython-37.pyc
  12. +135
    -0
      models/models.py
  13. +4
    -0
      security/ir.model.access.csv
  14. +30
    -0
      views/partner.xml
  15. +24
    -0
      views/templates.xml
  16. +145
    -0
      views/views.xml

+ 4
- 0
__init__.py View File

@ -0,0 +1,4 @@
# -*- coding: utf-8 -*-
from . import controllers
from . import models

+ 37
- 0
__manifest__.py View File

@ -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,
}

BIN
__pycache__/__init__.cpython-37.pyc View File


+ 3
- 0
controllers/__init__.py View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import controllers

BIN
controllers/__pycache__/__init__.cpython-37.pyc View File


BIN
controllers/__pycache__/controllers.cpython-37.pyc View File


+ 21
- 0
controllers/controllers.py View File

@ -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/<model("donation_qualifier.donation_qualifier"):obj>/', auth='public')
# def object(self, obj, **kw):
# return http.request.render('donation_qualifier.object', {
# 'object': obj
# })

+ 30
- 0
demo/demo.xml View File

@ -0,0 +1,30 @@
<odoo>
<data>
<!--
<record id="object0" model="donation_qualifier.donation_qualifier">
<field name="name">Object 0</field>
<field name="value">0</field>
</record>
<record id="object1" model="donation_qualifier.donation_qualifier">
<field name="name">Object 1</field>
<field name="value">10</field>
</record>
<record id="object2" model="donation_qualifier.donation_qualifier">
<field name="name">Object 2</field>
<field name="value">20</field>
</record>
<record id="object3" model="donation_qualifier.donation_qualifier">
<field name="name">Object 3</field>
<field name="value">30</field>
</record>
<record id="object4" model="donation_qualifier.donation_qualifier">
<field name="name">Object 4</field>
<field name="value">40</field>
</record>
-->
</data>
</odoo>

+ 3
- 0
models/__init__.py View File

@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import models

BIN
models/__pycache__/__init__.cpython-37.pyc View File


BIN
models/__pycache__/models.cpython-37.pyc View File


+ 135
- 0
models/models.py View File

@ -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
)

+ 4
- 0
security/ir.model.access.csv View File

@ -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

+ 30
- 0
views/partner.xml View File

@ -0,0 +1,30 @@
<?xml version="1.0"?>
<odoo>
<record id="act_partner_qualifier" model="ir.actions.act_window">
<field name="name">Qualifiers</field>
<field name="res_model">donation_qualifier.donation_partnerqualifier</field>
<field name="view_mode">tree,form,graph</field>
<field name="context">{'search_default_partner_id': active_id}</field>
</record>
<record id="view_partner_form" model="ir.ui.view">
<field name="name">qualifier.button.res.partner.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="//div[@name='button_box']" position="inside">
<button class="oe_stat_button" type="action"
name="%(act_partner_qualifier)d"
icon="fa-check-square">
<field string="Qualifiers" name="qualifier_count" widget="statinfo"/>
</button>
</xpath>
</field>
</record>
</odoo>

+ 24
- 0
views/templates.xml View File

@ -0,0 +1,24 @@
<odoo>
<data>
<!--
<template id="listing">
<ul>
<li t-foreach="objects" t-as="object">
<a t-attf-href="#{ root }/objects/#{ object.id }">
<t t-esc="object.display_name"/>
</a>
</li>
</ul>
</template>
<template id="object">
<h1><t t-esc="object.display_name"/></h1>
<dl>
<t t-foreach="object._fields" t-as="field">
<dt><t t-esc="field"/></dt>
<dd><t t-esc="object[field]"/></dd>
</t>
</dl>
</template>
-->
</data>
</odoo>

+ 145
- 0
views/views.xml View File

@ -0,0 +1,145 @@
<odoo>
<data>
<!-- explicit list view definition -->
<record model="ir.ui.view" id="donation_qualifier.category_list">
<field name="name">donation_categoryQualifier list</field>
<field name="model">donation_qualifier.donation_categoryqualifier</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="description"/>
<field name="order"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="donation_qualifier.qualifier_list">
<field name="name">donation_qualifier list</field>
<field name="model">donation_qualifier.donation_qualifier</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="category_id"/>
<field name="type"/>
<field name="default_value"/>
<field name="description"/>
</tree>
</field>
</record>
<record model="ir.ui.view" id="donation_qualifier.partnerqualifier_list">
<field name="name">donation_partnerqualifier list</field>
<field name="model">donation_qualifier.donation_partnerqualifier</field>
<field name="arch" type="xml">
<tree>
<field name="category" string="category"/>
<field name="qualifier_id"/>
<field name="value"/>
</tree>
</field>
</record>
<record id="donation_qualifier.partnerqualifier_search" model="ir.ui.view">
<field name="name">donation_partnerqualifier.search</field>
<field name="model">donation_qualifier.donation_partnerqualifier</field>
<field name="arch" type="xml">
<search string="Search Qualifiers">
<field name="partner_id"/>
</search>
</field>
</record>
<record model="ir.ui.view" id="donation_qualifier.partnerqualifier_form" >
<field name="name">donation_partnerqualifier Form</field>
<field name="model">donation_qualifier.donation_partnerqualifier</field>
<field name="arch" type="xml">
<form string="partnerqualifier_form">
<sheet>
<label for="partner_id" string="Partner"/>
<field name="partner_id"/>
<br/>
<label for="qualifier_id" string="Qualifier"/>
<field name="qualifier_id"/>
<br/>
<label for="value" string="value"/>
<field name="value"/>
</sheet>
</form>
</field>
</record>
<!-- actions opening views on models -->
<record model="ir.actions.act_window" id="category_action">
<field name="name">categories</field>
<field name="res_model">donation_qualifier.donation_categoryqualifier</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.actions.act_window" id="qualifier_action">
<field name="name">qualifiers</field>
<field name="res_model">donation_qualifier.donation_qualifier</field>
<field name="view_mode">tree,form</field>
</record>
<record model="ir.actions.act_window" id="partnerqualifier_action">
<field name="name">partnerqualifiers</field>
<field name="res_model">donation_qualifier.donation_partnerqualifier</field>
<field name="view_mode">tree,form</field>
</record>
<!-- server action to the one above -->
<!--
<record model="ir.actions.server" id="donation_qualifier.action_server">
<field name="name">donation_qualifier server</field>
<field name="model_id" ref="model_donation_qualifier_donation_qualifier"/>
<field name="state">code</field>
<field name="code">
action = {
"type": "ir.actions.act_window",
"view_mode": "tree,form",
"res_model": model._name,
}
</field>
</record>
-->
<!-- Top menu item -->
<!-- <menuitem name="donation_qualifier" id="donation_qualifier.menu_root" parent="contacts.menu_contacts"/> -->
<menuitem id="donation_qualifier_title_menu" name ="Qualifiers"
parent="donation_main.donation_top_menu" sequence="21"/>
<menuitem id="donation_qualifier_menu" action="qualifier_action"
parent="donation_qualifier_title_menu" sequence="1"/>
<menuitem id="donation_categoryqualifier_menu" action="category_action"
parent="donation_qualifier_title_menu" sequence="2"/>
<!-- entries menu -->
<!-- <menuitem name="categories" id="donation_qualifier.category" parent="donation_qualifier_menu" action="donation_qualifier.category_action_window"/>
<menuitem name="qualifiers" id="donation_qualifier.qualifier" parent="donation_qualifier_menu" action="donation_qualifier.qualifier_action_window"/> -->
<!-- actions -->
<!-- <menuitem name="List" id="donation_qualifier.menu_1_list" parent="donation_qualifier.menu_1"
action="donation_qualifier.action_window"/> -->
<!-- <menuitem name="Server to list" id="donation_qualifier" parent="donation_qualifier.menu_2"
action="donation_qualifier.action_server"/> -->
</data>
</odoo>

Loading…
Cancel
Save