8000 [IMP] estate: Chapter 12 · odoo/tutorials@b4b888b · GitHub
[go: up one dir, main page]

Skip to content

Commit b4b888b

Browse files
committed
[IMP] estate: Chapter 12
Inheritance
1 parent a4863d5 commit b4b888b

File tree

10 files changed

+69
-2
lines changed

10 files changed

+69
-2
lines changed

.run/rd-demo.run.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<component name="ProjectRunConfigurationManager">
2+
<configuration default="false" name="rd-demo" type="Odoo" factoryName="Odoo">
3+
<module name="tutorials" />
4+
<option name="ENV_FILES" value="" />
5+
<option name="INTERPRETER_OPTIONS" value="" />
6+
<option name="PARENT_ENVS" value="true" />
7+
<envs>
8+
<env name="PYTHONUNBUFFERED" value="1" />
9+
</envs>
10+
<option name="SDK_HOME" value="$PROJECT_DIR$/../../../virtualenvs/18.0/bin/python/" />
11+
<option name="WORKING_DIRECTORY" value="" />
12+
<option name="IS_MODULE_SDK" value="true" />
13+
<option name="ADD_CONTENT_ROOTS" value="true" />
14+
<option name="ADD_SOURCE_ROOTS" value="true" />
15+
<EXTENSION ID="PythonCoverageRunConfigurationExtension" runner="coverage.py" />
16+
<option name="SCRIPT_NAME" value="$PROJECT_DIR$/../../../worktrees/saas-18.3/odoo/odoo-bin" />
17+
<option name="PARAMETERS" value="-c $PROJECT_DIR$/.odev/training_odoo.conf -u awesome_owl,awesome_clicker,awesome_gallery,awesome_dashboard,awesome_kanban,estate" />
18+
<option name="SHOW_COMMAND_LINE" value="false" />
19+
<option name="EMULATE_TERMINAL" value="true" />
20+
<method v="2" />
21+
</configuration>
22+
</component>

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
'views/estate_property_type_views.xml',
1818
'views/estate_property_tag_views.xml',
1919
'views/estate_property_offer_views.xml',
20+
'views/res_users_views.xml',
2021
'data/estate_menus.xml',
2122
],
2223
}

estate/data/estate_menus.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<menuitem id="estate_property_settings_menu" name="Settings">
88
<menuitem id="estate_property_type_model_menu_action" action="estate_property_type_model_action"/>
99
<menuitem id="estate_property_tag_model_menu_action" action="estate_property_tag_model_action"/>
10+
<menuitem id="inherited_users_model_menu_action" action="inherited_users_action"/>
1011
</menuitem>
1112
</menuitem>
1213
</odoo>

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
from . import estate_property_type
33
from . import estate_property_tag
44
from . import estate_property_offer
5+
from . import res_users

estate/models/estate_property.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,8 @@ def _check_offer_price(self):
9090
for record in self:
9191
if tools.float_utils.float_compare((record.expected_price * 0.9), record.selling_price, precision_rounding=0.01) >= 0 and not tools.float_utils.float_is_zero(record.selling_price, precision_rounding=0.001):
9292
raise ValidationError(_("Offer price cannot be lower than 90% of the expected price."))
93+
94+
@api.ondelete(at_uninstall=False)
95+
def _unlink_if_new_or_cancelled_property(self):
96+
if any(estate_property.state in ['offer_received', 'offer_accepted', 'sold'] for estate_property in self):
97+
raise UserError("Can't delete a property that is not new of cancelled!")

estate/models/estate_property_offer.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from odoo import fields, models, api
2+
from odoo.exceptions import UserError
23

34

45
class EstatePropertyOffer(models.Model):
@@ -39,3 +40,11 @@ def action_btn_refuse(self):
3940
for record in self:
4041
record.status = "refused"
4142
return True
43+
44+
@api.model_create_multi
45+
def create(self, vals_list):
46+
for vals in vals_list:
47+
self.env['estate.property'].browse(vals['property_id']).state = 'offer_received'
48+
if vals['price'] < self.env['estate.property'].browse(vals['property_id']).best_offer:
49+
raise UserError("Can't make a smaller offer than the best one currently recorded!")
50+
return super(EstatePropertyOffer, self).create(vals_list)

estate/models/res_users.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from odoo import fields, models
2+
3+
4+
class ResUsers(models.Model):
5+
_inherit = "res.users"
6+
7+
property_ids = fields.One2many("estate.property", "salesman_id", domain="")

estate/security/ir.model.access.csv

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,4 @@ access_estate_property,access_estate_property,model_estate_property,base.group_u
33
access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1
44
access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1
55
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1
6+
access_inherited_users,access_inherited_users,model_estate_property,base.group_user,1,1,1,1

estate/views/estate_property_offer_views.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,6 @@
1212
<button name="action_btn_accept" type="object" string="Accept" icon="fa-check" invisible="status=='accepted' or status=='refused'"/>
1313
<button name="action_btn_refuse" type="object" string="Refuse" icon="fa-times" invisible="status in ['accepted', 'refused']"/>
1414
<field name="status" optional="hide"/>
15-
<field name="property_id" optional="show"/>
16-
<field name="property_type_id" optional="show"/>
1715
</list>
1816
</field>
1917
</record>

estate/views/res_users_views.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="inherited_users_action" model="ir.actions.act_window">
4+
<field name="name">Users &amp; Companies</field>
5+
<field name="res_model">res.users</field>
6+
<field name="view_mode">list,form</field>
7+
<field name="context">{'search_default_availability': True}</field>
8+
</record>
9+
10+
<record id="view_users_form" model="ir.ui.view">
11+
<field name="name">res.users.form.inherit.estate</field>
12+
<field name="model">res.users</field>
13+
<field name="inherit_id" ref="base.view_users_form"/>
14+
<field name="arch" type="xml">
15+
<notebook position="inside">
16+
<page string="Real Estate Properties">
17+
<field name="property_ids"/>
18+
</page>
19+
</notebook>
20+
</field>
21+
</record>
22+
</odoo>

0 commit comments

Comments
 (0)
0