From b30cc93d3bbae00d1d0adb73b4dea3b0a0ceb553 Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Mon, 17 Mar 2025 13:43:04 +0100 Subject: [PATCH 01/16] initial commit --- realestatinator/.__manifest__.py.swp | Bin 0 -> 12288 bytes realestatinator/__init__.py | 3 +++ realestatinator/__manifest__.py | 17 +++++++++++++++++ realestatinator/models/.estate_property.py.swp | Bin 0 -> 12288 bytes realestatinator/models/__init__.py | 3 +++ realestatinator/models/estate_property.py | 10 ++++++++++ 6 files changed, 33 insertions(+) create mode 100644 realestatinator/.__manifest__.py.swp create mode 100644 realestatinator/__init__.py create mode 100644 realestatinator/__manifest__.py create mode 100644 realestatinator/models/.estate_property.py.swp create mode 100644 realestatinator/models/__init__.py create mode 100644 realestatinator/models/estate_property.py diff --git a/realestatinator/.__manifest__.py.swp b/realestatinator/.__manifest__.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..981b16fefad8d21581b2712ae06782e0f4147d4f GIT binary patch literal 12288 zcmeI2!D|#T7{$}x_MldK@R}+(P@LUu>!B0`K@^GzBGrq?nBB?l2GU8$WRykJKS2Dq zJc(XC3!;C6CttFo2M@JJD{tU!*!O+;lKI`1eUtIy!~1f7xGV5%2ytuk^ZfF=8{)QG z7p`_L*?)WHD!S4tADut3^>rFJ${(?dE*NFoQP9fjHmYbEj0vNvI#!LD!K$jEU!FLS zMG_!^(-G+6tlU2*_I7v1X~WekTXOT#qtoqW7YUF636KB@kN^pg011%5e?cJnHSq>- zvfjVV#eQA;W9`3kApsH~0TLhq5+DH*AOR8}0TLhq5;%hdR4s%(FT@8Z{r~^#_y6|` zLVSb1Lhqrs&@<>BbQ9WxwxMg#2J{2_zd)a$k5Ha>26^zxBtQZrKmsH{0wh2JBtQZr zKmz|hfmcEdisw4C#x=!(EXKo~;yNsauz6(~gv_mle;2WHoqg}EnId_f+mAw*-M&#x ztVVP1K1Khac%dh0;GmeOR_D>R_PVKCG(K4!v~VFE{UEq5Zsisnpyw_ulYR6%_WlsD z_d6-}t`BqWy`R=jgYo@^id99%g^F^at#9Shb#i8!TBg*z%&~br%v&3EoUU7>Lb)oG at3*A@FOm0^<#s8jt~Sm5K;|%Ta>P$(I*%v- literal 0 HcmV?d00001 diff --git a/realestatinator/__init__.py b/realestatinator/__init__.py new file mode 100644 index 00000000000..cde864bae21 --- /dev/null +++ b/realestatinator/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import models diff --git a/realestatinator/__manifest__.py b/realestatinator/__manifest__.py new file mode 100644 index 00000000000..c8187ca6948 --- /dev/null +++ b/realestatinator/__manifest__.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- + +{ + 'name': 'real-estate-inator', + 'description': 'Inator that helps you find real estate.', + 'category': 'Tutorials/RealEstateInator', + 'author': 'Prout!', + 'depends': [ + 'base', + 'web', + ], + 'installable': True, + 'application': True, + 'auto_install': False, + 'version': '0.1', + +} diff --git a/realestatinator/models/.estate_property.py.swp b/realestatinator/models/.estate_property.py.swp new file mode 100644 index 0000000000000000000000000000000000000000..04583ec2a760f726c3cbf51f10d68333506ba983 GIT binary patch literal 12288 zcmeI&F-s#s6bJBUx(KI-7T1nitbv%s97qsS1;G@G;GM0EnU}b**;!|2i(GMj7C*xE z_dT@J524st_$JxFVUcT9{sS+=zBe<;{JOC3qIK3kQk_PdWPBxh`F1zDJ=~+7t&la= zhV=i&NPD}J=*-(};nLsXz~=PB7v8#9CwbGcPB{14$Eh6SnqzBN($f^5XU=Bq{G^dh z79Ncv1R$_Tpzy<;&KLUL-fe|tTbmndeeLI>9jHM70uX=z1Rwwb2tWV=pG?4KOLQ%F zs+9LyF6X5;bNPq~0uX=z1Rwwb2tWV=5P$##AOL|6D4-3|pB17fiSYh^{{R1BmFQmL zuf&bSFA0_~5^ag+a?fMfhXDZyKmY;|fB*y_009U<00Izrj{;Syrh3e(tA;TrCU5jE zwcC!4B^T9|2o<7&8noFJ2!9Uykspk>P38!UAPBA>xMdG`y z8d3G!I>S!BFPd+TBxyJwxH$8%O+zVk!mC-|yPEgChh^nYjo!4xM>I%uo~wh Date: Mon, 17 Mar 2025 14:00:05 +0100 Subject: [PATCH 02/16] created estate_property model --- .../models/.estate_property.py.swp | Bin 12288 -> 12288 bytes realestatinator/models/estate_property.py | 14 +++++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/realestatinator/models/.estate_property.py.swp b/realestatinator/models/.estate_property.py.swp index 04583ec2a760f726c3cbf51f10d68333506ba983..aa501ad7b25e13e597007ecdf979c7e801ec2d8e 100644 GIT binary patch delta 645 zcmZ`$y-or_5MJ#_z=MWHi!(7fNC+AWv>_$}MuL8@p5p67HO#a m0mamH6pB&{OEZg7Q*1+uN>g Date: Mon, 17 Mar 2025 14:34:50 +0100 Subject: [PATCH 03/16] ch.5 - added permissions for model estate_property --- realestatinator/security/ir.model.access.csv | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 realestatinator/security/ir.model.access.csv diff --git a/realestatinator/security/ir.model.access.csv b/realestatinator/security/ir.model.access.csv new file mode 100644 index 00000000000..417deb122c9 --- /dev/null +++ b/realestatinator/security/ir.model.access.csv @@ -0,0 +1,5 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +realestatinator.access_estate_property,access_estate_property,realestatinator.model_estate_property,base.group_user,1,1,1,1 +realestatinator.access_estate_property_type,access_estate_property_type,realestatinator.model_estate_property_type,base.group_user,1,1,1,1 +realestatinator.access_estate_property_tags,access_estate_property_tags,realestatinator.model_estate_property_tags,base.group_user,1,1,1,1 +realestatinator.access_estate_property_offer,access_estate_property_offer,realestatinator.model_estate_property_offer,base.group_user,1,1,1,1 From bcac66a1df6a0bf1f568f2b2bd77e933642e3d38 Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Mon, 17 Mar 2025 14:34:50 +0100 Subject: [PATCH 04/16] ch.5 - added permissions for model estate_property --- realestatinator/.__manifest__.py.swp | Bin 12288 -> 12288 bytes realestatinator/__manifest__.py | 3 +++ .../security/.ir.model.access.csv.swp | Bin 0 -> 12288 bytes 3 files changed, 3 insertions(+) create mode 100644 realestatinator/security/.ir.model.access.csv.swp diff --git a/realestatinator/.__manifest__.py.swp b/realestatinator/.__manifest__.py.swp index 981b16fefad8d21581b2712ae06782e0f4147d4f..78b6030839f4a7e0d67b9410e7ebc3b2830dceab 100644 GIT binary patch delta 169 zcmZojXh={l@DnKV6^QQx@kt=w2*mS%crFlwRL|twtSF$($6Ct( zgp*I}C21C?CYKgvmQ?Cz7U|{Yr=;fSB_=1Q78mO!7niB)FmS4;B$gzqTPZ|OR@J`^ E0BGeaxBvhE delta 105 zcmZojXh={5UL`2y+!55<$P@i;iQB~{BF zen*L&lM`G1wkT)2c)ov}Zo(D$c1HAl^^?XAYr0coQe3Gj{8vkvRr8FMR+UFnKdK3% z`eL0`TC&VUTChwQ%d9N?G&(XOaa!74Bz2f8F0zm%i7+Ni%-hk~@el$KI4I!k%Y1V} z*Q@2C%DJ3fOeg102h;HY0uX=z1Rwwb2tWV=5E!0-El2d}w>56J*7c+IzUzm#bLl76-R>r1Rwwb2tWV=5P$## zAOHaf3|nBUr3lf^6j0(|L&k^lez literal 0 HcmV?d00001 From 672427119a18d06c3f495d18d97081d5b23d2a29 Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Mon, 17 Mar 2025 16:10:04 +0100 Subject: [PATCH 05/16] ch.5 - added fields and restrictions to estate_property model --- .gitignore | 3 ++ realestatinator/.__manifest__.py.swp | Bin 12288 -> 12288 bytes realestatinator/__manifest__.py | 2 ++ .../models/.estate_property.py.swp | Bin 12288 -> 12288 bytes realestatinator/models/estate_property.py | 31 +++++++++++++----- .../security/.ir.model.access.csv.swp | Bin 12288 -> 0 bytes realestatinator/views/estate_menus.xml | 8 +++++ .../views/estate_property_views.xml | 8 +++++ 8 files changed, 43 insertions(+), 9 deletions(-) delete mode 100644 realestatinator/security/.ir.model.access.csv.swp create mode 100644 realestatinator/views/estate_menus.xml create mode 100644 realestatinator/views/estate_property_views.xml diff --git a/.gitignore b/.gitignore index b6e47617de1..26e67f9cb76 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,6 @@ dmypy.json # Pyre type checker .pyre/ + +#editor +*.swp diff --git a/realestatinator/.__manifest__.py.swp b/realestatinator/.__manifest__.py.swp index 78b6030839f4a7e0d67b9410e7ebc3b2830dceab..efc0a28548765b083287c10c7b549b6178042bcb 100644 GIT binary patch delta 189 zcmZojXh={O&FZ>nHcg@^7AJyRN3fqhM!Svv!K9d ze%@!i3=C0x5T#<11r@B7t^j#EfOrcK&jaEPAT9vnSRjr8;wZk&iUN;$IcpghIMvHi zi;5@D)=RW0%S delta 121 zcmZojXh={f426vrnK5;{Tv0is?=F?-^2HVz_Dq$?cbprFKwxPXyRbQMu|Nj5;Wg-56et^D#9zz6aXbXBC`s*bj zeuX}Tu0nrb6yitdE9fz_54{V$4*l|?5Z^=JLSI5pp(oI7=nd#O=y%lc9rQKy6e^)u z*E7hKOJ)L0fC(@GCcp%k02BCc5=do1pUXia_i*VCQfa4CauY`x-*hszpKLiAc+NzgJoU|$#kN@2!QCzlc~11vBvP17?lRmeJk7|ZD6sZ-uH!yGh!un$ z5Ta&hp+E>6A!MpDrK#%Dtn6U&BVeAKU4gtEy~#G}3yBU$J8S1>WRf=;7dmXwZ(#+x zH6efL@@%EZo5m`i%6q|z6-cjbVV0x&Zb5@2v*mJBKRD5&M9bQ{3yt$JQAa8_ z>L53{Uv_=I4;Riv?K6~wP;A%b?}}~CUsy3zTBob`-fFc>aX#j@@Q2mt?JIrkTiVKJ zm?7`B+c{M6seyIo^77=lxKEFKc%+4zpI##OV2cq1POohM=BKFQ}LUX|vJ4$#7!z4!---`e8< delta 270 zcmZojXh={LF`}%+ZDuig|Ndx>~M9> zSWSrD)V#@ab;Tze=}JpOL=w|e6>JsKGE;L>iuIiG^K()Y^E4(`=-Ny^s4L3_R8yRq alara3KG{J}a5UL`2y+!55<$P@i;iQB~{BF zen*L&lM`G1wkT)2c)ov}Zo(D$c1HAl^^?XAYr0coQe3Gj{8vkvRr8FMR+UFnKdK3% z`eL0`TC&VUTChwQ%d9N?G&(XOaa!74Bz2f8F0zm%i7+Ni%-hk~@el$KI4I!k%Y1V} z*Q@2C%DJ3fOeg102h;HY0uX=z1Rwwb2tWV=5E!0-El2d}w>56J*7c+IzUzm#bLl76-R>r1Rwwb2tWV=5P$## zAOHaf3|nBUr3lf^6j0(|L&k^lez diff --git a/realestatinator/views/estate_menus.xml b/realestatinator/views/estate_menus.xml new file mode 100644 index 00000000000..1dce87f8b1d --- /dev/null +++ b/realestatinator/views/estate_menus.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/realestatinator/views/estate_property_views.xml b/realestatinator/views/estate_property_views.xml new file mode 100644 index 00000000000..227f4742c2f --- /dev/null +++ b/realestatinator/views/estate_property_views.xml @@ -0,0 +1,8 @@ + + + + Estate Property Model Action + estate_property + kanban,form + + From 396f45203f7674ddf9af66563306a4d4c82f94a6 Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Mon, 17 Mar 2025 17:16:20 +0100 Subject: [PATCH 06/16] ch.6 - added search parameters, filters & group by --- .../models/.estate_property.py.swp | Bin 12288 -> 12288 bytes realestatinator/models/estate_property.py | 16 ++-- .../views/estate_property_views.xml | 80 +++++++++++++++++- 3 files changed, 85 insertions(+), 11 deletions(-) diff --git a/realestatinator/models/.estate_property.py.swp b/realestatinator/models/.estate_property.py.swp index fac363ba13a1b01c6dfd4b8c0f29cdd2857ee494..f4552285a8ccf0225ba921cbf95062edc9194768 100644 GIT binary patch delta 293 zcmZojXh={WnHcg@^7AKdRN3fqK%TXZi-AFH zGN*!Z>H|IohCM*+0>r{Ve3F-eVLA|J0kJC(D*^F;9tMU>K->hx`9K^4#9lyb1;l1R z%nZb5xfvLC1My@a&IaOeAhrTxbs$#TyilQ)YjeJKHzT`yVo^$Jp2Fl`Iu>H;P>y3! zYNEO(17|u|ZgQNi*yKQ6XHIpu#N@=3)ME9?Q*;|Rf>U#HGV{_ECX47f38=eP6r?7X rq^2kY6lEr-s!tBn(_?g*+^Uz%r5=!9T#}rh0u+3qCyUHw)&C6ue3wbZ delta 231 zcmZojXh={WnHcg@^7AKdRN3fqK%VtD7Xw57 zWKIR+)K`2A3>Sbn0*K9l_$x01!(kwv2EqQ$EGGZeNt&FY+c5cquG3^EJw3*h$%T5!lke%tPG;5r4FEdl BH+cX6 diff --git a/realestatinator/models/estate_property.py b/realestatinator/models/estate_property.py index 2f33035782b..51f5d7b6e0e 100644 --- a/realestatinator/models/estate_property.py +++ b/realestatinator/models/estate_property.py @@ -7,18 +7,18 @@ class EstatePropery(models.Model): sequence = fields.Integer('Sequence', default=0) name = fields.Char('Name', required=True) - description = fields.Text() - postcode = fields.Char() - date_availability = fields.Date('Available date', copy=False, default=fields.Date.add(fields.Date.today(), months=+3)) - expected_price = fields.Float() - selling_price = fields.Float('Price', readonly=True, copy=False) + description = fields.Text('Postcode') + postcode = fields.Char('Postcode') + date_availability = fields.Date('Available Date', copy=False, default=fields.Date.add(fields.Date.today(), months=+3)) + expected_price = fields.Float('Expected Price') + selling_price = fields.Float('Selling Price', readonly=True, copy=False) bedrooms = fields.Integer('Bedrooms', default=2) living_area = fields.Integer('Living Area') - facades = fields.Integer() + facades = fields.Integer('Facades') garage = fields.Boolean('Garage') garden = fields.Boolean('Garden') - garden_area = fields.Integer() - garden_orientation = fields.Selection(string='Orientation', selection=[ + garden_area = fields.Integer('Garden Area') + garden_orientation = fields.Selection(string='Garden Orientation', selection=[ ('N', 'North'), ('S', 'South'), ('E', 'East'), diff --git a/realestatinator/views/estate_property_views.xml b/realestatinator/views/estate_property_views.xml index 227f4742c2f..c1fbb584907 100644 --- a/realestatinator/views/estate_property_views.xml +++ b/realestatinator/views/estate_property_views.xml @@ -1,8 +1,82 @@ - Estate Property Model Action - estate_property - kanban,form + Estate Property Model Action + estate_property + list,form + + + estate_property_list + estate_property + + + + + + + + + + + + + + estate_property_list + estate_property + +
+

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + estate_property_list + estate_property + + + + + + + + + + + + + + +
From ed421ed8536d4577a55fd8143b57cae73912046c Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Tue, 18 Mar 2025 10:54:33 +0100 Subject: [PATCH 07/16] ch.7 - added buyer, sales person, tags and offers --- realestatinator/.__manifest__.py.swp | Bin 12288 -> 12288 bytes realestatinator/__manifest__.py | 3 +++ .../models/.estate_property.py.swp | Bin 12288 -> 12288 bytes realestatinator/models/__init__.py | 5 +++++ realestatinator/models/estate_property.py | 12 +++++++---- .../models/estate_property_offer.py | 13 ++++++++++++ .../models/estate_property_tags.py | 7 +++++++ .../models/estate_property_type.py | 8 ++++++++ realestatinator/models/res_partner.py | 10 +++++++++ realestatinator/models/res_users.py | 8 ++++++++ realestatinator/views/estate_menus.xml | 6 ++++-- .../views/estate_property_offer_views.xml | 19 ++++++++++++++++++ .../views/estate_property_tags_views.xml | 8 ++++++++ .../views/estate_property_type_views.xml | 8 ++++++++ .../views/estate_property_views.xml | 11 ++++++++++ 15 files changed, 112 insertions(+), 6 deletions(-) create mode 100644 realestatinator/models/estate_property_offer.py create mode 100644 realestatinator/models/estate_property_tags.py create mode 100644 realestatinator/models/estate_property_type.py create mode 100644 realestatinator/models/res_partner.py create mode 100644 realestatinator/models/res_users.py create mode 100644 realestatinator/views/estate_property_offer_views.xml create mode 100644 realestatinator/views/estate_property_tags_views.xml create mode 100644 realestatinator/views/estate_property_type_views.xml diff --git a/realestatinator/.__manifest__.py.swp b/realestatinator/.__manifest__.py.swp index efc0a28548765b083287c10c7b549b6178042bcb..347af84e84283a4b4a55e6536ba7b5adf0051979 100644 GIT binary patch delta 165 zcmZojXh={O&FZ>nHcg@^7AJyRN3fqhM!Svv!K9d ze%@!i3=C0x5T#<11r_Y&b^v)>fOsAdcK~q#5XS;>3=l{0ZB`U`%sctEE+-IA-uzZi Gm=OTP)E!*_ diff --git a/realestatinator/__manifest__.py b/realestatinator/__manifest__.py index 88b8dcf2d95..8134c68e5df 100644 --- a/realestatinator/__manifest__.py +++ b/realestatinator/__manifest__.py @@ -12,6 +12,9 @@ 'data': [ 'security/ir.model.access.csv', 'views/estate_property_views.xml', + 'views/estate_property_type_views.xml', + 'views/estate_property_tags_views.xml', + 'views/estate_property_offer_views.xml', 'views/estate_menus.xml', ], 'installable': True, diff --git a/realestatinator/models/.estate_property.py.swp b/realestatinator/models/.estate_property.py.swp index f4552285a8ccf0225ba921cbf95062edc9194768..44d81ef29b6232cadeea4bb91d34064387119c8f 100644 GIT binary patch delta 681 zcmZ{gO>0v@6oyZWltztdU3Aff&Z0UAmaBA8N+DF+66m6)U=VTBPI}KxFW$^tW+sKZ zX^Q`#ro`?}_%k$6MQCC0HVy z8KPwEQ|GL?OdDpBOlZu>>B8yehsuN;&dz+Rl;2Gg9hH8j%E7FV{izDk=W9eS!F^Bx zZ_7jj5P=8a2KauJ=p#4+&%hJV0L$PO_px1Lx?V=z?fC zb?Nh|qZ(>rP!Z zb1zw=l2@I-Ew^EJk!K&KNOof;tvrN>Qwh6W)OALWdMk{K=Bl*pf}X?onD$Yw5j%wj z&ml*um-u?3y6sR2$4RtW+yU#uLfl88b}wW5zY3|cUSp`ykn4Fm;(e25^@d6u!{g6B ze3mjszsT<2W#*~#W5zqbwk%rskhS6MJJ%=5qaox&Ib2zMGbuOO?b|r@vC;XSwCeJx R+{S^jRoRMtGPrs7%MVGg$$tO< delta 270 zcmZojXh={WnHcg@^7AKdRN3fqhM!S+v!K9d ze%?AR1_m{5h*IUrf(q(c?EDN25BL}u_5iU95DNqGNnQqq=|G$X#I8WB1jPS&7#J=A zaT5^d191!xdjYW(5SsxpGZ3Ezn!Fo`Cj)Ud5QhV?6%eZfu^RVgMwU1(H4XK=)N*wl z1$93lrKzK#o}ZSMS`=TDnw*+hmYM>R@lQ+JEUGQUxY - - + + + + diff --git a/realestatinator/views/estate_property_offer_views.xml b/realestatinator/views/estate_property_offer_views.xml new file mode 100644 index 00000000000..b4340f5e444 --- /dev/null +++ b/realestatinator/views/estate_property_offer_views.xml @@ -0,0 +1,19 @@ + + + + Estate Property Offer + estate.property.offer + list,form + + + estate_property_offer_list + estate.property.offer + + + + + + + + + diff --git a/realestatinator/views/estate_property_tags_views.xml b/realestatinator/views/estate_property_tags_views.xml new file mode 100644 index 00000000000..63eb7d7dd2c --- /dev/null +++ b/realestatinator/views/estate_property_tags_views.xml @@ -0,0 +1,8 @@ + + + + Estate Property Tag + estate.property.tags + list,form + + diff --git a/realestatinator/views/estate_property_type_views.xml b/realestatinator/views/estate_property_type_views.xml new file mode 100644 index 00000000000..56df7266421 --- /dev/null +++ b/realestatinator/views/estate_property_type_views.xml @@ -0,0 +1,8 @@ + + + + Estate Property Type + estate.property.type + list,form + + diff --git a/realestatinator/views/estate_property_views.xml b/realestatinator/views/estate_property_views.xml index c1fbb584907..b702db1b176 100644 --- a/realestatinator/views/estate_property_views.xml +++ b/realestatinator/views/estate_property_views.xml @@ -11,6 +11,8 @@ + + @@ -26,6 +28,7 @@

+ @@ -41,6 +44,7 @@ + @@ -50,8 +54,13 @@ + + + + + @@ -71,11 +80,13 @@ + + From d5544e0e4a859e844f2475b779b6281df35c1767 Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Tue, 18 Mar 2025 13:10:36 +0100 Subject: [PATCH 08/16] ch.8 - added compute fields total_area, best_price, date_deadline, inverse function for validity and onchange function for garden --- .../models/.estate_property.py.swp | Bin 12288 -> 12288 bytes realestatinator/models/estate_property.py | 32 ++++++++++++++++-- .../models/estate_property_offer.py | 17 ++++++++-- .../views/estate_property_offer_views.xml | 2 ++ .../views/estate_property_views.xml | 2 ++ 5 files changed, 49 insertions(+), 4 deletions(-) diff --git a/realestatinator/models/.estate_property.py.swp b/realestatinator/models/.estate_property.py.swp index 44d81ef29b6232cadeea4bb91d34064387119c8f..d66cd64bb3c1de87cf7d829ca4d85e525f20a70f 100644 GIT binary patch delta 1220 zcmZ{i!D|yi6vkg_Tiv#r3KgqJ8ByGXCLt*zQmwQ`4_0gswR$LZv(3)Ng=A;h-HIM0 zg^C9cg5=_%{sZ3H9PC9<@M6)c#rCRyfD}D=@|)Sjq_qzGmf_8N-+b@wEESdtY$1E+ z#w~U+GeTJXL>uPU(%SR|%8L#XmJlyi&#qqk6p!WWNBei;)wNEdt*$6FFH5ktR@E|m*p6?Vneo4iAm{9v5 zDO-!Sh|gu`*>JN@VcXm{94p9FOwZ$1LRWdv)wKUREsBb_7;-~hs0vy(tJ0^%J?>gT zLT~9eb)}cGLbKd_KPpmo9yo3(3Jo(AYRp5vvW6oW-aEObA1OH=X|@dQ^3!&O zd<|{#YLv2}+UNA~k*nCSX*nFEHRQ*1qj^!QaXBf~Nv)C|?71y_ViRy%`;i_vrKZ$Y i)@oT#)*mNdcht|P-X0i$!xXa}Ubcc1s|X7(i~azQu}^{k delta 272 zcmXBOElWdT0LAgMDY6&mGs~jfpj-wQCkw+ODjNgCw27FeJok!t9TUxxy#}F zur)RrKbe6r$i`e`k= SpD@v37~5Xp9XlJwJ^cd7 + + diff --git a/realestatinator/views/estate_property_views.xml b/realestatinator/views/estate_property_views.xml index b702db1b176..39e4c1ad093 100644 --- a/realestatinator/views/estate_property_views.xml +++ b/realestatinator/views/estate_property_views.xml @@ -37,6 +37,7 @@ + @@ -52,6 +53,7 @@ + From 4c367c57792ecb6c6bfdfa97d2fd3454ad77efaa Mon Sep 17 00:00:00 2001 From: gato-odoo Date: Tue, 18 Mar 2025 14:17:51 +0100 Subject: [PATCH 09/16] ch.9 added sell and cancel buttons to estate property form, added accept and refuse buttons to offers. --- realestatinator/models/estate_property.py | 23 ++++++++++++++++++- .../models/estate_property_offer.py | 19 +++++++++++++-- .../views/estate_property_offer_views.xml | 2 ++ .../views/estate_property_views.xml | 4 ++++ 4 files changed, 45 insertions(+), 3 deletions(-) diff --git a/realestatinator/models/estate_property.py b/realestatinator/models/estate_property.py index 666a8667a03..aa6454616b9 100644 --- a/realestatinator/models/estate_property.py +++ b/realestatinator/models/estate_property.py @@ -1,4 +1,4 @@ -from odoo import api, fields, models +from odoo import api, exceptions, fields, models class EstatePropery(models.Model): _name = 'estate_property' @@ -65,3 +65,24 @@ def _set_garden_properties(self): else: record.garden_orientation = '' record.garden_area = 0 + + def mark_cancelled(self): + for record in self: + if record.state == 'cancelled': + raise exceptions.UserError('This property is already cancelled.') + + if record.state == 'sold': + raise exceptions.UserError('This property cannot be cancelled because it has already been sold.') + + record.state = 'cancelled' + + def mark_sold(self): + for record in self: + if record.state == 'sold': + raise exceptions.UserError('This property is already sold.') + + + if record.state == 'cancelled': + raise exceptions.UserError('This property cannot be sold because it has already been cancelled.') + + record.state = 'sold' diff --git a/realestatinator/models/estate_property_offer.py b/realestatinator/models/estate_property_offer.py index b3919a98347..adc6cae1c72 100644 --- a/realestatinator/models/estate_property_offer.py +++ b/realestatinator/models/estate_property_offer.py @@ -1,6 +1,6 @@ -from odoo import api, fields, models +from odoo import api, exceptions, fields, models -class EstatePropertyTags(models.Model): +class EstatePropertyOffer(models.Model): _name = 'estate.property.offer' _description = 'estate property offer' @@ -24,3 +24,18 @@ def _inverse_deadline(self): for record in self: delta = record.date_deadline - record.creation_date record.validity = delta.days + + def refuse_offer(self): + for record in self: + if record.status == 'accepted': + record.property_id.selling_price = 0 + record.property_id.buyer = None + record.status = 'refused' + + def accept_offer(self): + for record in self: + if record.property_id.selling_price != 0: + raise exceptions.UserError('An offer as already been accepted for this property.') + record.status = 'accepted' + record.property_id.selling_price = record.price + record.property_id.buyer = record.partner_id diff --git a/realestatinator/views/estate_property_offer_views.xml b/realestatinator/views/estate_property_offer_views.xml index 3d053f56669..41eb3d32d2c 100644 --- a/realestatinator/views/estate_property_offer_views.xml +++ b/realestatinator/views/estate_property_offer_views.xml @@ -12,6 +12,8 @@ +