Skip to content

Commit bb74433

Browse files
committed
[IMP] Added integration to res.user
1 parent c731814 commit bb74433

7 files changed

Lines changed: 48 additions & 10 deletions

File tree

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
"views/estate_property_type_views.xml",
2828
"views/estate_tag_views.xml",
2929
"views/estate_menu_views.xml",
30+
"views/res_user_views.xml"
3031
],
3132
'assets': {
3233
},

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_offer
44
from . import estate_property
5+
from . import res_users

estate/models/estate_property.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,12 @@ def action_set_as_sold(self):
107107
property.stage = "sold"
108108
return True
109109

110+
@api.ondelete(at_uninstall=False)
111+
def _unlink_except_if_advanced_stage(self):
112+
for property in self:
113+
if not property.stage in ["new", "cancelled"]:
114+
raise UserError(_("You cannot delete this property (%s), it is not in a new or cancelled stage.", property.name))
115+
110116
_check_bedroom_number = models.Constraint(
111117
'CHECK(bedroom_number >= 0)',
112118
'The number of bedrooms can\'t be negative.',

estate/models/estate_property_offer.py

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

44

55
class PropertyOffer(models.Model):
@@ -36,7 +36,7 @@ def _seven_days_from_now_date(self):
3636

3737
sequence = fields.Integer("Sequence", default=0)
3838

39-
# Beginning of the deadline part
39+
# Deadline part
4040
@api.depends("deadline")
4141
def _compute_validity(self):
4242
for offer in self:
@@ -48,9 +48,7 @@ def _inverse_validity(self):
4848
for offer in self:
4949
offer.deadline = fields.Date.add(offer.creation_date, days=offer.validity)
5050

51-
# End of the deadline part
52-
53-
# Beginning of the currency part
51+
# Currency part
5452

5553
# Translate currency to the one of the property so it's easier to compare
5654
# Also, the webpage doesn't like showing multiple currency signs (as $ and €),
@@ -66,9 +64,7 @@ def _compute_translated_price(self):
6664
for offer in self:
6765
offer.translated_price = offer._compute_currency()
6866

69-
# End of the currency part
70-
71-
# Beginning of the state / validation part
67+
# Validation part
7268
def action_confirm(self):
7369
for offer in self:
7470
if offer.property_id.stage in ["offer_accepted", "sold", "cancelled"]:
@@ -82,7 +78,17 @@ def action_refuse(self):
8278
for offer in self:
8379
offer.status = "refused"
8480

85-
# End of the state / validation part
81+
@api.model_create_multi
82+
def create(self, vals_list):
83+
for val in vals_list:
84+
property = self.env["estate.property"].browse(val["property_id"])
85+
if property.stage == "new":
86+
property.stage = "offer_received"
87+
88+
if property.stage != "offer_received":
89+
raise ValidationError(_("You can't create offers at this point"))
90+
91+
return super().create(vals_list)
8692

8793
_check_price = models.Constraint(
8894
'CHECK(price > 0)',

estate/models/res_users.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from odoo import fields, models
2+
3+
class ResUsers(models.Model):
4+
_inherit = "res.users"
5+
6+
# Domain doesn't work
7+
property_ids = fields.One2many("estate.property", "seller_id", string="Properties List",
8+
domain="[('available_from', '<=', 'today'), ('stage', '!=', 'cancelled'), ('stage', '!=', 'sold')]")

estate/security/ir.model.access.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@ id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink
22
access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1
33
access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1
44
access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1
5-
access_estate_tag,access_estate_tag,model_estate_tag,base.group_user,1,1,1,1
5+
access_estate_tag,access_estate_tag,model_estate_tag,base.group_user,1,1,1,1

estate/views/res_user_views.xml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="res_users_view_form" model="ir.ui.view">
4+
<field name="name">res.users.view.form.inherit.property</field>
5+
<field name="model">res.users</field>
6+
<field name="inherit_id" ref="base.view_users_form"/>
7+
<field name="arch" type="xml">
8+
<xpath expr="//notebook" position="inside">
9+
<page string="Real Estate Properties">
10+
<!-- The filter doesn't work, I'm too sick for this. To fix later -->
11+
<field name="property_ids" readonly="1" domain="[('available_from', '&gt;=', 'today'), ('stage', '!=', 'cancelled'), ('stage', '!=', 'sold')]"/>
12+
</page>
13+
</xpath>
14+
</field>
15+
</record>
16+
</odoo>

0 commit comments

Comments
 (0)