From e21f68599a9a1f3532c2fafe1a08ff5ad9b69a82 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Mon, 3 Aug 2026 18:35:43 +0530 Subject: [PATCH 01/17] [ADD] estate: initialize tutorial module Add the initial structure of the estate module, including the manifest, basic model, menu, and application icon, as part of the Odoo Server Framework 101 training. --- estate/.gitignore | 2 + estate/__init__.py | 1 + estate/__manifest__.py | 15 +++++ estate/models/__init__.py | 1 + estate/models/estate_property.py | 30 ++++++++++ estate/security/ir.model.access.csv | 2 + estate/static/description/icon.png | Bin 0 -> 24122 bytes estate/views/estate_menus.xml | 86 ++++++++++++++++++++++++++++ 8 files changed, 137 insertions(+) create mode 100644 estate/.gitignore create mode 100644 estate/__init__.py create mode 100644 estate/__manifest__.py create mode 100644 estate/models/__init__.py create mode 100644 estate/models/estate_property.py create mode 100644 estate/security/ir.model.access.csv create mode 100644 estate/static/description/icon.png create mode 100644 estate/views/estate_menus.xml diff --git a/estate/.gitignore b/estate/.gitignore new file mode 100644 index 00000000000..43ae0e2a6c6 --- /dev/null +++ b/estate/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.py[cod] diff --git a/estate/__init__.py b/estate/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/estate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/estate/__manifest__.py b/estate/__manifest__.py new file mode 100644 index 00000000000..0d2475c5c6c --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,15 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'Real Estate', + 'version': '1.0', + 'summary': 'Manage real estate properties', + 'category': 'Sales', + 'depends': ['base'], + 'data': [ + 'security/ir.model.access.csv', + 'views/estate_menus.xml', + ], + 'installable': True, + 'application': True, + 'license': 'LGPL-3', +} diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..5e1963c9d2f --- /dev/null +++ b/estate/models/__init__.py @@ -0,0 +1 @@ +from . import estate_property diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py new file mode 100644 index 00000000000..56b90051a15 --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,30 @@ +from odoo import models, fields + + +class EstateProperty(models.Model): + _name = "estate.property" + _description = "Real Estate Property" + + name = fields.Char(string="Property Name", required=True) + reference = fields.Char(string="Reference") + description = fields.Text(string="Description") + + expected_price = fields.Float(string="Expected Price") + selling_price = fields.Float(string="Selling Price") + + bedrooms = fields.Integer(string="Bedrooms") + living_area = fields.Float(string="Living Area (sqm)") + garden_area = fields.Float(string="Garden Area (sqm)") + + garden = fields.Boolean(string="Garden") + garage = fields.Boolean(string="Garage") + + state = fields.Selection([ + ('new', 'New'), + ('offer_received', 'Offer Received'), + ('offer_accepted', 'Offer Accepted'), + ('sold', 'Sold'), + ('cancelled', 'Cancelled'), + ], string="Status", default="new") + + active = fields.Boolean(default=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..f2146249f72 --- /dev/null +++ b/estate/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_estate_property,estate.property,model_estate_property,,1,1,1,1 diff --git a/estate/static/description/icon.png b/estate/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..aea18c1e845afe811cb8a30e9c395b7931d3e13e GIT binary patch literal 24122 zcmdRW^25>;X^<8P327LR&H+>!1_TU{4(SjHX#oN0?(V*a z@B7~SKinT+_`o?kRz1&JYj2`-w3P92Xm9`kz*kjK&;*xy+<#>4{TQz zLw5im_<8>Y>2mpE4gQkaL-B>jGZ$MAFH1KYz{|^v$HCdr-OAF{hR4OtE@Srz4FJFa zRR!7S-kIAoK8<8!Y0|fY&-9w+;u^|XP?1lt&`Fo%^`dI zk9rR?qSEbSL)y?|Axu`8+v%d8Iy+1w7sD&|yf&u%^sUPT$zja61z@*QNP5lyVJt-t&s)p}BJD{ocg32)VF!|DEVDy!W^Y`{v2jkl>v z&o&Oz`hge0>s$j5SItTe65mX@RsTT6)>LV5=EpgSF%;A<`>(v1v$6=MO19(flB?J2 zQ9A38eic(?F8v8kN6T392zDU$A~I8Q%_Om$As{|#T6Io5e__%`N9+N_^(Jdz_ zH6B`6h~Gn0&_@Qpeb2FKzD}Hx=aj8fTz%OACkERdyW}m?*AN+7cW&mafM3~SUWuDV zR90aJIDi!ctAumh#NX^WUCw}Sn?}D$u$u~hEptrscc-51gIh~TtX#`}ZCBC4H1h44 zX$%Y0S1m@-Zs^n5ovbHEYw_JObS@Y}Y0 z_~W1?gFZ&i#jkdW{qavtV=^AnO=~1xCT~!l`J?J7I$zPdK&>?%i@EQ9$P;MJ{pWHE zzy<1vnP+d}Gd=rHK*1FMy1@&~DuZTf0K9hOdm-UFhPMXCoaCDXu4-o=UVL{&A)nlyt2155$<$xM|he?D@ zu-gM`Va$nJwWR_JRC0Tpfc>vO272S|FTO8;>L<4y%)S!J=bsBEqET!|CSpCLLleZD z?KTv)egIRmfmco*mKtE!^AO<&DVx`MByQ?b6|p^mSQN`yD=TO9Dc(K|4R|u9C_CI8 zoU@ztathf)hSY$3B-F=XPBf@a4dArH;M1qRe*tRUH9d$ORX`Snr}Xf}LK~YkC;ssR zU}ULuDo#czCRE&hWiUs_6vt{T9yFvn4KueH5$o1-8o9Q}Ln9In6nplZ{Jb6wWVoB< z(u&Zeu%4{*8#O2g_ozmXz#=@fpm5ag_kCI>#I9MlwXP>yK%R~_=@`0p;flKOmy)pZ zR~?}LnZQepy<^D^iHYco>p#j_KfvAII6QrYC^0sA^??-7Svbj4V`~{v^J2VA>0qotAxa23=zQRPk-pDOtgnPO?KN>cCWatbLE(g z2+5*~b7@_YwFvFvwzIhOi@WPgKc{p%QpBgwFhE@MH;pnMJflVx;S$XTumL~2UwP*C zt`8R!Jx^&*WjsJ@WpQpi?8KHMoeNip*fauUu!5iShrJfZom^8D@~JObgSNGr5|##@ z*WkSWoS9kc8jrRM)%jdcG5$i>+Kv)=a@ZIzQ@;PoY3$wXt7_{$OmN{45fjg!{v0dX zI>GEWFAWRBytV0GBEG*=YMr3M?TR<4c&Yliw}69**L(=h{7)PEOB|AhgUOFnM!R%V z?UDk=d5ngIeONwb&H%KZz&29gS4qp^rG(56Lr?mEawl5J8A+nk)(4RK+_S%qCrcF4 z&E65c1$yrrPybr6MXdl&rl$5N()w2fV2%F&P@pjgHX`+TnvB5^Z~@T<$m(yuZMlSX z1br*9f9k=5dN{1+>iGGPb`f5+r9q8=AyVJAG@5hz-s8 z8+SbU+{#avii-jqr!H{dL>cN0L6p>g4E~)jpmO{G<9aTFIrl@aKJQUScDU}&&Q1`} zD)!Cs04GfYVmdp3C&M@KeN1^^xew^XISQIeGAC{(WSqH%!0E8%$1%++(uC~H0(!<+ zOds{=9j2q(sm}}T_upAPtl<@C{TahlXOg@g-C{AAegy+fdsVLyifW}SycJ+boElcSsIb6hAY4)b+;gHiaPBVaEsRj4^k8rG$p}3e5-;lI|s~W-TnC-?3tQ z5mwiH(`?m;KYLU1{iSYlv#IW1L3}0RH{~@p0gy&3 z$h@0E=%{#dgc-h7Ic8-f6(mbl4~ftyw2Q>$os%P8BJ({CK6{?hk*d}R)v?5-c!UL^%CC=iBda7P z0`id&b={gV5X#QYChwG*2rgD2EuHQrnSq+$j zK~u+5EcRjy?007O=QnG3I!k*$2)?17ci}xZ7>}Qhs-%Mu$ic z@2Bv~>sjFE&ooHdw9bFx&1{eXrxm;3?W=nN zHDyiqil%nI<>XCe)H5Zp(gLxp26?r?Pp<1)RT|?0QJi-$JtQY74m8N(or3W=iO#w7;nHCWRk;Pw>53 z=?7yg0roko06fhM&eOQ)|7S}JHFmcB+?2$sV4fUURd<`^Ce0r{uWf3&DNaA<5NO?= zeP}nhqXS0!g8f}DN-J~_7}iv}DIs*Z^%Sew3H-1p{`v_H5em!~>W|$AID2wF_t~A3 z14sB`cSUh>)`1U#c|lq0MV7q#XUw#O4QIg2-wYwJaIr-+&PQ|WMn7ARTG{);6IC8O zPtA3NF6Pp9plfZ$)O<0{`sxd;x*8fDkz?pK$s`vkvhvH|z>#AW7X;w!2NL2QezV*$ ztW|bE>{C<1XAjBH@SRV*Z4uvNvPbDp6%87Hr$PF*K=6CQH8&-FJcxF|4a~;HSbbPZ z?gR2GpP`XREXNjIOgO9>-VexH+TasDx?=zlH}vH0^OO3Gw|~e5snp6(4yv&;J+T7g z&09Fb?XG3@I%q&WI|0Rv5SZYPnW;30E(yt3-YDEs(F6fl>NseKM|eIbAwTPCbI5;b zr$OqnHQiRn8lyh=gnPAEz0gcNq8Lc5KZX9N&G`V&p&lZ@iFgkBl?}Qg=K<~jo`qRk zDUhn`w#%*A-a5#-{0mf?)MrN-W89$(G+*B*S=0dd5JPLFPGM}OSFgh#q+_JZZJ+FO zMp(6SdZ#b$6eg_DVyja_brN!$M?1XG^fdz`}3p zx$8}XXpmrfve)obJiFW6<(hk&(lXhBYK6a4ZQf(?Ni(L9$M<^ zB3+bEC;$tAj1`b66q1u3bR?e^7X^aeqAvjo+=OzhyKIfSQC?0817+wbS&V^>r{l-< zg{QDSsr@hwA_B_FTYKO~v#F<8@g=yxx>we4#2z7y2m0Bmz)B?eh!gikJS5?gPr%}I zTK)NW`?n0Q7TnamESk8*h8-vSKUKnD;Hn`ElSj2lb>pezGZ0gnp8VKepKs#tBL~$P zUoU@VLc zP~%HYAU^fAm0>>FyEi*d31<*R2#N^6acvxhJp7BQ$?5S=uF-#8JKXgF{Y86d_vWYY z%~1lxAol$=A+FwoVXVLjDXNIDkZ_(4Si?J2HATS-``sZreIouD>Yeu)SB4J(L{xR8>`N}>Q)8pT z?^OARbiZAQjy-G<^khAwZjPOqE!~PSjecm%M|9w7AYWP9Pn3WZY6u!=>0?PZAm5;& zfkV^^v_J5+RAvdlCS*X}o^0tb`}bp6R79l6QM=QQb;-OlhWuz!q?GxrMzH!cFMFyQyo^!QS0COVDlm8VV$&sY{kOhBUZdCjYql*#=McI2EO z;al9CQ4>6KYm8J|4OZVfdys)V10%xT!R~RjT7Qmo%hO)_nQvR7NB}~)fuS{i?odXv z@_;eky33=xJDA0VBU#a7td!VyCTt1LSN{GJeS7-m-Y6w{#321iPH0C)ncXwcM-y~`p( zV*V~odEd)Aq>{tlm!1lu+n>)OuU8CZ)FN<;ohw8@LJ#pi+lzw+Yel0CqR7?F^-OV} zy_3Fh9QD@xIsOg|>;_EKG0bmHY*hN|%a${w0hOOJmyMOf5-tP^0Zs47^;`UHWnyXt zU>cQ%tOC6Ef$W(lw+6l$mqN8L_VP*Bv@lsi#jo3e<= zdy8JV)c7PH5ch*Wa~S(@%uV8}i7S|?z_qLOg(pmpK>BtJX$y58c_*6Vayw>c?s9is z7e5E)+oQjR{C3DM`hcGev@=g41W`7~H31lMK#O=|cc;Q?*AVo~4?jr}G;iJ)E^P%9 zb^2b&M}APidnI=r?s(XAsK1&7xST_El@E@ z%$)3PFp%z-b^nq#I;x$s9J>G1rG?<#T~txLq%|K&${g95o&tf0Rn(Y*nacs^z=X{G~>*k^B*5U7top1dH%5EDR& zg5IwWpKl8qZ^}<|r06+UKi#gI1CvU3f_vko=Vz}kBx)DO6^JyE;@>tcxYa@wReWRkea;d>)e#U>XZC>GJSEzz>4z>(o&!u?%&4e znwgSA@}dXSEhQ+CZ|ZN*Y}~;~QoQe8JQWo{)Wz<>rQC@e&QoL%F1LCr;USwUymwb6_4Rcaup*yXK^urAK<)}HP>+6_r>IalL z))+dXKhkKJKM(zvaN{nK1KOgIg4d4ldnt8D?*F>r!wtS`j;;iC*bkCD{$yIFQ`Xs! zl_hm%AiD<@=zRCT3hV|IsDA^7f*w1J;?Q!-Pn){eidd*hT7FO?#V-EiU&{hW5x&fQ z!}uD@pKmvx#emN)^dXXZW?6?w&yMG4?J&Ol@?u1P04j7XBk1J9-oP*JL;(K5dpO&3tX6MaHwJX?kmc)(;Ht=LW2|$^+n7?R)gR?5X5ukFolNrB zk|J;2ghE{0Y-OJMCsE5J4jH}T*D5Sf?-hR(hfg;b!Kq+Y>DoBDkA+|X%V>0k4k|fs zIRDsXb?yW>CzCAL@1G8i9njTMYSZ>zom zVlE4G*wg4JEs#7L=J^nT5hh&dRsN>#tLSnY+Lyh7*a71VV+H3iPV&1O&!QsC7bmUOgEG{QQzO^7}Qfj`;U_ zGV{bqy0Xu>WlkV-E!_G@5i_m96?h9m`E!Fh#4nOco&G#Yl?(-s*98E5L?~9qRy?wM+S-08tHj)=O^X~Tv*3xX?-qO8R z6>!#f4?wM=!%UwuO2&NT4OI2y9t&Xy2olF1i5kE92Lr;v+(=A)^cS+x`a$2p5@@~{ z@crGZNXbL0D$yJnW3rJx7a~E)Y13Q>XyUrpiJtUb;im34u#EGYmGTi*)caE>=4%1b z7hgA1BN$>q|E#N>vwN5(w+*^y^To&iD=Uy>Om+>kBy8)O#^fBJq3}SD{N+KvF__)n zbQ1^$6}IFJ!J)~Wn?6MSkj?SBu9WQ$h3g)DW-u_Bz4hZtO7U!^k$UdQ(FeJV&-wyl z%JGiGePsHGKiQK88H;5H6n~$cI!d$6^Mk~E?F|?O7yA$-7pww6?z}$t%S^chsr_tl zIicW_$njaFpkDB2pr3m9NejSf%v88i zW?`DhyU4)I3|pX*vUuk@HNQp4`l7Q_2oFFMz*+I}C$=wMzATqt%B&aNG}xf$T)z0|-Y zO_=DvC5CTrV^kP|*q{U`vSd=1F=hi`iR0D}>&J7@7k#Fu2BX21upO$}0%0M>Q35bv zAI$>fJuLU7oiMQ&zbivAP~r-cCbv3FUG`F{A<;7n_S z5Rcs*I|9&mk}jA8WH4ew8St{Tix|!s$Eu$j^=ksljTxWShe!bK`>lb7G#Dy&OEgwc z#!2SA2kZD)y4;6&dBH4zU~M0kI2luSd1|W0HrDsw(u|vHgB~bIG7fZ4%WvSlOpuJ9 zcXR}G#7iRM1+L3mLvtEyrP26-N;?bEEgB3gmHEUnm)8P`7kvkyY&ahr|0#-;I&}nX zD2bOJ2KCjC8C9~C84G&p<`Q&LG4&7Gm0X2w*&r?i0O z>r!DH33ozbo_m`!15Fv)4Ht3c^XwKRzQ6~uRj!j%=1F#tA^y zY9j&MTh+I804ylcYyND0#MTVEfBk=A6`n3wGS12K>>@U9h6bO3MC+j(U@D1Z$a(Tq z@bHP@g24LtS>f~X#rNORfbJp}S`N=EOW?j3CKl^=m1Yhys-9~kHNpa(OMSWKa3Zf= z#PbVV?=b{)S+_*iIw~-3cq&-Iz&s>G>}@RAKcVHbT6!?bZH)cB6111wmqr%`(82;R zQxi;z3=PUF_1(7}D|p{KPKvnky$ZM^Y?I;^c>_(NA7Qe3df%N8{B2F_x7|YI|3Ls2 zz4*BgXxc?H3K-NHtA78xmJ|@%`-n|)NC}+hr*J-VYPw<7Sf3KW=K&wWqGmvEIPgyGUy}(9*Wc9cphN9Vht)>}VF!R9PWDSV4N|q)Hi_o# zU32Kr3~KAXq{w_E0Br_)Xsb_JPEV8RmEi|8(4G|HSZTuk%|}=1aua3Tq#vE+80N86 z1YRONmn;dg(JMD9_a|%JH1BtDPZLI#Hoy=jKPAMWmCOFI@U^RCB zp9rz>0T*cg`ofr#llU(fX5nA9YV;}V;{q>Qv%aZQV-0Ep*2)n)G!a3`@D>QdJXD|B zaTJS{XAfb2s_fEYyQB2w$P3Hsh9ceY;z;f_7v@NxY$U8n7p~*YSG+I|ANPg$@9&sa zR_%(uOej{cxWW8i>IDarv&v8GzLEm1BRNDDvw@D(GVEa4S4?9BDRrWdKPdK-vgsy$ zEUvr696ox2rt)R3kL@*XVOp3IAAWs;ep zYqEject{A#SIqXckMBgB<*d(~*K8-CZ0=Fanj3l=tH1m2l$Jt>i)Ad4v7n(5Q*i2BOVtr!b7sU{_M2$mP2h zC+H+YtB36(Q-OkTM##e|RUH8&?NuqC@qm~0lhtCd;Fx`r@mZwaCy|jK_K<8^-uGP4 zs7b*=tLhIn;=U3}a>xX*JpbF4$qpvOcACo0o2+96$Lf{7I<*^f#462Z!EGL>131cg zB6umlT@~dgiR6&hz(RK02$U5=IbNZ4pANDJT+$N6{+cGb?#hV#e$K1&$B$M=k~^iB z9m|Mew`52t*nTqra{c6V;+M)P?A*1fzO_rYL4?ZCu z5*!;l=0Y01yCiJJCLupZ3_)9wp8%F8`*R~V5Td#H?)@4k<_wN&GS%Tk6~hfJH)(Nw7+Txe#Af3^douevHJfc>z=0nGG{}{1F|m(1oZ>gua`}s?_jk zWXDRSW!$N9Mp~j#OgLfl(=@PzQ>6vu?I_+pz-OWbF(N?2j?fx}nPl-d2YNIDX zX0wrSyeO7X809>vWru|7`v~nf42vR1;y-ABsc>I&s>xrjU8t$##YfqM z+!xl>HJfc|B_>mGF{@KIV3Q{3HLhLQMKL%_)ii-%)77uvRaargh>vduo*bO9Q(~Sr z?sU&00^fzav`S2`YTSPFBJ7?XS@WZNoB{3fduWj;p}$#6N`9y%QlQR0@qvh!B<{TT z=hA*ob-Y&~iDeX2^WqOBPBa=aRd2!C?aHA`8DJ-78F6{ zLtpW;gxil!U#v4c4lFU1INvMWLH6xih}mWd7KUH7!%})yAo=_?%gkyCSF1?ST(4#} zBHP$`|Dc}{Ywv>h%;h$JMLv)-;0W`ul*)(@ljb*}ISvL3ob&n#%Eb_;;#_Hw{jcn& zA@?cGZib%EMU-q7h=0bi_@3XmE>w67c>gx;o%?Ah8vxc_d8pUhzN9iynu8ib(x<14 zScZ~R#{*-#3|s1GRhoUgH${IdA?p{YV)f%IPShKI-G~{3zf>A={XaXU^Bb+|Omo`D_~xofn#+s_E36P|STGoG)9 zw((Ob5g9SkQrh@)$Iepzrg`@@F-w^IAj~{eD7JDUT6TfRUPa>Jau&FSfA7$vUmT9tHJfq(g?y&pR(D8sL!sCG6?6s@ZeAhFyvLzw7@g+=7iu1>Q zM-=ldNtj2L2HTf$@ClNO~a_tc*xamFph6u|8#%c#+NpB z_m2DGQiI!pN+rij*tfKaB(K@bQ>^O&khC19Wg4Rw z?$b?mJpGo%Eh53dG}`KT+ZJtUuuei{$$oEjnRelN3&D>D4dC`t3l+ZoQoJQ_(svL6 z5A3D1WZ+i<`8Nqp2u3Y57ga&h-6!_8)YBSd4R>x5h(Yl;-1?CJ*BF7*TvKk3r0i#p zxq3zoL;{Z!a)NZEna%B@JZ2Dol~>=XxU4h*dNP87D6dP$mOS^oxb&ee_iKdqB@VC&?Hf8sN*H9PUMaXSXt&^}dmc;M2LiSPa2iVg^&d|#ew7NOn~p@QBn>JAhG zz)02)0(S%F!-e&_9iet2#$ON|!Jur5FeMAgcCj2P6j zQ!G~^Q1)NI2jg0CXZUpj4$GAIVAR%oNeGgjUYu3S9YwK9LX8KXd_zp)&J!H_+(q2| zOYcE`Ujpvv8sWtOI)3E)0|jM-GudsW8VAw8z@UwByKI*GB6~)hb(bPiw#7fINEzP~ zb@{uQ09h#ZoX6<7ckM3lp#?f5`kEOK;+22VvfZ{5$(x$6U9S9<=a-)ETiEfok{2en zh?o~QSBCV^=QSAWh#uZdtg<)IbtTUBVm3KycFgcMXWU!ILZ~JK^ZzJUIel7@> z357~J`FrEG@gzz6mxb=Xn=~c`uz)U6SNv5$X6yKj@Z)25rYrBHB8s+byJ<#NBJMjH zeemQQrOKYzeyO8xV2&{HTmV$CVA_$-E~=i2#K1g$v>4ZM z5v=RydZYV}#PQpm+d?N!br&+Ek>-#{7wFq&{o7YEb?j}#DB1u?7M0MqB@bQjR!!^U zO}iN5@N@3yia7&4*QuCwj!@A%#1EoA^)@L@k^)H;*U2iWR$%uJ9=L_yt?8Pt-a&ah zExev~Hp3YC+k|iH7C^%M#k)I$OKN**2Or(Nc5h11fdfOnw??N_eN&5{lozskd6o8L zaR?d@Gb{l6FFLJBWxcz~JVAs&a0_SSeF5aUPH%i_j*+FVkRSFzqLTMCJaZb`+E0zK zwDdzbev;OXwf_=laC@tg(bVqLfowV#K*5?CdNK6xF3qxNf*%50c5}FY2l6g;pdlmxvfuP?L>F;OBZR&+ z&QnSY{BhB@g-aOE?zu>zePPs}X62^D^sOZmiFaBRp%Kq7t%Lxr>z9>QR*(18@twOQ zQu>s}y?L`E7Vyakg4=m=;13li&s^C5a)?57AP#6?W2f(%XnidmD?eWaEvG=L=`O^C zhR@za>YGS8%iO75;n3b6xide6E#9M0mDJXf>I-LBgnc>$wV#ufWV5Sh(aaJ8c`bES zsS-~UY#HQ(k-o9GU>rC$3cQ|MnLVNRK3eTSYrRRK-?l1VkWXy9emUX9AQofBBzYwT zr{B)ni-DM=3S;qo!t9l#%3bb8r7WRoyG_#d09V%CMTaoF zPO>EhKAM_vN&YsFoM~iZ{n_2^mzF2ck+2rZRoc36jN%+0CJgB_k*cPeZ~@q<0i(M+ zROi&(6cp&zFV>)QIPZyy*tGspy00Ypx{cM~GcZtTc^ ziRSbwUMoS*v512s;kf=~>XyOVX!!%+nGUs0nwlJcD9I;f%MQkDIk;XR?kgdb3YG47 z@8Gg1ktx?zQw*sSf~R@eLdNOzl<@t>DYHpPGR{Xa*kh1$@NJ8tocM`~b#e{@zYLB8 zBu1NA(PQn6T#wyEXPb&)O?tlbFE}1<{(-?9Y(f6%EF=)$tUD<-%`NUT8XIkZ z)sh=R`O%O5^vz2h()$L2C(&U3RbG_04Q5rvMNK2duM2}jefTu=*cnum~$8TV{>#zQ^B@z4{~4}7dYYwDRsyXX`c0cY&r{f%emIlfHvFa}@? zLFMDo-hO|>dUuDoG=w1Y_)D3i$EHSNM9h5Y545VaQIi@NywXR^g<1Z1=|&k>clde= zXs`+YzZ)v?bn)QqFm3}su(?Hs1|IFOH`-6IG5@s9Nio+<&{|Vb`fRC~_$N`z3P$q< zrTW7c5a3Yq!f#er;53-Z5_J>l--*DzoC;a|b=El3AaSsmbNB6fwI!jf=5Uj5k9)eyWp;oXZtp6ymV!HQz5Dgs8wobTW_Su#gJaBOkIp;yY z{r8^{gGYD>IU*oQ0x?kAR0$MDAWl_Ra*Vv;Hz#kmc)GGFIFbkEt6Q4!dJq5h3up9L z{G4LT-qS&MJ2`nF?I`}1&dGj)7SCq`Wq?^T30*i5)5J`*sqIk6u=#@WK-9To8 zNtOA*b*#q1p& z8&=}C3?le@+R}`+qsHbUCBs$MgrCS}O90{aqL8Cf@#z z0&>53VJ1DBOURv{s#rPOvIxfzFMLEy*p#gNDNv4z=DP+ zjz$&ugzs9xVxqitpA=!)wH9PXxC-;FX$H3aC4S1l5VySDTlG+Fht3hRCTx}&3h;36R#z&`fASY&{r=nB|r1i zoYxgy{T-%_vPeY&Y3{-YdOl$^DmOeG>FW`Rxj3EMwFn0MQG5ve=<~%+AZ+5=B#@tI z?!EMFEy)FXZg{&gCZ*zO9aJVA^0i?k@I`c)@#Gc(HpaW^4>&K-z;T-{7bQxVbubam zV<)1$!BGyP%M&Bg^T%iwJqdyM^FHjQ8}7VGJfDY?Bp7u~RjMo6t++&9+_<7_o}f-D z(;_@jK2LON??``iYh%=p!z9cg!qTwUe#GnkTyv@x4@~UYS>Yyu>l(SKQ-sQo8$GdF zQ4}tiI|`extk?Xg?GJXiRE?fNo`C1qyWThOljEIka-{@zrM*0)3nErT1%-Kuf6_}N zIcIX%AlIasIoaI9GnM0pYepK7g=s~PDn98|DX4l3`w=)1c6B+W zJi^FLb)7C>;P0XNnO7yo6=NW9NdaJ}YF`>MvE5nSqp$WO zkEe;}V5eKD!}ofe4ZIHxyj?Q&n4_meb~ph~h-#jqP3=l+6amqpw^lpthR|(@oOiV!L z`>NGm@-cVud8k+U?ra8b?HjE+|4&r2$PLfDo)kBh==wJvN1t@S%f&M zO$_=Szs`nMvOPYd2me(q(1gB}@7-eLshrW72nceW)MS6}d83Af2BVT#Afof?v~yi8 zc7JoJXtxwgo%3@7d+GOVs$Q|hL$sf+3uT2g^6I-L>L>roNq&GQ$6!fZ3ntMPu9%u) z6JuwNC4p=ta2q2tE*1|Wgw-@%Q6APCk{`0h{#R~b!?Dri<}sh{o$K177VBjgZ7|aa zBKs_Obl`S88u}RZhK$IG*JYYNLA|E9`Lvv*?=-%mq%=e+RK(2a)3Of3EU->@Ih^nZ zp!n@m`-E3@7KZ(+92NHTf${XAD<5)*#!C55o?=Nh|Eezo8~4?l%&L7uz|7UJ7{@0u zR5TN zj!|JcV5&{H>T(M%#VI-Xlm$_vdXX9Y!Y?pyo~-g%UVKL?=N8g%QORa*95%ZvdV9O< z9_e-Zu!xCf2^&ERcC<5jg7@02K#uXOLn>Pa{uLei%;Dn3X7`ppH9AX0Ry}Z3RrZJs zDB=<-eD^l#{o0oL?m2ie?yO`RZXj-RNFp)aP?N!*Rd6GP{X(B{k2}hOprx?Nk*h3V zMELq$n-ScWyv(r~$nC=uLpog&Bu^vam?er<8iHFMVFq%NFn@ zPg!?(#*5wlfWDG-eQJL&{z5v*Mk|-i>sHH?sn}(*aD+)HMatq?1Ee7|?g^(VZufhN z&(64&d)IdpqI-0|rV|MNe(y?eX@Xi71@SFYS)2{uc-^K6T5%%SpN~U1m;`RL#W`qv zvcv!4e>R^sA1?b8oujIX7^R$Rj)Y4Sy0A;IVI8v>`FDv`jiyzmq&4JIDAn|Qw{gHe ze(k#Pk7r}X>~I#nGRL%cl33(}$BbG9H*M+7iA`hWTku$)6j>1$5q>|N;@NGNGdM^X z+9e4h^qaUf|CkpPRfs*>b(>Ig*+%-jn1@T^eLBV51uf3<165{ThWAGjNq zr}lW$K2q=6Kv`>Gg=d55n8={D)Q3*w&#{X3_H*`$CgQq27#S+&lX6_&d|fMZkMUaF zT~MJ)FWF|PT_u7$9PD@{Ry}~6HzhIq;_kKO>ex3GZbgU%v}!+oA1L%kJLq4*J)S0c zkTjORJK|=(KzBNzU;C5P;D7p~3uq;Xld0Kwlv2WjkaTIIbZ>#V-DIA!aU8r91PeCfrf5+0yIy#= z5w)U57<1I&@&4oVZE?+cd~zfo{i}FVGi}|0g6!|48_g0yUoHGsQO~bFAk)fif38HisbgMpftW$_@%g z3e5F1h=zvk0&@tlyD z%5^%N(#raX(SA5DdYfo-d;2w6eoBo%4E~GPQ`*F{M_ef-S~61|{(H^iShN$jx;-~{ zX&TUW9wdVb!e>3G_0^>YHG2KeibvN=d!<%u`g@Nqg8t+xYqZKnfEP8Dp4PZbVl>EQ zuv?XPK8>K`Z)C1?1k2Llnpt-0Lr;i!(B{`k-)(C`XCwg#8CDZ7{$+6UWv*W)-B0Z7 zOkkU3Z2+HT$h#2fCLTP1&ezzd{#GqY+8){R4%w2MbN8d~(_giR2zG!x*Ko$(cZ~*V z>dWY#qXPTK4r3zR38fS+bHqn-e;=HwaO<|YN);W|mb={l#YVA~J)3RTcsibf)cR2? zEid9B1AUv@GYn`*zM=US{^1SZd+3-rWFn{0SC&>#T$?CMz10v%?`>S9*xs0BQ4KN~ zA(hS}=Th7L<(c!D9mruVZSfS<@QH=L5tP9s=EJ#AZM(g*AVD@j{^7T4ag=Mpng}@l z!kc$Ajmq;HU61*}<4$gJra>|@AMadU0L?-6GapN~R^eb%$D`7RYD{c@HWb>HrJ3nB zSc1^0?YTawtU1k9k-IehC@iLR4{A^3E6fzd=e@r0i42Ta+U<>6%M5wZ)KU+;vV@jN zPY&mPvRp?)3LDBW$fB?juVL0)GC9|ab1;h{G-0UQy9d>jOy65ZZln*~yr#O&H=pCw zuPGZN3B6q%ol^7?w^5bEn-`2|Bs>K=xU>^Z6!vtuf)8Um`q>aOcMp9=7=dNCG%2f~ z@0RXQJdY^l=Cg#h$_}y!P3S*=t)_maEsFEeCdKoJomt^!CS=~zkCAA6_vRpS(amHn zN)r)V$M$$pUuEW3zX6HNnXknfjU53#=iB{k{MOTy-ujEFnlZagMnxrNk(Yrz<6cJM zX`L}aKC>qocl*OEk9Xc%5o4hzYNnjI(8epF9IoH=HvTf;0%FP4skl`L>SkvQATm;J zUR$^qv3H%rh+SREcB!wX7s=@Tht3+hYReU2b6Lq0GQRCI`@g5!vy5w(;wZ;kAFaB6 zU?wK+)MQ9_M?inIFlcDg{Bj=4VpS2mFrmjQvHqHBqn3F0y1JJ|6<#hBH0?5@0~bca z5u3^3YbUod_K1KXcO-iryiz5`;#J_;{d;OSKCC^riRz z7hpvb?N7rIM`+qWa1N(1V9PVL78R6t30hzXn(JF$d5hh8@z-`VqR|A73P*K zjEHQ#2*9f^Nokxc`|7DvxAJ&ZG?3%hD;V`U{fXv8TkZ#X5z0Z#qxYZuV942}_5QgU zjZ|C4D-4==@aD4!J#FdphML{hxorPVQ2MAE3c9OFQbO+|Oh9vdSn8#U>Nr7oh&^>) zAbD81Hh8t8h+5Z0X77uOEKS@8`X9wdFl$5FYXSu<+DQ|}y&D$!M5*o1@$rU_K*0p= zXf|F>tCuwIVIrPJ#CASqXMAVzaAGaUYky%0wc$HF&M0|nvCeia)j16k2K{H-`&7rV zw+#8SI(4$o8r1Ka(n_w&n+b^9m4uTYd1pe;9KLdGG28jHFvdbTLbuq^aOofxYIdhKpzRe7eaWA>rxy^(H(KBIZWMiA#RQ7_~3|ym>~9ciOaU-d#4# zGBgUF11a?*oDy*fJ6F&(d*&$68Os>+H+KiUq%~D!f3&Jy6lcO1tW1x(oKqaXM%M}= z5CYi|hA_6u9>&`yY}7TC{!|6Bw*Y7E+A4xs=nb|Ej~yl1P@OyB-{yUq3J1G0ak}o* z1I(p))d=y^=RBb@E(UZpHu59b!*j0i+x%wP2r?;YnN*oUC6resi+sARaLZIn>$jHIV)z^Kx6)s{DUfoDH=cVhZ!-2y z(-h~?W`-UgtaDJAENb1#32Mq)#Y7NqqRG5n`LdsqgH>`1B8Sn^cQ0u8JbP z>h3Pt^vxqU*cnzD-g#5G(}EY$_%Rz$P5g?seRzTQmz~Nwiuk(l{*f@TOd6n4VLCt9s_y?>Oki}iapU}qCTCBv` zzj3I7gAo;H9<^43=Au^GkBGQ+Z}XJCUscG$bf%ide0xa<`P_U{XzI zKE>>Zfw%h^*{l_ZJsFHlH+=9pETCJbxYuqd!3|HgYwfj&TxfYjfKnB7UQi4 zU3Qf|^Z8X{RVYpMb|jY~^Yz%w)`#a98UURlK5}Cq-cgYbTzk@wS3zg{tV7qWhT#u% zt_=3HRJc=2RciS$jQoBW$L3X1@uZm}t;S}$8yVldXue>8dO6eDaR);A{FU zt2Ms6+^nBk*n?=+PaI2!CFm!moxYowHO`(u6i=_RNL`KKl47a<9AEDRRIF#hLX zQ*VZz`dq;AR$KsMcBTXU3Q0(kA}8!{de6E0wMg+}r47P!ZfRO$0=c+3&cx4$4#-P% z1aY#ik6X2W*Hjn3N*2K(RlXvOZXeSG?;Ad?;|D4?nct&2fLcaBuX~t17;_;?e89D( z)9I2e{_zi$v16`knw!Fu0*dvk*F&HZoqyckg!4SFwxqnqLO9_N=;T{m;#+v~B{ce!U< zdi@;%>YfqD8Ui(V<91biEkv1mef#OyzUBipTEp|#Xzo=tstcc0l;_4;ai@>k>(KVt z@82W1U?1oGS!@F5K~0wqa$}e%bIIT60<7>+BTfNcX)H-`CXnddNyWi%Jtkb@c&zXx z!nw552Qv%>_1J#780pP7(s)M4JC}qEW0!a5r&U7S1usx8iJ!;3!0Zd9bk9zY;#-sH z1ij6Qo-@m?cSbV%(Yx+}*Ve&s$Lu>!hKu+R_GO;iPt)y&m^lK(4Y>w)viMKY4jV2Wrx3asKRPf;mi?Jkae3+F(wb-U ziQ9~;XzV>^`0ihrir;LAURcrzTW8)~Mz%yxnh179S_%$Wa@Gk;5x7Aj-X6F1Xs*Nr z-?GWkAP92_v{AUjc`wZ4jKv6CZDNMS?>W36v28sYJfVr30}80?)CMIn_t&3c6xW~8 z?mySP_SdIE^WKd$y%L(Ss-&&ctjv-nks9g*j#iBcn)Sr;oGPf1hh* zb-i?@7Tb1lQRQ7wo;2;v(vfv>-}_K8vmD%rHMiF>&oPESROiuIO{Nrt7}7h#pZqI0 zBk39yti!FAjpaAI&8rsnQHxtGOf8DC&@7?)mZY>m!&Z1*@Dj)g5_xOXnOuEd$bb?NSBnsyktsATEH?sB1#PSrK*B@WNfp=W3w|UvV*Dw%Fhz5}MdvOt(@DQBv(cO?p2rlG zo#jgn^%MN7sT1{4Gt<_@^t&1k8!igzb((bVhaqN3u@QX8FP#TYdZ7DYEAmvv)(}bw=xR%ZFChz zIPkNxmbFmt+NXw7#$@yt>%lmI6_0~3<$DmBP@B2!}g|lWvprCRtF&tMmyF|6Blwc$#ZG+Viu> z3@gpG);t<=2dUkkfE|DPm`I!^^Z2HDi;{cP3^`4cRr=D8B zf~P@kt9GI+L@ZJVdwvSJr;ixtbA6j93xpk3_KWN`q`{47P?_-tu^C1`$Nd|B5`(_h z+zyuc7YeZ7DkUIhchl{~Ea8=}4jES-bk*GOJaAq{oh?LaEp6rd0W{nLf_TpKhMI%3t6 zAEqr;naG?mboC*`~OWWoFhN=Zu&ya}mgKZ>@KlvONVB|5zOWq+$1 z!tKKVaI0hz5RP63l{d=17?-Gj$gjDm)ob2QpOBNg)e9E(04bnN1V>*NZ4>MIV!t00 z=hZP@k1~`vR%b{+D+o(v0anUX+K1TOb>ekh@vm}HELbHLNQq1T2n^y50YOo+R@F0= z^&-!^oNU>Srd~`|Yv@Hg?yd`r3&;%!139V?0QyA4L=tUh{PrI8?$q>Q6y3yQrlSnw zJ8999)WIvDxqx@lZ$C81=O%^O9S8Y{eX2{dAvMBC_m+qHhgnbzfW!j`K>Pb-AKr@% zcw|msGti9ZMI9cj44Le zCWPLI0r>L>F+?!SG#xlgG95;4b2VvPCvDX z?6nKh?pml|m6IxsFMK7v1NkZj!tDT4P1jikQ)zGEH#i2?hqQG!jehj_<=#-O@MIK> zHkc~I4O80r=68-ba>M)&u)>w|z@*pz`F_HaGf@ z#{e<8aX6pp}r%oV284 zcOh?BsDKw`^+x@>QwhdQ$#8)UH4X=pcIN$qtlukzul5hPVqvtv6eBrM4hE$sm>JE? zo32fsp45y9n1|Z5v1V|ZWao;k$pT;bz>ypS?H=Kj_KVp&B4J&nyUyg`q~Q26K&?BMm>agbABGon{8`yo==O=t$ z9Vs}B%`43iD;yyzZg>Xl{qX=Op9G-WZpK^iopF#13*Vh+Qbckce9LKx4L&ju4xfd5YKQ4*l z*jK#GlJjjy9a6H=#ZBLXSP0vSHCgUun&OhTr4E9&RO*AiUbq1Ns)N?>*Hm+EA^Rl8;BchG!cBA36Lnf2J=9xJo& zqHc4M%z4ofgqxNhc#|Js{$R`R!e7$gQRCt061=DhtS@F~4wD!w`(A#NgCHl`4P*aH zED92fbXQCHx|m&eD0m{83>VqzJj{2xS=6^FN_zr)rDFhoWJ+joSaPhbti6Fz0qiX4 zDi9z}nE|ZX_|F?~e@Yo@0KRH*|1J4=MGXSp%m9-=0Pxb213>Vl9Pssji8wz849Mt0 znRl6~N#mlwj?T}UdWg1OUbZ4uDeMl1v77{h`RT29a=)9KQ^A=R6fEY|hc1PKTKC82 z%I%Jv>nZ+CXNIPNN%@vK>YK>ePBs?9<5`^kC4gOf3aVWE-rk4?NMHzWZKd$M?&fAjoOE9OXc)I0RJ6TCm=8|aPfEegMY}u z!`GS=^sY@@W{|JW-PCsUR-sV(Xu}~0@Jy!k#@s#{>zbS!0{{)Lrnh5$B|E<|WB}_m%-4gFR=yq0>9Q%dj`95vDImU zEa*07xCnApX=Iuq=wSA|vuWCpKNk6>XsqVvc$iHq;&F8 zirwu4smSu7HnB zl1A6vORmq-6ib=;31G9j3MbBI=%E`MSbV;y62}B~8IiVYb|eQ&S{pjmMN>u|6jT^p zaZa`?Xr`YKKVzU$ey!)}WtH&bGIN>Xag}v4-k35dj-Zn^>5uMXhAZuV#HuJB>57y; z=~LpizRCW_Li0R4vv5PPxZ zaQBP+p7!wO+m6%?k(lYS7n2=}W*wny15R4`2@6|0-nI^K*p9YT#d2u(?j4Np#>wk@ zg`7&)$1o{u>I#OLDGeRt7j9oZYVJ0Fq+X*H?tW0X{@VLkDN*}E^JSZxW`vFQ+BIWg zCV#e4B|ZVpqMo_d!=xrpcwx7Roin4|!D+o4E~RkT)_BxzdJ22Gi~-Bo75UC`!nuw< zzU$s}b@?c7moB6uN31wY7@E`Bn{L9@qD=Q`SPB9TV~;g5r$5=B7YjNcYTr3i_bzc? zT+M+GUO9DPP&XZvoaq-7*XH-s0hG(qNhvDwr>@BPbtQ0GmFOQFyeDMS#DJm&epMLF#1CFw z?nT$BZ2p>^oh?vd30E)xUgQ}FTttfXs%4NV-}T8X8t{^JxJY)EtKLy$>JtC<8cNR- z8XC&TLv$Ou5Ae2)v{%c!X2p(G^JjHm9PjPzA^6*V|HDa!$=>hXD0>*yF;fY||xu3A*fb?iW7g|COuw~q6P3HN544SGin@}}^*g2H31lghuNn05WE zKn%MbaCF~r$EUt$K7GO8wjBivH?ga@3MZMY$IY$*0qF{lUc^A%DAQ&8tJh6W)U{=D`k;T@ zcI2&PMqR=yR&doKW%~T`;t~=&q?U;1czz&4&Dvy?5r4$BlkdhkMeerZn^_QDg_2_H zZE0yIJb{+J}@IC_ZDhK#xf)LVX+0Trs6NMNyvoe`| zg}0x}iZcYOzI1kWP!>2;iax8+07=hkV~VPVQFVITV#nI~M*9{cL0dyZLxUl7Z6P@T zyP>(cxk8L9sb~Rz1H}aF^uLt!^w{_$FLR`DJ_xGpW>$R)IXdDx`5$^>Al?cu7&N1W z=KmD~qYHkS^w5s6CMsKgEd{rng^=z*XKIpY#i&}YeXXwZ&5GZTP4F4N9H*SQ>_}Yt zgcvsaQyGLExF9Ab=2}w*FhkWLvbRP?ye{i@9kXe3MZ>6rw}-xV+iK4ch2=`mN-wj9jyrp=4LSpe^vCkOYio!sd1MV@puZa_c%s@ z;Yj>-IMnTui15*|h5wF+#)*RV_-7&@D+~TME5POsco}5gSZ@rn!Bo_(#|{XP1{M~0 z+2T1QKn6}89v(eO`(GE(W_ORlK0d?%yh)WIyzptl;MJ2I#as(ff03k0v_HaWy&1|G z{zf18=UM)fwMveydm1Ojd3|7?m(wL==vNI4M;@e_z9VO$L-WDGP~0Wh)%aY1SF8N# zx^wM$XhM+DfLu-=*`Li1(Vqn67~z7$E!K01It5ig%g@qMwGPZEl z5NL2#MR~czn(2t6?-B;nrvu}0)HiIfGFAP3dxrPQ`Y)pVag!L1xKNkL-Vs0Oxggui zb>Zulav;*Z8*OJ{gF&(sIhl?m*rlaloJry-)y;D9@@GRKG;Q(9ke0LxEY^abflB@b z< + + + + + estate.property.list + estate.property + + + + + + + + + + + + estate.property.form + estate.property + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + + + estate.property.search + estate.property + + + + + + + + + + + + Properties + estate.property + list,form + + + + + + + +
From 1944db4fb4b47ecc64ab862ac96562f4a5120596 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Tue, 4 Aug 2026 11:06:25 +0530 Subject: [PATCH 02/17] [FIX] estate: apply code formatting --- .gitignore | 1 + estate/__manifest__.py | 9 +++++---- estate/views/estate_menus.xml | 28 ++++++++++++++-------------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/.gitignore b/.gitignore index b6e47617de1..078cf3876be 100644 --- a/.gitignore +++ b/.gitignore @@ -127,3 +127,4 @@ dmypy.json # Pyre type checker .pyre/ +.idea/ \ No newline at end of file diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 0d2475c5c6c..cafe20e7955 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,4 +1,3 @@ -# -*- coding: utf-8 -*- { 'name': 'Real Estate', 'version': '1.0', @@ -6,10 +5,12 @@ 'category': 'Sales', 'depends': ['base'], 'data': [ - 'security/ir.model.access.csv', - 'views/estate_menus.xml', - ], + 'security/ir.model.access.csv', + 'views/estate_menus.xml', + ], 'installable': True, 'application': True, 'license': 'LGPL-3', + 'author': 'Hansil Chapadiya', + 'website': 'https://www.gstatic.com', } diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index 5f8f6b0ba34..0706c1432b7 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -2,18 +2,18 @@ - - estate.property.list - estate.property - - - - - - - - - + + estate.property.list + estate.property + + + + + + + + + estate.property.form @@ -75,8 +75,8 @@ + name="Real Estate" + web_icon="estate,static/description/icon.png"/> Date: Wed, 5 Aug 2026 10:57:30 +0530 Subject: [PATCH 03/17] =?UTF-8?q?[FIX]=20estate:=20put=20a=20group=20in=20?= =?UTF-8?q?that=20column.=20For=20the=20tutorial=E2=80=99s=20security=20ch?= =?UTF-8?q?apter?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- estate/security/ir.model.access.csv | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index f2146249f72..88e7f9b0d52 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_estate_property,estate.property,model_estate_property,,1,1,1,1 +access_estate_property,estate.property,model_estate_property,base.group_user,1,1,1,1 From b86f66010dcce47d7e67f8c3c6637db7777d9aad Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Wed, 5 Aug 2026 11:05:32 +0530 Subject: [PATCH 04/17] [ADD] app: initialize new module app --- app/__init__.py | 1 + app/__manifest__.py | 8 ++++++++ app/models/__init__.py | 1 + app/models/estate_property_model.py | 32 +++++++++++++++++++++++++++++ 4 files changed, 42 insertions(+) create mode 100644 app/__init__.py create mode 100644 app/__manifest__.py create mode 100644 app/models/__init__.py create mode 100644 app/models/estate_property_model.py diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 00000000000..0650744f6bc --- /dev/null +++ b/app/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/app/__manifest__.py b/app/__manifest__.py new file mode 100644 index 00000000000..cb5e95c9e2a --- /dev/null +++ b/app/__manifest__.py @@ -0,0 +1,8 @@ +{ + "name": "Real Estate App", + "depends": ["base"], + "application": True, + "data": [ + "security/ir.model.access.csv", + ] +} diff --git a/app/models/__init__.py b/app/models/__init__.py new file mode 100644 index 00000000000..20ee8397875 --- /dev/null +++ b/app/models/__init__.py @@ -0,0 +1 @@ +from . import estate_property_model diff --git a/app/models/estate_property_model.py b/app/models/estate_property_model.py new file mode 100644 index 00000000000..a7074c8d715 --- /dev/null +++ b/app/models/estate_property_model.py @@ -0,0 +1,32 @@ +from email.policy import default + +from odoo import fields, models + + +class EstatePropertyModel(models.Model): + _name = "estate.property.model" + _description = "Real Estate Property" + _order = "name" + + name = fields.Char('Property Name', required=True, translate=True) + description = fields.Text('Property Description', required=True) + date_availability = fields.Date() + postcode = fields.Char('Postal Code') + selling_price = fields.Float('Selling Price') + expected_price = fields.Float('Expected Price', required=True) + bedrooms = fields.Integer('No. of Bedrooms') + living_area = fields.Integer('Living Area') + facades = fields.Integer('Facades') + garage = fields.Boolean('Active', default=True) + garden = fields.Boolean('Active', default=False) + garden_area = fields.Integer('Garden Area') + garden_orientation = fields.Selection( + selection=[ + ('male', 'Male'), + ('female', 'Female'), + ('other', 'Other') + ], + string='Gender', + default='male' + ) + sold = fields.Boolean('Active', default=True) From c1300225efa8aaed8e80d385aa0be0e90257302f Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Wed, 5 Aug 2026 11:57:53 +0530 Subject: [PATCH 05/17] =?UTF-8?q?[ADD]=20app:=20for=20the=20tutorial?= =?UTF-8?q?=E2=80=99s=20early=20security=20chapter=20(ir.model.access.csv)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/security/ir.model.access.csv | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 app/security/ir.model.access.csv diff --git a/app/security/ir.model.access.csv b/app/security/ir.model.access.csv new file mode 100644 index 00000000000..c93296d0b53 --- /dev/null +++ b/app/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_app_estate_property,estate.property.model.name,model_estate_property_model,base.group_user,1,1,1,1 From 7d7c43bed68e1612e27e6e9c1d2feacebb90d309 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Wed, 5 Aug 2026 12:14:13 +0530 Subject: [PATCH 06/17] [FIX] app: `email.policy.default` imported but unused --- app/models/estate_property_model.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/models/estate_property_model.py b/app/models/estate_property_model.py index a7074c8d715..9daf3d12577 100644 --- a/app/models/estate_property_model.py +++ b/app/models/estate_property_model.py @@ -1,5 +1,3 @@ -from email.policy import default - from odoo import fields, models From e2d6609da0a17be548efb7ef11ee284de22cf5d2 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Mon, 10 Aug 2026 13:41:19 +0530 Subject: [PATCH 07/17] [ADD] app: added various field in model with default value and basic xml menu --- app/__manifest__.py | 5 ++++- app/models/estate_property_model.py | 28 ++++++++++++++++++++++------ app/views/estate_property_views.xml | 16 ++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 app/views/estate_property_views.xml diff --git a/app/__manifest__.py b/app/__manifest__.py index cb5e95c9e2a..cc818a3cba0 100644 --- a/app/__manifest__.py +++ b/app/__manifest__.py @@ -4,5 +4,8 @@ "application": True, "data": [ "security/ir.model.access.csv", - ] + "views/estate_property_views.xml" + ], + 'author': 'Hansil Chapadiya', + 'license': 'LGPL-3' } diff --git a/app/models/estate_property_model.py b/app/models/estate_property_model.py index 9daf3d12577..83cd60a0f6f 100644 --- a/app/models/estate_property_model.py +++ b/app/models/estate_property_model.py @@ -1,3 +1,5 @@ +from datetime import timedelta + from odoo import fields, models @@ -8,15 +10,15 @@ class EstatePropertyModel(models.Model): name = fields.Char('Property Name', required=True, translate=True) description = fields.Text('Property Description', required=True) - date_availability = fields.Date() + date_availability = fields.Date(copy=False, default=lambda self: fields.Date.today() + timedelta(days=3)) postcode = fields.Char('Postal Code') - selling_price = fields.Float('Selling Price') + selling_price = fields.Float('Selling Price', readonly=True, copy=False, default=1000000) expected_price = fields.Float('Expected Price', required=True) - bedrooms = fields.Integer('No. of Bedrooms') + bedrooms = fields.Integer('No of. Bedrooms', default=2) living_area = fields.Integer('Living Area') facades = fields.Integer('Facades') - garage = fields.Boolean('Active', default=True) - garden = fields.Boolean('Active', default=False) + garage = fields.Boolean('Garage', default=False) + garden = fields.Boolean('Garden', default=False) garden_area = fields.Integer('Garden Area') garden_orientation = fields.Selection( selection=[ @@ -27,4 +29,18 @@ class EstatePropertyModel(models.Model): string='Gender', default='male' ) - sold = fields.Boolean('Active', default=True) + sold = fields.Boolean('Sold', default=False) + active = fields.Boolean('Active', default=True) + state = fields.Selection( + selection=[ + ('new', 'New'), + ('offer_received', 'Offer Received'), + ('offer_accepted', 'Offer Accepted'), + ('sold', 'Sold'), + ('cancelled', 'Cancelled'), + ], + string='State', + deafult='new', + required=True, + copy=False + ) diff --git a/app/views/estate_property_views.xml b/app/views/estate_property_views.xml new file mode 100644 index 00000000000..797958b27c4 --- /dev/null +++ b/app/views/estate_property_views.xml @@ -0,0 +1,16 @@ + + + + All Properties + estate.property.model + list,form + + + + + + + + + + From c829d7d8ea43c70b12ce5942e32e331b5c5549ef Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Mon, 17 Aug 2026 13:11:45 +0530 Subject: [PATCH 08/17] [IMP] app: improved list and form view and split menu and view xml --- app/__manifest__.py | 3 +- app/models/estate_property_model.py | 1 - app/views/estate_property_menu.xml | 7 +++ app/views/estate_property_views.xml | 81 +++++++++++++++++++++++------ 4 files changed, 74 insertions(+), 18 deletions(-) create mode 100644 app/views/estate_property_menu.xml diff --git a/app/__manifest__.py b/app/__manifest__.py index cc818a3cba0..b8ab736c192 100644 --- a/app/__manifest__.py +++ b/app/__manifest__.py @@ -4,7 +4,8 @@ "application": True, "data": [ "security/ir.model.access.csv", - "views/estate_property_views.xml" + "views/estate_property_views.xml", + "views/estate_property_menu.xml", ], 'author': 'Hansil Chapadiya', 'license': 'LGPL-3' diff --git a/app/models/estate_property_model.py b/app/models/estate_property_model.py index 83cd60a0f6f..af4ffbd0148 100644 --- a/app/models/estate_property_model.py +++ b/app/models/estate_property_model.py @@ -1,5 +1,4 @@ from datetime import timedelta - from odoo import fields, models diff --git a/app/views/estate_property_menu.xml b/app/views/estate_property_menu.xml new file mode 100644 index 00000000000..6445bec5b13 --- /dev/null +++ b/app/views/estate_property_menu.xml @@ -0,0 +1,7 @@ + + + + + + diff --git a/app/views/estate_property_views.xml b/app/views/estate_property_views.xml index 797958b27c4..a383cba6352 100644 --- a/app/views/estate_property_views.xml +++ b/app/views/estate_property_views.xml @@ -1,16 +1,65 @@ - - - - All Properties - estate.property.model - list,form - - - - - - - - - - + + + + estate.property.list + estate.property.model + + + + + + + + + + + estate.property.form + estate.property.model + +
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ + All Properties + estate.property.model + list,form + + + + + + +
From 9dcd47de53d1cd1007197549f9d8f00f98134e3c Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Fri, 21 Aug 2026 17:36:06 +0530 Subject: [PATCH 09/17] [IMP] app: added webicon and field in views --- app/static/description/icon.png | Bin 0 -> 92461 bytes app/views/estate_property_menu.xml | 4 ++-- app/views/estate_property_views.xml | 5 +++++ 3 files changed, 7 insertions(+), 2 deletions(-) create mode 100644 app/static/description/icon.png diff --git a/app/static/description/icon.png b/app/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..a4963f14a2fcc25b3c653efeaf226eac5668cac6 GIT binary patch literal 92461 zcmeFYRZtvV)HXV}1R31j3GVLhHn_VJ+%>op+}#F;;O@a8xD$fA28W;b`>RgXx%lqS z#i^;Tp4#23yLzv+o+bO)Q7TH($cXre00014Rz^Y%0Du_y?|_H=9J%!|ME^XIn#rgs z0subL064;IV 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%0Ay3P?$YL+X75;$q#Ab(E*tI=8l+Sq z3JidVw0(;cq5&WTivfshx|j<1fMqFp$pa4+BP#+bS+x!#2T`Q%M3G!;V}Wp{h!C+S zJRtqS*|c-%aOZft+p^vwDxhbo*zqH~xS6`l!wPSG$K1MMSLRV>)!h*>0uWfMK)js} z1t7N@(Ze{=!f}=QU3XO&wu?^q;rjZQu6*IwPP{O+!K7B2@unXbnK;Nu8At&LJ#at~ z3mOqPgr)MS)`=HRJ$H0!Q3@`46_?69u@h`8XnqnUrf+|*_wJi6E#np}Z!EdlnG3If z`OwK{Z&s3niv?3vhpZNo=2Y|W8PA|pORnyEpdmb(5abiH$Hp7=-p7$UG$V2LxnsEQL0e}fT)#`(u#+Cb5J-xn>db5X9Hsr%Z3CbvDii<(f?*4w0D_1DLAIaCU;q(O5IrI)V=-Thkfz}LC5n*Ntst50^0k62I3+Z$UgR0TbsswtrZxzxl>(dF6G>Bw`2&5Jd zMF124nZl`#Z1kf7B8xuef&tiOa5KsmFlqUIKY;JeHlk+l);H6)Ka_X>4+A`&xB%JQd0B{{eKVaf}s%I)KdzL7TFtkG1jj)Uwowo-!?!a+-cH|ciU3hl>*_oM{o$oBm zGK3%^#yp(*Mhs-oB;=YlxwLpTH@Pl{kKVl#pG*QsSBf4e5gFqsiY!^ThFUN)J0!AX ztu==5;Y&9gQb1%PW2FRBFi8YhL9aX)J6Gw3fleC$)pqaUdsX|rn~i2x z&f4keU?54cs;V@J%Can3%Aha4@=BIv&OK%lB$Mp1fl=cumu0ivGR}so1hPQ{$iQ9@ z+@(NGo<21C{Qt~h&Lrgh)B(A6$PuyLmB^7O<{&D@2$85!B~ikB#dUs=t$#n;y65s4 z7RR-2?yg>u>Zn(*lg{T@W6V`NfQm3v8j*8k2yM)!=92=z4xf}UH2X=O;np+Ic0Ozr zVj>sJjGroLZTNR^i0=1SuW04bdJ+mdP)r*zlTeb|rFFdZo$B4Yv{jgHBq3HIUtcS$ z>c{d!bz%-wR8d((02sD~L~)RCnh$J0WEy#ne2+-m`0k z31WOKN*<6AiRwW~WBH-5y>eer&&(iLW2gk+0Kf#QO=mYZ`qQqNYAUP#nbz6gy71+v zo2R-(;k^fdD2lALyTW=8X_c@+Qq?fXt#>o+saF?YyfAZaerayG*tj`ZzPGW`hh95M z7qj+s(mLNhKI>Y=B~aNG}LWl+1)U8gOo`Of}>F#u8bG#I*)y zF%W6KWl>tZQC8{viPkfhlMB!0Q?0)53J+`qQPdoiMVvIP#b>X)gjpL9LJ(^ov+~SX zdu(7-pe|{c*+UEKD|ZQrg)JE!Ddq0HL3f>|Q2^by{4>uSe%M^)66P779xq&W)d&EtN0RXjDGumF*z5;vx3IG5YZ~*n> z2SlRn+%yF70L;JwqQEs13jiEM2FO7qHB=!0ss}04ghL-ZuV>Ibmn=5or#ZKh7pjOu zB$eUhQN54PztJ*`n6YM}5f*p+%A0ic2kv?qIU=%ZY!!fk6+nq}Pgl|?KUDWBhwkP^ zgQ^NJZ~zXf0Ywy;k|G2fchw|Y`iwdHubuzO^CvH@Ev>U~-TMIB9Z+>%^~oLae!~@AMJp8uXsR50%~O)rT;u%HjSJ@o?PfQq3ORB? z3JbujCF`lDpFMW|qOzi)$Bx)E$sQXRRRC)v06u*5$OrGf$*MsBL>=wsL-#=2f$(!I zm_BlE^kIFCNA=eyd85Fhh$!d~9H}>c$#w48{x_#Kp$hGi`!RW@xmFw-B(td2Ot&EN|8~4l#rFxgPBGJR2w7IlQ8QH3{z+`9H_IFEP5`f?B8;G{GB1T2 zyl<|5v$6Rizm7vTl^WQ8p%0pry%t9n;Wn&&*S+~h_ErbBrmL(HHfWTg6sx9IRq>pc zCPp1+le(2eLYYTN)Xxud^v=C$XJJ(F*h8{OVab73&(d++PA($3W} z#yl*ir>T*!GFK%i5n1aD5~B7kBZ&pH9{O+ZoJkicr$^m6f+MLbSc9;GEaA+eWmJsN4oRl!G(S2U&RQZ zAOH%3XRRv90~Y~(%_k)=4%`l(H1bs;zOkjQz)mYV?#GS5pXiRH1;#23dv6V&9?dyJz;TAFh#M?i3hRv2Jv| z(do9R@t2)s1vY;}kR|slAQm4%r1X(}{DRRy^heWJeJv1NFq-iJb_wzxkk7YJ*uz2SY|U_pdMG&K#a`&{-9R`c5xi1X?o(>OQ7h3 zD1xyjgeO7$Cu>Fl5GYAN!_&{d^u~9;8KJ4VTRJtpQ{qq+*h$Xq*v^l2*A3B56?7PTCYqak|15eX{1a|T2U29 zfJ)(>1Y^oL&=GIMRDUwF`HyC9ZP42BB6Kirm7prDtg4Zh0B|Ewvm55>Xjp4&QpCuP z*Z(W1+)l$HDG^fLlGv;O2!RY30>oehr~oRpb2p|8Op9#OSW6Tm0IEaK260J)fIzBi zu^39vuiO8X`9J-JKKn&_4)KWB%rdAJThv+XBw|2Qgv5A-s?-?LhRxa(-%gf)% z{=N15ZUj&oxYjPGyzv04>OiemtyER1l_(E0p=0==s=Cb&1+KkNWu2aL)~~K_462Y} zDWn6PGwt8(UwQq-SI!?lT@E~jkQ!mk*`bv^oSvOx{p9FpKWnYN^xdQyp7mM*Nr6Ez zqIQJ<2Ef#fx(Hw;fCMJ%2pkBMIRk-7yHY?rF>_BqE;a?WNVlfq%@W(8NP}!H1ifu% zdx^=awd~!m`EUJ`aAyss56SwhX_~lE`q1aOdAjtnUU(tsp*Ze@<<&+MrAecZ!lW)s zQ|;&B#0$@S=}X|!5JD6a0*J7EtcKCw#~vRTrEMA$(xHXLR;!h7t|aO1_{LG&$7DM`A4|pkT=WlA^DmQjJt4Xb@E- z0SFh(^oOwJ_0|_9Ixe<@=n-bPwcL_aC{g7K`w&!0#O7L!ClppjyGjN?r$D2ttvVN+z&a{3fL zeI{-qf*7f~r1tO#89+I32?d zX?cEeapCaMs~angEMs4d5b}qns*{+;_m8{vV8!W?Rq!9q9tuMNAn|~rB|(k?5F$0P zswh~SAcSkt)*q+0Z@^}YG4aV#;v(IGaRDrh8-oD=GQrCpeNpYG7Y<>xuK0@}5vZbo zf>tIM5MWZl7}QYg&{{w=EvqF8Y-`O2CRQU&N>-qFGu&t?CLo#48Ev4ZgRHQDT%{a5 zl8YT00rvU((fe=p-oNf|4zeFYr%tgN3#0OI{7@)1*If!ZLsf;?Hn}TpN-sZk z`GwOLoFG-fD4;Pu1n=3nha}m5s#dr1Lu?A=0ffkjaagA5LT`EI+7F5!d~0yyIucUS zWGEXB25X(HF*|kX`SRswmRrqa&|lQJquTHHeUKze(YQ{xH$T7l@|V8Uo}UK*X5M+e zi0Jcyq3~G2=t$#-jgFjn>ixIh^h&Vv+>VrqccOJYKn@*MDZLMqeB{%I+slus?*CKK zIS#}E-fBf^K|s|gB1zlC*J$h8?(Vzs3X^Y0lf{Idx(RvDNlD-PYhLV}$vS6(hyi3L z($`u6?f2ci6j_G$tC%fZY`bAw>6 z&x~3y+F+&$$;y`PUDJ*44!*l=w(@pq(g+1Y<+TU7pC2!KY+#f_Fg6kqA_De{hmWSM=|R7f=pOVO1=6wP(9yv2 zV7x!3$MIv9KAZ%*59^H@1wj-7B_&i8DNuUG2jL&5t8ZkR-h~usgV>j4S~ztR2DEK^ zXFK>(|HzZOZg5-exaRTHVF9BVt_L8*VTu<~L#?MFwR$ND8Mc-TT5G{X7}xrw2zkJY zF|1;FilWTO3iRKhTPemDjcwxWv5u@nxM58Om@;_ZyJ~NIhi={qH+^C>HmWG4T6JU% z7!6_f7!*F>kH8+A zV;~iPVFySVIBvF1oILgRPu`4GYc#B_ev)e@xQ?Ta-oJ}!jA!~O@j!R>XWzmkV?;qj zgAp00s=ys8Z`rb=>+eO~L8>iIjrS{D0>~nn!Pps=+ukVbot6RH&5@Iiw?6YQ@^WIM zpo)N20EvKy)jtC$pn{=-0)R*?qEX-oGf*`YB><#|NEMLRYF1=|QR6fyIlEL7N9XUP&#cuW}PwcBg}jZjc@24m)G zV~yYaCrS4f+Jvn2DlA1nQ<(VB~s;j*eN+pvd0ES(OO|P#wkD)MF4vC>1VHAy(<0gD01x%Xwsi0 zH#)l6HZStwVDw?5mHWW%Lph{OAYd#(3h0zPRO?jTviT2_Te-osLJ`XW6R8k2cLU&Y z7&?x|G@3&kyZ=KjuxfRj-G?8liU;|jyt zEXg#KoleKO=;`8#hDaHE$@z}v{AZh}UASnQh}Ee^TQZ6ma1g3CbS!_%#oE?u8$RcX7;aoQ`@7ZL*igv~)@ z9U@-1@XWsO@z}>30RBIJ@9(VNTW(l8+iaFa z4v29(ErYkbN8NeHX&Q=>?p=w9VI+q&`p(>``0sm>)>QC)jYIpEM;9>2*!835fAmlA zgq#|erL)-pI23E^fAC))eeeA#XI5Gmv*!>6$QFL%&n3sE{-FHv@1I}J`}bzyFpSG} z(l~5{?Ot*{kS;VD34$uC>UJTB0l>x<(HKBPLx4o}&`>}#%(T=>+qEHLL!z2bs)%ST zkOe{on6(QrrkQCvO3_#kRjy?PrH69hdnNWE3IGg&V~8@F^us_zLa0KhM5J!ALIm{$ z+m-jxfSr(aYz|Z+1yL4eRtXw>%@6H~w?fX7t*itJfeJ-0dh~Ac!kNo2pM3GKTZp`k z(1D?#0pa1|(|v7qI}4Mdlbs8<@3#;iu81}1c`xI*{odO*e)s<|1*LDLT{W4fR<9bE zIZA?YMa*n$lTV%-y!1+S@nUoNu0sQXA+WQtfCd$G_U^#H^zy5hUwDBU?RwC?0@Pv% zpJRK>oN7FvZaFtSS9WsE^TD7XfUKDk&{luYh#TX-Vv?LQ?A({zR~jXQ;vpXI?#f`1EXJI%bO=RarEM2J?wbVZ)DY+=Es~-lQC741VB* zYzth=#RDp*qcnJ3uLkjng~PAC*gSmv*6n2_5kd(9tYm~03ua)s_}rDFCr(h-`~=R% zXU85h7=;lSs_&;O&%Myw?5}q7sVpPp&Sr-!HRFu8Q+2S<8wDJ<5_UQccRtl^Fval_ z#i-j-AfpSrJGpn|q?>=|AwR%Zov^(j1w;W-Gzumtp%|v5h&B^H%hh*gm;d>psI##Z zkvUYh`<7vBreXp=bjKCdz2%pkYQU}^1fZ$`{V*SjLPQFzLh(K0(>iS}Cdt~D6GMm%tGXhizqT`j2a7$q4GFjsvJLVo>X}dxf_ek-r*i*4Dyt$Y zBhoaZz7iW0EWlf1+o=?t4pY)N|D1jG`QEX^#`9to`YDDWpz2)gRr_U0v70+I|J;=; z&FNXF=glxPA{p~Ir4D~4du(9zprco>nLGW=;s-Z3R<`mW&LArwt0Ag<1>;6_ladZ$ zZqKJXFuF5lWEWv~{`wweqtU>B_nto36Scj;@ay#e0c-RycOBIU=Rph-D*#wPCrG08 zc#SUN9K}};hu^=jaW^vU5LTz+lbyI{`tZQ~P#7uDk1~M(K%|CIs?`lh5o#o@n{QFU z0)PV5@P<3JzMV5L9yu~ks^NV)uc)H|4${%J)l)-=*PZDH4jY2l7&jbz;e6f9wMGNI`irm z!>N<2{eCp)9ZMQHNeE16(AdiR3h>C{u}d$%*qmDcqWV7ZqJUzIc|7ulKZiXwFk0I< z0E#YLyi$7q-rH}5qCY<~l^E!3Y)~4(fdnW3pbYh#hyQMK8=1x@I%%($ISHA+AY1!z@+99`?+m6{Es_!oE z<%b?bpHauHJ`<{n3Md4EAf&3KsLFt<1`$aSYaJ0qkia`EsNtC;LPW-ZfCxqvNLAGW zDj+fjP!bR(RRUrpB4l)wM1~@wK#@ad)Syr$#SlG5khDHM6ZJ!NKY$LmtTB{9ShxA1 z0)oC&t1;)87kOGl=Vs2lcKpf- z&r>U{EGwjH8CMlJbNQmY^it>0As%o`A{*PqW7iMq!NPrJX*0>cvI_V)y==Kfb%RmKlr<>2}-MJ|yMsnL_*E zRTam2ojY*0?^6WYO<#_F&)&Fx=hGUGRmZEK9t`RyJtHCt%q)zEK*$CwhgE7#1ODDG znGes}xh>gn3=QLhP+94Oj3*oj;SYMFdrC2kAOwQKstgze1zABE(I6Vsdc+gdIR^w8 zUs4Mc5DbD^vBR^A1`tgEMPaM}wALrpAVIvN5QDSi5DaN#NsY1!?|7LzND3fz$#iU9 z0(88WtsxBgp)4AZS(QOmxP-_$+Yh)EPPUJ|e&&_S3+K`zMz9LZb+48qBFhRSA3IPS z%$`45Z}f1-3<}dTnMhfc6oW$HtpGmrO8nf#!SQ3IN7FBwQL1sg={=MoNir5+lz#E> z@n^2QaP<6H1&e6G)Dxfo4B6ucqpv}3&9+uN)RE=5lF_J4xnZ2kiHLCD-00|!+rKq_`{6)JRYp}y-Xg`O zO6~Vw(C?k*W8QU~?IJI(^Ge*CwFqJ+@eNTC{Jk%8;8_h{8#=yHzrzm&5m5$V03mVC=bUkL^3ai2j$XPrdumFW(hm@mXix+s z5Ks{XwxkhY@rm8}A4j37(pH!|7F~V`dObhz;-$ZSC!I>*_1DWd;sIv{A=X?6=rM+f zt=1~k$DTTM?$V_rPdx=Du7IMEOTOKBy)%9Ob8C+!jKXN}3lIP}uuB?OUU~J{{LByj zt25?C16y4i3V)~Y3R2ej=l%f@Ar4kqz z3=tYYi>!hGghUF;;^Hx)N&q0Bq@XaY)GLSr5uj14$_PPF16H6Q3_*iJi3Sji5eA@u z5`uY>RBLop{IRgBWCzp=4k+Ap8I^vco8Ngju86}v1~ zFB%vED3clzA~gi|6DHa}awPpIij(6f;czn{l76M#KHa%tr<0pUj!YN6(eI0vMG95q zYza}Hqq+9xW+%;B7cX8s{@f+7uJ65ZX;2^p0$>3S!IuO=YovjhnSB5eRhZgrR#jLb=~!y?X?BHsmA@Xzzgs z{YjXE_Cmw>(hBD-=g3$D1BezWwG=t9=yIxarbM(uDMds}wf|}mk(G!GsX$L(0ic47x|x?|Y$6xVQ1(#sILBeI9+Cz)uV6_iYR?I&^E#LK!KE zVvraODh!HT(X^)8VFT<`>*zD*&%F3Tl(qn@ky;M*;m*(J!_43MTYu}*-iJqN!$$`3 z`Bz_>ZBKQ(z0J+dvZ{%|T8Iwosjo;gyshWhicf98K{|q>gXf@)b+-j`f`sTUbcVBHSY>Ic$KDTT5*GHcF zQBQ3j;b~|4p+KCfiYV6suc|`q<7M=Vzy;GQe4K8QFe+ zu%!VGO+|{J>d+=}LWrUA$Q&C7vfG0{dRA#jBUb=KARH0_>QoCH{7<+V=Cf5m1w^qX zt;zU&MJ@KHb%jnuxpqRu+N@uep$xG)hjCSESt_Y%59~`%J^!Wiug;t4qLX_Lni#bR z@^Eg)gTUy6tUoB{{L{97IGgk>0+K{AiB@@~3XzL|j1R%4?bFXbbLP2=wwW;kfh7Qt z&v)!T(H?tmbl*FC#{qFvkF}Ir@BZZb-}%I=fVC zC3~=AcaX0zjEmM`@0R;`P8#Z_9?`%epe&)x3X!zJMjv_=tBYT6p7`y?xkf8PAFN76 z{C>Ie&Hl|FwH+m8zz(Nz&LLNT{l+aIL8wZ?twu>r-UOA=aPR+99o-(@AM3 z@AKgfD~p7>kx6yPA|2z6ZXX^q1B(Q%KPtS9M8IoNF{?vKqQ12~{l()iy>#~Zb5kd6 z2eeR#sB~4XWyWso{yZ$4J*+oc=YmJK-}gNqlQ$|Pk+D)TSKb&0WSIc1Iq}R37cN~& zW@Z9VUKLr?G73-xNFUcc;m>1_{W0%qk!(MOxShom_8R#3`R9(GyRdTW=C}UjU;N-t zzt>u5)Gtg9n&;iBsv>K$EF1JYh=^qB4n-tOWWeAKd;CCUUw7{NJus?!NU6FP3Wr(G zQE(jL{li|8z}S_2ajl|kNavlIyI*g13J3FrxjWZLdtKNIm-UZ0DdV}Z@u}Qt5>hyy!H`?YO3AL;zWdl_mSNOKCFih4T}}d+Ogi~K7Vs( zJ#Q0z#->N%KsY95OhtR_a{X`LWT!XRelmOG_vYX0_Lowzo6RViwfFV0{53(vlO&K@VgDz8A$CULjw=TNq0 z+Rz<8pm>xaJ8F}juZQ(U5zSa{@#FSJEvN`+P*BT=lw>E)pMUo9WjeH|02Nn;oJB*m zGJ-w{>K{+rP4)r6$lV+O5WokPP+4muYlg&&eiw|9GQWNOqaVNV!w)}rFYomtXJTsz zkq8XcvnK`WS#MD?7B1~Lctym(wMNF6UxBeHEkiIN)irjd#C%7tzSa2fC-xR9WVX4< zzHrj^yJzF4!YBX)?_or=c=xj^sGIybYGVYY|Ied$u5R4DBOO`DVA?X25kNajc4+zgf_i7E&JPn>B0{8L zxoN^@S^o`SQY9 z-pHdU@~lA^jR8W>K@i4=^q&Zf9^82BA9}Pf3KAM=vn+VCH)ynHPF{HW%*Bh%g@sa# zH5LGb0}&Y{P~Z^EpGk-Gu|MYeA*>&&gSViw25d?I0_=Sdk)$!>OA+TzTz>7urI$fv z^~TkYKD_$QyKi$-UEE!=PS7P;fZPja7tz6@_{% zhfL$SZ0_~u$>Z@%7knw&eN{l=Qu?*Vg&+0I_qx|sJFKzg*dbTd zMxPqd=<8uP&S0ouBt%vqfY|!X4b!9JY^;mDvwlo&R79obhiW}&zE%;Xt&&Z9PoJqaN^sDv`icOA); zD_4@aLkegZYbKLX)Vi{SQc0CQ{*dxB*yrS!aip0VcdEPqupMNGNaP{_7%1472vRRl zYwR96b^g#(=U)Al-|VliT>IeN8}Glfa{Hsav!3Ur0mY~Rd*QNP2)i9jd*BuAkT3aw zH3!mNsy*&Wlfu}QUu)l@VlB-1<&;uyN|ud`FJrtkK|d7tqUX-~ePFt~z3NWZQ3X{M z1Xb|^?EjWI`djJg#r9kW!S=PGG)OUynhikUN(PlN5*oHEM#~3RK`&h0Yns4Q4~c<#~kUNV^mQkRj8Zjl~Gk^ zqUMd&^*+MIh^o0c>L6f3l}dYv$G1=smdwS009UBWRL(OOJa{|ER1k-`A05 zS(ZynOCNpo(cQau*WdgWfg*?nHoz7bRS5*B1*iYwQP4reboZDQy6ucC2}Zz5^#FKS9j94fA8d5TQaEQuNpOA z2WWQtBljZIUVn4fI|JI0` z_x;>jtIm`hGBZBRrHbb%9zgXCzWuv!?QPteMLMPFMzUs`nT-sI#sJQl!or3WbEZ97 zB;27x?IhdwXPK499#?=;73yk|1lFK+4wNtsq4M4L=NxX#$F4z8n!pHy@2N2=12~9TU8R8@s+RoH{GM z;5@fvkep`}#i)w7dbP&<+2n^#vL`UQYjs7U&ej2ds#aAMbJp|xv0fE@WyvBJLJ$qcm^gOM+1fjZqPPZ60##)MAW#4p1hLLVQA9+% zO)wy|;tSa3Q5s{6G4czQ*D$IaU|f&9 zPLk@7VMQBQg;|C$iiN23tGFUVX-~0N@u84Dg{|M3I=47AJL^*E=306aIf!h@A<_xC zJW=K#4z^3^sYX?#?LBmB&YeBd&Qbw3bd>vvr!x%PIw=THKAYa~W7d4F)W{nVd3{@N>tF117E%OF-DHdsx7xz7=d?g>yL48D{i zj}1jpQk6dU;-ZX$J$d2$xfiZ97Z(I9f;9?Z5NzXf639LhdvY#z&Fn1-BVruK3~?iC zKXd%4XTR`^0MOsu=xna%{r>g$-dJB-S-!W_?{4LVL|zO6sB(A18Dk7OW08Qgo^ zO@NqIDCcmEFDx*gNkYpe9HSugLDf9Z2jBfvG+~ zK@kSlx{jm@5Jc)ZAc6oYLBTTxyr3t)eBui)9lP8t60O8q3Jxk{_c`reJm@ynYq;=< zwPGR(o*@uLhSUdLIP=um=P$Px7b^hK;Lrj9Jw`*OJ`sBYqeH8zYG(i}j0|X7@3M0? zaYIU6HZzk=&9KOsOHWH#b+zkXaE6aE8+`V~geRU0uG69nD2(@yYD2kvhbE)AH z#32#_k|JWiA4V(JJNuLN%GETTudqW~-#&8v{pPhsQEkNS)bA2Paa*>%elqmFwqNl` z1XM*pMU_>UltmS&#KoB89vnXLieUBlGU-ZyV>0?m4vG5}AUsj%Y9o zu!3r2Y~d?bKr|FE6k5&wSyv#@wt23?LCk1OUvGd?xB_pB;MwqeI)lP-bRkM0Cypz@fH< znmgrLf=5JSjJ3GY%hM>HS~xy6fAqu!1qCQ_$&0&pKU`Z|yMFzn+qZ6QY-}iS8YfAT z`Q8cSa-`oJ8u7nwPPQ2SrTn7X}6`o3YSj`eR%-Tap`w=8s~bC+|_p`z!u z2P(q_g^B112ZDW76=o1sMGYVf%BqYiXgs!r)>Q^o^{h_)c69bidaP);u+cSu##(Yl z5CSuU7@|qaRfL*)VTDR`Ey6f!JR7u8;O{}dv&G#ihm<5H4+5ezoTkpNPoXJ>_$eU?K#NASwZr9T~I)3ZMaMQ7GkNedErZ+jnl? z+}zx}``#Pgdkz&za0Zn1;&(^0Dwan@3mEB9m|WL29f|OMpa$uu#!$yIurf*ec{wgubzM5NN={{!0cTd z+1Tb)S%%8Rk>&eU-XGuGsLFW$srrz_t}M%LK1dqv!%v+*cj@^`;}! z#@f$m&f{maC*J7Ly!SPuzOM7^thaFt2z8-DL~2er7^sCaoh5)ez!6pTTpEg16hIJ6 zGP7{z(BhdZF9QG+`R4lCy*sz=-MY21d}nKIWvjbY4*IQlSYq0#GSwhbSbZm1d3)++ zh_~i*7iptMkP<^3%LD9SXs!It55^B2$&CsriGngJs|o=FC{}eVd5aR0zfYxB#l{M!+_I=k6eE3mByi?3V6T7ml8O=2ZX{DDy$LGZ^$%-~RUI=H}AU((>|huh*;VT2T}^z;7nq(s8p`-tEeiRV9h3 zfU@$wl{8a|dYfGne?A|LvC*fhHe0RrjV;gN$cd8|uUu}-%?V=PhqjH>*RL-?79dgp z{T#n!ekOYo)PKsh0x$y|%LLu#JNIsF$os2zuHJt0-tV9J2QXGYbOL_tfX9BtCNT9J zb`cTwz@eVQ&H{=isNo8u(k6w0iYn2KUh!KCPyfZ4^G7J_L+BWmz?Azewm4$2or0(; z1^@w&dH^ccN_f!NenamI9)%2fpH<hzqKT z8`~6Hp9l~Y24w&d6#!KhF+?GRvR8nI2vP_pkUeOVf_I$2RG<7+V-%iL)!_K`vUk?j&Zjt<30~kcSN}NS>p0i(FIKLoK zTtLo#V1NazXU+?ZGXOxsx&|Tu22l}AEyJt;Qa4({uqHI&&gw#lfqW7j-bjA?S{w*| zZ4_YW+0HNu@oEy0>ikYE;zcNAT@@{&=pl-0Dy#S!CX`xFsL{oVnf6@yOv%! zeD>udR~Dif>HE}1ku`bICwo8c&OyZ7xBjzcV+&2ApBCMIjE2Zod4Xu0O#!6a8^nhX zoqPHDBj+zDno5zdmTP+Ai$0J&fzeOh41hEZb^2MDCk{T3umHNG4%^Q9;vndUi)Po>h>z&;AOiR%QjsOPOm)xwRX?P6+@_ojQbv_}HB`-L)6Wgztm^y$I=UY#mSXvGHH&tski1vDp* zjaLvN8K4~>qOYWdl!Qy)D%KBxPp-y+J;Hu)Q0EO?Zm+iM<)A852l`KQ_BcCU~y2-!Z>OUH_{>N3xG+CL) z_Di-ujCN14)BWAqNFa3E2EWxYWC|qwv5wCnxUK>+Swdot8h{@R2B!Jr6Epw5%56bN zcYgCV7ntUjvy_txy8{jS{qga&{v!V**FZ#%Ny~!e-zK`K+oDr&eTyxC6dEH~YQwCc zJP;tsblBI}oSiLlU(~0aZJz_Pcd3+OV($YlFR?Ulm2a7doa2*akiGsrj&Uw4ZWla{ z!NLXM93J2agP9jejC5f9mQ1^xn3NDTbf`ra0iesnfU!)OLtRaV^UMP1QRf^VZ-Za@F;BCmB&(Cd=3=?A^94|twa%M zr4*04t8w8gAj;P=f0WWipk^`_UUjgo>~^o>oM&Bfp@6o`l<*}$b zQT#fk%ZpnT;CY-Q(Qo!IkIsbZbC7A0T08)3jz^xqq^2}b`{2!eV6*!y(N7!~NGDBV zhLc@E@L6#u#^$TUUG(f-lT!yj11GY{bXc|mJ(Qin9rqYbnnPoSYw9z93fd^(3(*uZ zz4HgxGqTq&GvV4_gl=p`nYxZKCMfxvoH%6fvqeO6@Pr1<42inisR#Y~ShixSnY|A< zbL&9w>8+c>e#L*1ujE74^#ln_pa0(bHR+0P}?+*pm}w6v~c^m``Gfu%=*>{d0tuU3&TSU??=0Rw&$<1qUXhZyq;I) z+i$Bmsy6S@{zcTff5kFNVh1|NKoi32Nt0}u%G*+QOVN-j&4aepUXy>c=&6)zk=n&D z6Nod4!=^1SE_9d&P12#pfk#Ms)NDXb3G`!M)s_elp zg+zfk)LW9ZAZKPs$5b*Z1zS2D>{ktZktH=$t=?@8`DO7puTXm9*WYVD&h5CYjrc5{ zZjJa*ZkivAc3nSey zgaF2~&4P{r*nHueQKmTB@I-yKhoo z+PSDbaF@aFFpx_HwHINPz9;Z@*W1%hJh8P7hiE|&ozisww_8Mwikwd8$)6N(M22`Y zw@do+bUSIHC8PuLJiB{RpumKtg(V=q4qfmRD{r|>F(d$m1?3eh(Yb%Zm^0G5pKjYz zUNtoE2|D<~!)w=!2zuFQBG&{3dBlp zNWL8iq%c$%PKY`YYwLc8wL_71UO2~$x|AgjA?m3>N2itfq{!l( ztn|9`?&+0k_t^(&d=$F4vJBGf#vwS>e}~yyLNg6CUaTy;uKAzOG*2(xm+_CjY{Fks zilCbRsn$d@?CYx&*_pP@iIKgo`VBji(viwyqq>mtXvYeA6FdbAmQB(U9nOshA1(c= zgFnI#ZYh@=k&`7VnNVm!tP{Qb1XDsuwRKGI?5jJTH%?kM^xK`>&KBH8It)o#(d_!) zI6!}G`&i`z4%ItRnhVQ%mjVPzU}?PHbs*Rll~Sa1I)I-lZXCHmy5&Z0H~JyF=Qtnf zT0N}lZfEX~uZA_QPZ#z!H=jI<#0Db_a#5!O14%JujTwS{lCMXc|9r1M8w+<*eJy&e z;W(p#T@<>OD4@V#OzCN6FDLFyGj@Ww!^s|KkC@-`MdKXecS-BJq9 z-)P{j69`l*>pC0lb~!Hlq|-1AuC&6B1{@HQJ+~esXo`}}Xdge-0u8pXwZ^O9yD<2; z*9Fo*@~wk9QTgG}T(2Xr*9%rj{;FVP=RQyB12O)>$r_8lm3nCF^1Vn)3L)XU?*lbM z4TD^WrMv8Y_I~;e`U!#(U;xnlHSrs%K=`?65+GD2ZXgyxnBMQs-D|w++s)4OZa<&1 z4Y>>&{S%I=aZVO`3RFfkd@~wJHB2D^1H%1b3KJ@TX0{YCZ=FG%O}Y}w0<-~5Ib#(S z1@6V()pX2>cm;~g&jIiRO5oBP2IC@bZKJp4*8(RvrR;fEtgk!>@-phHJl^>*W{7VH zJKA_U2xr}76gAW}#ru1nBZ=xEZTI7~C;O_9Wi{p|cJCu-&`}@vlme&6R#ZyNd-y45 zJM)*Qh+Z+Pe(7-BJ!_auti$Rl{{_6_K0LC-11BA_`HSMkN`2#T!c^KyvvZUWiUJnBp zZsry*|5`u78~iRey{?Z*jVBHpk>;k0fbQtL{;0sdh^hzPBqc>@`4litusjheEe*H@ z-O&y2mg zWXj5bti8Et5id(pi z8xxU@MJ0YybAZ;c+{#wdc{A5ASwFzfi(g(GVgdP8!b` z(NIW-zjsetqiAhQBtwD;z>GSmMjd9!6tyYxJ+>h9&%rHt^n23zxbsLg-`uSb?&{4Rpv zCoT3b47}?dTO8q|HY3EN17y`5s1w`4L?iXm>PJ15<2|EwAIuR``2=P~% zfnx8!UrI;=e`q!M zT-?o-5sv?Ey=~X^ZR~hYX2W4h*Z0kQ>W0pe$?a`znEwI=&haUA+N)aM_)iZ#8jR(!+&UX|SEbZ=QePJe_6WM=w_Kr)P4a4m| z3t3eC(pG7aBBB>L-kN7xjV=R{L^p~f$_AbIxgrAOu`7}rx7o9Tfu`F{JGKQnXrDjU zJioNV?`gWO;rc;l&Ep^qtc5s=(t-S4T~t~JDVHKw#xo* zP{6sUlm(73(JNzqT3|V_&=gcfhb&W8l!k^RP__^JELjfG2!;qK>$wP~9p#lq!ogpo^SS|X?9PD zNEVm)!&&Tx9{fvkQZIk`FR)QT@AB*Cd(mF6lW$avg7KaZh(x?@vnAQwt3SCSwTJYH zwWJ!x3%=bsR_$m`@P{0D3;e}(g zTsWMa7Z=HfcgEHZ@x9R8PeEseNmq4CiDMTGf=UfD+P3Bx89}A-Z~ZeC>^Yvb4WFlB zc7I1hi0e7bUQtA$&nXIohRxuu52!(izCzR_AjCEO1F|tF_AVH8k+UpFJ+APn?sM&z zD!=PgxCo8~eO#n`FB`YdfaBLMW!Z-2pkDePUs?a$IZetfbRw#<2}X*%T43v4O|5kf zJ6RQUFj5~B0{VK{X@p1nz^MMw6kC@UKs)w}onR%bSf&uG>mU`NrfQ^Iz@q+2MAI8W zQuh3mHCh*&=2x5Hd*H$wOCu9z(uFD;s{H!y%Gcb|5Sa)Nx2#Rvups8H4jH2g%yd6Z zD>3w~>-9E2Z}28f?`7ymp*=5`4dLJDB*Jwy%5_0@c%16P-^u>s|!>i_$zqs`6v~B z0`E0^q-^*`2MhhSAQ>3pR7)XoW0_Mfs~UCmAAsTIk{CJbM~UN zX3MBJ%DQg4-ra2~+MU=-sS%8pFt2Jd9iECaXES37A0lsDAP68Ajy-H)yF+bv^ngEyND9kYc_*Z&X}P>QB^m@=t`4SC{T{o?nct%9 z>XQqUDXSrM;D$j(>*TEd*Z#G?1B4HZQ&NE92pF{Z(}LgC&EaAnc3Cm1@>fFdWP;Dz zY9vU#{SatJ1|I*yTLnXD=b6aj`D(~NTm7Cdf0gfkU)a<^TUfnu&T znD;TLab-<{5cn(Bn$CPBy-%r};(q5NuhzsGeI_jKbg_)1d}c)84oiu-FZh&nf3xUq z1zD*&@a*B8_RlnS*c$<%gb>U^tU}{nN)*}!ZIU%1?JKc|JSq8**Vt9l#AMKb9{fa@ zWYW9tyI(nvG%xdThdz}6jnX;YT6F`p;&5KqoNO~Y)dUIR&tS+&Ogrfz(xQBDXelxX zZ6^IM>jC|D5+eGfPnUA4ooB56;9U{xiVC)m>vp%yo6qWqGLddQ+_sTkazzu;_YDin zjSB;uij@tfY7jJ($b_(A?uV@;4YWXqFZ;dvhd13j4k~hF1qJUEh)Wa7&yWR$T_65M zA{<-KJ@(I}WKih$J97{cwix-rJh{dtO9=e_y+@x6#tu%ca%utTc>% zwdpBnq6)FdpZpC}mI%3gc^H|w$jWH3-}v0+RWiFgHmVHZMn<0ktfUWzurP27V>yWs z-}^vyYH0f6>mS+fxF;xI-=F&uO5tf8j!OE(l`bP{g3=j$rZ{~kZ=!|`HsoDEWTMkvrBe~gRV%kQBIm*$pq zU%8J78f}N$X{Tw*9N~W#w!z~Vogrh(R-yJdta-MEKWoQ$*L7=-vp0J_s}xMDP+F2B z98lK+y0M(rl5khET_nJf#0*f-1waeHt^{M18v$rFK zq3&M|z;BhcE}j;4KAdyvp+!n+cdNFywdL6CY;k^^Sh-O2tI$hH2Dblz^|=P3oXI5? zcZ>Rend>tAIjOJ`mRDYGv@N@H91>a6@nUA9%r}+0#iGChIJ4L~hugz8jE~zUg#F>& zO$%LFtL`?c-jOD$nwA7%LN4+OgtNszSs?lPrAl+qlt2na3zWuW7Dyo$Cg@LIZs3Dj zoIfiUnkIEA$j3q^o+4aBhJ_zhEg_+uaB_UVZF0lQK#cn4e9ZlW>n|#6n|GV4as{pO z<`eG=E_3W_uB)1UUZfB+9cn!G!G+?ioD-2NB~e3}uWW0`i+CE3bP~;8om--c~I z#db3!GA)T6Une>z;G1{jSQI_!^8q5}%L?bmMGmd_73Xs^ex@^WM%n$ zwfr;U+V0&;wQ@5XEB53iSKa?VelqCz_ObH|*W~4I`15q`roo5% zfs5_o^W0b3GO|pv)_sa^tCFX67vB$Lry20SUr@m3=K-Lh8@=t5g;?by3sUe;eFyyD zCklWF`9$P!X5D@vf6YWrL=4$QPDFGpMa#udwLTnHAbqwjU_su>Uxo z9!r$g2O!BA`6?X6kZ&dThexlpPfj|X`d&D+*Dubvd>_tS!US>|uz2&%z9nfSwu;aL zvQ$czZ9+k~)Jvq4%DTPDJHGZFFV`W7HFyu5`|u;bOs67_!J?fl=n_j6|HvOOAzKkY zQhMV;Aru-#Q~gxUHy}H!t{+R}f9Ty3iS^r`^b>OD zT^0R=9WFOFG&DQ4dTs7?mM-{seJO7~HdJH0r-uHmd12D|TWYFjP{3xVmsgDlw0&9M z3D!60cNDNHmY(~YsR9aOA1j)t@oZ%Yc<_E(?uOlCYOVP_*zv=`ZE7mX{{DU{>7Lj6 zZa&Kcvmq*Yt4$(O2%vTyz`_6T%Jj(HYrE zWIt4p4ou#mv&LGDrA6e+Cx`U?;|p0BZ``ILy{6I%bh$1^25Gl(l#brt|-SEFVwDtC;9gINP|sva#WG2KJ#U zccEK)`4x_MtM%Ow#7MMf=NxluUoRh;Rl`>o#Vk(JV4VwJwsNlhmYkkZDZ8Umuq*j} zLgxr7|4)8U_sGI>DZ_F?zs?+rdT)jN&2GO>7#-` zn`Lh=hT1U>D`2SM)DS+Z-R-eGx~4cfMD$+HY-a8)x!zZ@kzvP^Yo4|nrTZpPRl6W7 zB5>=0xvO18WtJh;n5(eztd7`phUJ*=>BMH|QP6Fpr5=k=qzU&(FYQ0mxKG0q)OS~P2^M))M5#SAHN{1(onf<)v_9`C8CfZ_3nAD`9y?L#PwG{Z67M0 zCQ|flpWv82Bw0g|*ZFAJ%cdbP@B#@53wY+>PR!*EOZKC-rp%D#sXktE-G&NrMa($Q zsO^~>PA~F=M^j`kq2z*ug4^mW>zQ=Z8!yz0uz%}@@$7oMm-9M(?+KUlJ(WO1`5{!~ z>A1kiqwlZ3nzgvx2X)EMa~A4kBvqWJ#7t0-?3{=Ir483BN&>jQC-yp`RVmA=Yi+`+ z_m0yeZw1D$f4^;RW{LP?xpTgx+ipE*Lp7*Sux!aTFIJk z_T609l!Tf1rOFfrnTY(iI$w3w+eAe~=M8VTBZ1GVziJpUDQM3o%#Rr1dY7i^^YAfS zMrxSanmYXuxx6)Td7pT(p=YQ)$iqiju+3kF#|}USWri)JLudF69*G!bTN3&Y-dGlV z0D^Z7WQ+Un9w$HWjG&)uL+VK5L_MKPpMe2NePy9%xEc&C$Ll*lE^`d|1EZH*V4`G8VYx{{RT3R|9-zvnW+S zVe!C2137(X>WyC*;Mb=10QSC@lXf)d{>>=+E_??dhhs_$E{J`X?RRb|E;7}IV*c!p zjQ&v5U?Vuhr_<$oMYweO(N!)R0!Uh__w!_@1sL{aA5owS-ekI~+}_lx40 zEt78bZQu%vpe(Z_M17{8x_p!!0a9IfkH5^H3%K_^IjN18>l^33&{53^RzYpfjd#_; zwtqUWWAu$27kCNrJ&1`cql3c^R}2=#ou3xd%hQVMUemTUx>De8+e#ZdH+&8-Vl$7L zuA^@M6>vGt@@lwECYUV|;67@SJC>p`6{D)o81DRD5#^P>;X$5}MCcdsX?U4b=Li_d-k+sm00 zV3e@b4*00}&x+^R@)-WB2GNvB3=56i+KMWW-y;nEX@OYt*rbR?V_KTno3Z1~`8G#O zA)3a)(ADScf}6s5GSLEYei|Y*{aV|C7j;hB44fB9y9Kq2DufOXzN$VX;0)Y@0Q zV!9rmX}aNr{DR7}Q3Z3qa6M|RVVPV8jJBMT`XB0xUy$1`C+(=)J{8nv+P;$!a3pES zGI%cfngpQ~T#a25n#N2;{fJKw^U+Bei=x*EH%2iu9+(t8z_A!L|eB#^;`8g*q z;2H3I!{vh?iRoxkF-1cf?W&Q~rzIk?xZ8oHD8*KU?EQP8&O~Nv@nX5Si)u4CTtnqBkix@xUyT*GFk`y@yd zuTtXeFA071@j;f0KhkxsYhQGbRLj6o+y&@33F{a67p|#V_UQ*r4djV>99r5~vLQ zMKZ=$$R`{qj*?jHEKhrlw`k(XlTq?%SEW5YiRTy$Wz% z!3gzDm+U}hvaJ4Ur(B=$a}jFqv!%h6YCejjaa&A6s!Zf^H5t|fGU9Cw2A(z<>ibAl z@#nQft}IV2H>_FYKJ>_~ACce%1ga@KYjNFW)yK_mi?rH?X3jA%0hEdtKFz@khGR@V z9}&V|PD--jE#`&~FyHRYG2N;?rTNiKx5vp1m*b5-SceD3N%Yjzm*}v}@u6a6NquU> z4WS6m9npBdwM%N~^`}Vti)ho*NPG7DKh8oR*vdHq&Ytmcw!!**Yun z8@WT4Q7`~06ln)Z2^W?|_18M6VPR}&!wvC7Q=r`_s(lr&v?(+<7nz%C+18SXiq$?D zOITyYzkv2=FXU&Gyg-`_Su^$V-=2y0ubGinP)hZQtdTKL{mJvNLU3FMjysm{bb#k6 zh|?B7QUlFm28e|U(z_sjL}vn2HqfC~HBA?99Dv{a2>z*$n3Dz=to5HU3Pr-^L-x{Q zMfQJy^?(5)YOZxOHK6UPcrs#1XxWggha`}PI9#1B_(w#4DM(UD##j?bS4_{t8VvgM te{7&u5%7xB6be8L1sN6TYDuHO{{aGARZIW? literal 0 HcmV?d00001 diff --git a/app/views/estate_property_menu.xml b/app/views/estate_property_menu.xml index 6445bec5b13..a9e184c1359 100644 --- a/app/views/estate_property_menu.xml +++ b/app/views/estate_property_menu.xml @@ -1,7 +1,7 @@ - + + action="estate_property_model_action" sequence="1">
diff --git a/app/views/estate_property_views.xml b/app/views/estate_property_views.xml index a383cba6352..73686c97fa3 100644 --- a/app/views/estate_property_views.xml +++ b/app/views/estate_property_views.xml @@ -42,6 +42,11 @@ + + + + + From 5f72426137dbe0fa5e16b921cfbd62553d737887 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Wed, 26 Aug 2026 11:33:45 +0530 Subject: [PATCH 10/17] [ADD] app: working with filters and custom search element --- app/models/estate_property_model.py | 2 +- app/views/estate_property_menu.xml | 6 +-- app/views/estate_property_views.xml | 65 ++++++++++++++++------------- 3 files changed, 41 insertions(+), 32 deletions(-) diff --git a/app/models/estate_property_model.py b/app/models/estate_property_model.py index af4ffbd0148..988fa8047c9 100644 --- a/app/models/estate_property_model.py +++ b/app/models/estate_property_model.py @@ -39,7 +39,7 @@ class EstatePropertyModel(models.Model): ('cancelled', 'Cancelled'), ], string='State', - deafult='new', + default='new', required=True, copy=False ) diff --git a/app/views/estate_property_menu.xml b/app/views/estate_property_menu.xml index a9e184c1359..bae7038304b 100644 --- a/app/views/estate_property_menu.xml +++ b/app/views/estate_property_menu.xml @@ -1,7 +1,7 @@ - - + + + action="estate_property_model_action" sequence="1"/> diff --git a/app/views/estate_property_views.xml b/app/views/estate_property_views.xml index 73686c97fa3..df4f946de19 100644 --- a/app/views/estate_property_views.xml +++ b/app/views/estate_property_views.xml @@ -1,14 +1,14 @@ - + estate.property.list estate.property.model - - - - + + + + @@ -16,55 +16,64 @@ estate.property.form estate.property.model -
+
- +
- - - + + + - - - + + + - - - + + + - - - + + + - - - + + + - +
+ + estate.property.model.search + estate.property.model + + + + + + + + + + All Properties estate.property.model list,form + {'search_default_name':"Hansil",'search_default_garden':1} - - - - -
From 1964b2dc813d322f02f75737cfdc7e4f21ac7019 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Tue, 1 Sep 2026 11:16:56 +0530 Subject: [PATCH 11/17] [FIX] estate: deleted dummy estate module --- estate/.gitignore | 2 - estate/__init__.py | 1 - estate/__manifest__.py | 16 ------ estate/models/__init__.py | 1 - estate/models/estate_property.py | 30 ---------- estate/security/ir.model.access.csv | 2 - estate/static/description/icon.png | Bin 24122 -> 0 bytes estate/views/estate_menus.xml | 86 ---------------------------- 8 files changed, 138 deletions(-) delete mode 100644 estate/.gitignore delete mode 100644 estate/__init__.py delete mode 100644 estate/__manifest__.py delete mode 100644 estate/models/__init__.py delete mode 100644 estate/models/estate_property.py delete mode 100644 estate/security/ir.model.access.csv delete mode 100644 estate/static/description/icon.png delete mode 100644 estate/views/estate_menus.xml diff --git a/estate/.gitignore b/estate/.gitignore deleted file mode 100644 index 43ae0e2a6c6..00000000000 --- a/estate/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -__pycache__/ -*.py[cod] diff --git a/estate/__init__.py b/estate/__init__.py deleted file mode 100644 index 0650744f6bc..00000000000 --- a/estate/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import models diff --git a/estate/__manifest__.py b/estate/__manifest__.py deleted file mode 100644 index cafe20e7955..00000000000 --- a/estate/__manifest__.py +++ /dev/null @@ -1,16 +0,0 @@ -{ - 'name': 'Real Estate', - 'version': '1.0', - 'summary': 'Manage real estate properties', - 'category': 'Sales', - 'depends': ['base'], - 'data': [ - 'security/ir.model.access.csv', - 'views/estate_menus.xml', - ], - 'installable': True, - 'application': True, - 'license': 'LGPL-3', - 'author': 'Hansil Chapadiya', - 'website': 'https://www.gstatic.com', -} diff --git a/estate/models/__init__.py b/estate/models/__init__.py deleted file mode 100644 index 5e1963c9d2f..00000000000 --- a/estate/models/__init__.py +++ /dev/null @@ -1 +0,0 @@ -from . import estate_property diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py deleted file mode 100644 index 56b90051a15..00000000000 --- a/estate/models/estate_property.py +++ /dev/null @@ -1,30 +0,0 @@ -from odoo import models, fields - - -class EstateProperty(models.Model): - _name = "estate.property" - _description = "Real Estate Property" - - name = fields.Char(string="Property Name", required=True) - reference = fields.Char(string="Reference") - description = fields.Text(string="Description") - - expected_price = fields.Float(string="Expected Price") - selling_price = fields.Float(string="Selling Price") - - bedrooms = fields.Integer(string="Bedrooms") - living_area = fields.Float(string="Living Area (sqm)") - garden_area = fields.Float(string="Garden Area (sqm)") - - garden = fields.Boolean(string="Garden") - garage = fields.Boolean(string="Garage") - - state = fields.Selection([ - ('new', 'New'), - ('offer_received', 'Offer Received'), - ('offer_accepted', 'Offer Accepted'), - ('sold', 'Sold'), - ('cancelled', 'Cancelled'), - ], string="Status", default="new") - - active = fields.Boolean(default=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv deleted file mode 100644 index 88e7f9b0d52..00000000000 --- a/estate/security/ir.model.access.csv +++ /dev/null @@ -1,2 +0,0 @@ -id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_estate_property,estate.property,model_estate_property,base.group_user,1,1,1,1 diff --git a/estate/static/description/icon.png b/estate/static/description/icon.png deleted file mode 100644 index aea18c1e845afe811cb8a30e9c395b7931d3e13e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24122 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 - - - - - estate.property.list - estate.property - - - - - - - - - - - - estate.property.form - estate.property - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-
- - - - estate.property.search - estate.property - - - - - - - - - - - - Properties - estate.property - list,form - - - - - - - -
From d49cd4386e6da20646d4cdd992a14746b399db7b Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Tue, 1 Sep 2026 11:33:34 +0530 Subject: [PATCH 12/17] [FIX] estate: rename app to estate module --- {app => estate}/__init__.py | 0 {app => estate}/__manifest__.py | 2 +- {app => estate}/models/__init__.py | 0 {app => estate}/models/estate_property_model.py | 0 {app => estate}/security/ir.model.access.csv | 0 {app => estate}/static/description/icon.png | Bin {app => estate}/views/estate_property_menu.xml | 2 +- {app => estate}/views/estate_property_views.xml | 0 8 files changed, 2 insertions(+), 2 deletions(-) rename {app => estate}/__init__.py (100%) rename {app => estate}/__manifest__.py (89%) rename {app => estate}/models/__init__.py (100%) rename {app => estate}/models/estate_property_model.py (100%) rename {app => estate}/security/ir.model.access.csv (100%) rename {app => estate}/static/description/icon.png (100%) rename {app => estate}/views/estate_property_menu.xml (74%) rename {app => estate}/views/estate_property_views.xml (100%) diff --git a/app/__init__.py b/estate/__init__.py similarity index 100% rename from app/__init__.py rename to estate/__init__.py diff --git a/app/__manifest__.py b/estate/__manifest__.py similarity index 89% rename from app/__manifest__.py rename to estate/__manifest__.py index b8ab736c192..576370b9b9e 100644 --- a/app/__manifest__.py +++ b/estate/__manifest__.py @@ -1,5 +1,5 @@ { - "name": "Real Estate App", + "name": "Real Estate", "depends": ["base"], "application": True, "data": [ diff --git a/app/models/__init__.py b/estate/models/__init__.py similarity index 100% rename from app/models/__init__.py rename to estate/models/__init__.py diff --git a/app/models/estate_property_model.py b/estate/models/estate_property_model.py similarity index 100% rename from app/models/estate_property_model.py rename to estate/models/estate_property_model.py diff --git a/app/security/ir.model.access.csv b/estate/security/ir.model.access.csv similarity index 100% rename from app/security/ir.model.access.csv rename to estate/security/ir.model.access.csv diff --git a/app/static/description/icon.png b/estate/static/description/icon.png similarity index 100% rename from app/static/description/icon.png rename to estate/static/description/icon.png diff --git a/app/views/estate_property_menu.xml b/estate/views/estate_property_menu.xml similarity index 74% rename from app/views/estate_property_menu.xml rename to estate/views/estate_property_menu.xml index bae7038304b..e5d4bc52aea 100644 --- a/app/views/estate_property_menu.xml +++ b/estate/views/estate_property_menu.xml @@ -1,6 +1,6 @@ - + diff --git a/app/views/estate_property_views.xml b/estate/views/estate_property_views.xml similarity index 100% rename from app/views/estate_property_views.xml rename to estate/views/estate_property_views.xml From 40dd03e6e3b01241762df70b8f5e403462619f2a Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Tue, 1 Sep 2026 12:48:29 +0530 Subject: [PATCH 13/17] [FIX] estate: fixed garden_orientation selection fields values --- estate/models/estate_property_model.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/estate/models/estate_property_model.py b/estate/models/estate_property_model.py index 988fa8047c9..c212bcecdff 100644 --- a/estate/models/estate_property_model.py +++ b/estate/models/estate_property_model.py @@ -21,12 +21,13 @@ class EstatePropertyModel(models.Model): garden_area = fields.Integer('Garden Area') garden_orientation = fields.Selection( selection=[ - ('male', 'Male'), - ('female', 'Female'), - ('other', 'Other') + ('north', 'North'), + ('south', 'South'), + ('east', 'East'), + ('west', 'West'), ], - string='Gender', - default='male' + string='Garden Orientation', + default='north' ) sold = fields.Boolean('Sold', default=False) active = fields.Boolean('Active', default=True) From 18055be6a7806bcda823645f0c6aab49b0a71197 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Tue, 1 Sep 2026 14:27:52 +0530 Subject: [PATCH 14/17] [FIX] estate: file name and model names are aligned with standard --- estate/__manifest__.py | 2 +- estate/models/__init__.py | 2 +- .../{estate_property_model.py => estate_property.py} | 4 ++-- estate/security/ir.model.access.csv | 2 +- ...ate_property_menu.xml => estate_property_menus.xml} | 0 estate/views/estate_property_views.xml | 10 +++++----- 6 files changed, 10 insertions(+), 10 deletions(-) rename estate/models/{estate_property_model.py => estate_property.py} (95%) rename estate/views/{estate_property_menu.xml => estate_property_menus.xml} (100%) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 576370b9b9e..591d9b0e980 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,7 +5,7 @@ "data": [ "security/ir.model.access.csv", "views/estate_property_views.xml", - "views/estate_property_menu.xml", + "views/estate_property_menus.xml", ], 'author': 'Hansil Chapadiya', 'license': 'LGPL-3' diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 20ee8397875..5e1963c9d2f 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1 @@ -from . import estate_property_model +from . import estate_property diff --git a/estate/models/estate_property_model.py b/estate/models/estate_property.py similarity index 95% rename from estate/models/estate_property_model.py rename to estate/models/estate_property.py index c212bcecdff..f939b82bde0 100644 --- a/estate/models/estate_property_model.py +++ b/estate/models/estate_property.py @@ -2,8 +2,8 @@ from odoo import fields, models -class EstatePropertyModel(models.Model): - _name = "estate.property.model" +class EstateProperty(models.Model): + _name = "estate.property" _description = "Real Estate Property" _order = "name" diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index c93296d0b53..05868bd1056 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,2 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink -access_app_estate_property,estate.property.model.name,model_estate_property_model,base.group_user,1,1,1,1 +access_estate_property,estate.property.name,model_estate_property,base.group_user,1,1,1,1 diff --git a/estate/views/estate_property_menu.xml b/estate/views/estate_property_menus.xml similarity index 100% rename from estate/views/estate_property_menu.xml rename to estate/views/estate_property_menus.xml diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index df4f946de19..60fd7f419fd 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -2,7 +2,7 @@ estate.property.list - estate.property.model + estate.property @@ -14,7 +14,7 @@ estate.property.form - estate.property.model + estate.property
@@ -58,8 +58,8 @@ - estate.property.model.search - estate.property.model + estate.property.search + estate.property @@ -72,7 +72,7 @@ All Properties - estate.property.model + estate.property list,form {'search_default_name':"Hansil",'search_default_garden':1} From 8dd22b9e70b89d39d44b1852a8aa63550ab9a588 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Wed, 2 Sep 2026 18:32:40 +0530 Subject: [PATCH 15/17] [ADD] estate: group_by and default filter functionality added --- estate/views/estate_property_views.xml | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 60fd7f419fd..f77b1d1f99a 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -67,6 +67,14 @@ + + + + + + @@ -74,6 +82,7 @@ All Properties estate.property list,form - {'search_default_name':"Hansil",'search_default_garden':1} + {'search_default_group_by_garden_orientation' : 1, 'search_default_group_by_state':1} + - + \ No newline at end of file From 4aa36fd2b54c88cfad22d08fa83f289a1cf8e8e1 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Thu, 3 Sep 2026 14:47:15 +0530 Subject: [PATCH 16/17] [ADD] estate: demo data functionality added --- estate/__manifest__.py | 3 + estate/demo/estate_property_demo.xml | 96 ++++++++++++++++++++++++++++ 2 files changed, 99 insertions(+) create mode 100644 estate/demo/estate_property_demo.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 591d9b0e980..16d2cd0e00e 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -7,6 +7,9 @@ "views/estate_property_views.xml", "views/estate_property_menus.xml", ], + "demo": [ + "demo/estate_property_demo.xml", + ], 'author': 'Hansil Chapadiya', 'license': 'LGPL-3' } diff --git a/estate/demo/estate_property_demo.xml b/estate/demo/estate_property_demo.xml new file mode 100644 index 00000000000..d123684ed92 --- /dev/null +++ b/estate/demo/estate_property_demo.xml @@ -0,0 +1,96 @@ + + + + + Villa Sunset + For Sunset Lovers with sea view + 2026-10-01 + 382016 + 400000000 + 4 + 4000 + 3 + True + True + 500 + north + False + True + new + + + + + Skyline Apartment + Modern luxury apartment in city center + 2026-11-15 + 380015 + 15000000 + 2 + 1200 + 1 + True + False + 0 + False + True + offer_received + + + + + Green Valley Bungalow + Peaceful family home with large garden + 2026-09-30 + 382421 + 25000000 + 3 + 2200 + 4 + True + True + 800 + south + False + True + offer_accepted + + + + + Cozy Studio Flat + Ideal for working professionals + 2026-08-01 + 380009 + 5000000 + 1 + 550 + 2 + False + False + 0 + True + False + sold + + + + + Royal Heights Penthouse + Premium penthouse with private terrace garden + 2026-12-01 + 380054 + 85000000 + 5 + 5500 + 4 + True + True + 350 + east + False + True + new + + + From 4504a5e9ce43a93f932f821de454ab126e66f7f7 Mon Sep 17 00:00:00 2001 From: Hansil-Chapadiya Date: Fri, 4 Sep 2026 18:58:00 +0530 Subject: [PATCH 17/17] [ADD] estate: estate_property_type and view of estate_ property_type added Extend the estate.property model by introducing Many2one links for Property Type, Buyer,Salesperson. Link Property Type with estate.property.type Link Buyer with res.partner Link Salesperson with res.users Create the required property type model Configure appropriate access permissions Add menus for managing property types Update the property form view to display and showcase the new relational fields --- estate/__manifest__.py | 1 + estate/models/__init__.py | 1 + estate/models/estate_property.py | 4 ++++ estate/models/estate_property_type.py | 8 ++++++++ estate/security/ir.model.access.csv | 1 + estate/views/estate_property_menus.xml | 3 +++ estate/views/estate_property_type_views.xml | 8 ++++++++ estate/views/estate_property_views.xml | 15 ++++++++++++++- 8 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 estate/models/estate_property_type.py create mode 100644 estate/views/estate_property_type_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 16d2cd0e00e..e535f304e8f 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,6 +5,7 @@ "data": [ "security/ir.model.access.csv", "views/estate_property_views.xml", + "views/estate_property_type_views.xml", "views/estate_property_menus.xml", ], "demo": [ diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 5e1963c9d2f..40092a2d810 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1,2 @@ from . import estate_property +from . import estate_property_type diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index f939b82bde0..87d24429834 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,4 +1,5 @@ from datetime import timedelta + from odoo import fields, models @@ -44,3 +45,6 @@ class EstateProperty(models.Model): required=True, copy=False ) + property_type_id = fields.Many2one("estate.property.type", string='Property Type') + buyer_id = fields.Many2one('res.partner', string='Buyer') + salesperson_id = fields.Many2one('res.users', string='Salesperson', default=lambda self: self.env.user) diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py new file mode 100644 index 00000000000..73f04e446d0 --- /dev/null +++ b/estate/models/estate_property_type.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class EstatePropertyType(models.Model): + _name = 'estate.property.type' + _description = 'Estate Property Type' + + property_name = fields.Char(required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 05868bd1056..80cea04e07f 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_estate_property,estate.property.name,model_estate_property,base.group_user,1,1,1,1 +access_estate_property_type,estate.property.type,model_estate_property_type,base.group_user,1,1,1,1 diff --git a/estate/views/estate_property_menus.xml b/estate/views/estate_property_menus.xml index e5d4bc52aea..f6745b9861e 100644 --- a/estate/views/estate_property_menus.xml +++ b/estate/views/estate_property_menus.xml @@ -4,4 +4,7 @@ + + diff --git a/estate/views/estate_property_type_views.xml b/estate/views/estate_property_type_views.xml new file mode 100644 index 00000000000..8df8d6fa1ca --- /dev/null +++ b/estate/views/estate_property_type_views.xml @@ -0,0 +1,8 @@ + + + + Property Types + estate.property.type + list,form + + \ No newline at end of file diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index f77b1d1f99a..e32e39f7c27 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -21,9 +21,14 @@
+
+

+ +

+
- + @@ -52,6 +57,14 @@ + + + + + + + +