From bdb23b923fa16f1f9f96b6529f89255109983ce5 Mon Sep 17 00:00:00 2001 From: vidhya Date: Mon, 29 Jun 2026 23:20:21 +0530 Subject: [PATCH] blog template --- addons/theme_aakriti_v2/__init__.py | 2 + addons/theme_aakriti_v2/__manifest__.py | 1 + .../__pycache__/__init__.cpython-310.pyc | Bin 139 -> 175 bytes .../theme_aakriti_v2/controllers/__init__.py | 2 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 191 bytes .../blog_controller.cpython-310.pyc | Bin 0 -> 1362 bytes .../controllers/blog_controller.py | 30 + addons/theme_aakriti_v2/utils/__init__.py | 1 + .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 145 bytes .../__pycache__/blog_data.cpython-310.pyc | Bin 0 -> 17089 bytes addons/theme_aakriti_v2/utils/blog_data.py | 330 ++++++++++ .../theme_aakriti_v2/views/blog_templates.xml | 615 ++++++++++++++++++ .../views/website_v2_templates.xml | 107 ++- 13 files changed, 1053 insertions(+), 35 deletions(-) create mode 100644 addons/theme_aakriti_v2/controllers/__init__.py create mode 100644 addons/theme_aakriti_v2/controllers/__pycache__/__init__.cpython-310.pyc create mode 100644 addons/theme_aakriti_v2/controllers/__pycache__/blog_controller.cpython-310.pyc create mode 100644 addons/theme_aakriti_v2/controllers/blog_controller.py create mode 100644 addons/theme_aakriti_v2/utils/__init__.py create mode 100644 addons/theme_aakriti_v2/utils/__pycache__/__init__.cpython-310.pyc create mode 100644 addons/theme_aakriti_v2/utils/__pycache__/blog_data.cpython-310.pyc create mode 100644 addons/theme_aakriti_v2/utils/blog_data.py create mode 100644 addons/theme_aakriti_v2/views/blog_templates.xml diff --git a/addons/theme_aakriti_v2/__init__.py b/addons/theme_aakriti_v2/__init__.py index 40a96af..b0f26a9 100644 --- a/addons/theme_aakriti_v2/__init__.py +++ b/addons/theme_aakriti_v2/__init__.py @@ -1 +1,3 @@ # -*- coding: utf-8 -*- + +from . import controllers diff --git a/addons/theme_aakriti_v2/__manifest__.py b/addons/theme_aakriti_v2/__manifest__.py index 27e1ea0..b25e4c1 100644 --- a/addons/theme_aakriti_v2/__manifest__.py +++ b/addons/theme_aakriti_v2/__manifest__.py @@ -19,6 +19,7 @@ 'data': [ 'views/website_v2_templates.xml', 'views/portfolio_templates.xml', + 'views/blog_templates.xml', ], 'installable': True, 'application': False, diff --git a/addons/theme_aakriti_v2/__pycache__/__init__.cpython-310.pyc b/addons/theme_aakriti_v2/__pycache__/__init__.cpython-310.pyc index d9e00ce30bafc21f34ee302e5cc7a07c35706a6e..a6b6de9414c961d860e09ce5e84525ac9cd3d048 100644 GIT binary patch delta 138 zcmeBXT+dja&&$ij00cMloU+V-^kWbQ8887k4nSNi03=cvQW$d>av7r-85vTTf*CZK zUorxPH5qSlC+Fvt6y@jSq!tzXX)@hnC<19*$xy@sq`<^4J^kFg68+SQlA=W2#FUi$ Oykh;5iP3sY0!#pZ${c_I delta 78 zcmZ3_*v;si&&$ij00cFzPFa#b`Z0)u3>bkN2OutH0TL+;!3>&=ek&P@K*CUBV!9g> G3j+X&&g`kf+?9!S!O``F^Gc(44TX@8G*u@ zjJNoca`MyTlk@XRit=-EQj7dFnQk!@fi$mVC}IIpVB(jRer{fgeriQYQKD{QN=klS zv3^NLYHn(LVq$htW=UpznUOxikYfG#_{_Y_lK6PNg34PQHo5sJr8%i~AS;VOMhh?k E09hn1oB#j- literal 0 HcmV?d00001 diff --git a/addons/theme_aakriti_v2/controllers/__pycache__/blog_controller.cpython-310.pyc b/addons/theme_aakriti_v2/controllers/__pycache__/blog_controller.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..95ac11f1cc7ea5427ee9b94809871ef6ddec92d4 GIT binary patch literal 1362 zcmZuxJC77O5Vre0%`6NL@zOn7WFy_pNE@ORf<>nbP9gwA(23PEHnY9By9e97%Z_Fx zq$MRIB!KY#l0%3#y8I+gS7pO8TH%qa?Xq3<`TNS#ZEfWQ+CS~?{%%CbXPj&{@R9q_ z^)47rIF+QKC8anHWYC0V2;-1PGHT*7Zjv%-(lVvwPr_rKydgXhbU!-@%K=ZHka2bj zambk3XwR4>d{ZS}_ClM}0R5reS_s1`DcQ2qM%xiiamZ#zOv`@ZJxa_)>lgGKBW|_? zCikIhG=h|rlQIzDe#9vc5G#-0Mm*u^8*)O+*sWw6D+8Xpm4sga#6vrJw!JI6#lx;O zs*_TvRXm-6Lm_0FEc=nMrNiqQj9|t!x4pm zZK50!yr35HxlLXiR%)Tu7A*cv)D`&r`(WC%W-4A8RsCLZ-nDvq9?^7uMxb{5vG0z_ z^2iR(;0_?7#=19l0tX9@4 zH9eun;X2egvj34hAtqc?tdO_CaRk1I!|FO(L%rOBTD}35{62Krq^mn$wW$gX3FTLT zki}wlRABzeDN+aA4#lgv?78s88_T+>&Fa_l+?=V!g{f+3W2ZuY6=M8IGEf4O+2Q6p zP!};{tgyhmaD%op?0MI>T;c82CBI<=ACMAIs>|rUg>w)YpOjP68%%C5IF>ys6k4On z!iZ*c7', type='http', auth='public', website=True) + def blog_detail(self, slug, **kwargs): + """Render a single blog post by slug.""" + post = get_post_by_slug(slug) + if not post: + return request.not_found() + + recent = get_recent_posts(exclude_slug=slug, limit=3) + return request.render('theme_aakriti_v2.v2_blog_detail', { + 'post': post, + 'recent_posts': recent, + 'page_title': post['title'] + ' — Aakriti Events', + }) diff --git a/addons/theme_aakriti_v2/utils/__init__.py b/addons/theme_aakriti_v2/utils/__init__.py new file mode 100644 index 0000000..40a96af --- /dev/null +++ b/addons/theme_aakriti_v2/utils/__init__.py @@ -0,0 +1 @@ +# -*- coding: utf-8 -*- diff --git a/addons/theme_aakriti_v2/utils/__pycache__/__init__.cpython-310.pyc b/addons/theme_aakriti_v2/utils/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35c678ed5c1e6e78e0d65a90de17a6e23db1f0d3 GIT binary patch literal 145 zcmd1j<>g`kf=QW9SrS0{F^Gc<7=auIATDMB5-AM944RC7D;bJF!U*D*iGFTgiGFHD zNl~J1VoFMWUa@{jMrv+qd}3mDQD#YIe3_AcX-Q^Iv3`7fW?p7Ve7s&kD#|LmD_M3RS%!9PAqE0v$QhF3 z9dhWI;jTzHNQ$ONf}$5i3bZI1py*xxm0lD@FL{|>^{&@Nf%f;j=M2eNaiJ)%w9Da~ zIp_U&-sk<8WEU@ z;ehA2!-G62li==QJS>agqiezMe)f04PMY-ALnr^xEpr*?ov_&VGt#qGB`@gK0l9#$*1Eu_;Hbrdp|zkP2w~P#zhKG#oa=W;%X4&L_>IIEuJF-F!DY3d$__fUB%~->wFa z-PPbRPh+8=?8m`gna4#jy-;1-Pe#S`;t$5dIJkOaBe-_u+KuV?w}U}44DvXPrW>2w zHHe>tP8d%PuWc4(SSFp#BJXS_gWjg!Luin{hY@!eJDY$skS>cE)BncPHKmCfPU-B6c21q>aBDpfwA6g(x3gWfnU%2w?G`v|Rw*$Gn1g3&ldTs`*BNwRL&1gotU zrgW?l5h2U6pT}{~(NRZvGVCNHBzCj5@GWl1hP|yg%#oywPFmeC6LMO@DI%C#x=j#vYU*Fm*!yGx6!TmTy;8(8&53*s|FM@~T z^42C_sNXT#(vb&pv?3d0EzPi7#(BVQkj_Rh>Stxv%fk`A$FCA^H_h@e4WhV6dP6=9 z+F5oGj7Pzzu0Pnv$`bYTHt2uoL%Ciw6ZK#KWX8!_LAyvSWnu$22K$y~-dv z*^osFlXL9}i*32XhQkRq0gkNJ!Ol1Vcz!6?x?`@jFaLTc$&1x0uy0m=Z6ZPg618&) zP8}tA+$k}Su#%3cEE$Y&&u~}HC1=amyRV zy{t?meUQM^){gsO+TEzhMEe_r!?5SoH3yd>Gi?p!Ywmd{2%F9)tzf$hswi;B>}LZ! z<4eORt$Vt2)F>{)BsHMu=Gj2ci^35OF~kSP9fK+sH%FFT9tDIAQ)yv0`K1qm>)C>CnxCCZ8z8^f^cxt*d7X*tn?`#FOp*TCcbFs7C)8U9>=^v90~^r zYG%FOwZc3PhdrXiu&m46NhKAk%cVN~ED?yikEKwdS83M@A{0iL$K4dm36AuGfAz0xRTq z$2^BEpP<(d6yZe=1R?hn5rVt(;ImS>0?a7sb|E9gCnQ!L#j#jIPe-VPCih_F@sPC% zc1}5&VlO-fLv<&tZU0t0*wS%tZSsS(#Fi!?BmPf>5jxu@Wuw79@N?iz3v)>hk^6v< z4YArlQ=J1jPHlDUAvYiKK?fakkBJdogoqZ1iASd0Vr1k%XOLK8V7@o0z8i%)Hl~{8 zb@RDvHe6!61vC#M5kDIS*+?Ko04pa_sA&cxboyWEZlkS7P$l~|Fhw|S@q;kTVG{SlD4Krt9U%b__pM-8I157!?s%BKd}{W>V@DQe=VW1Wli67Z3zuJ< zofbizohcKj)$AOB9mLHiv(s?hc=kC~i=GHhXJ?WD_&R$*;E|8Y*$X-$`<$JH)bz7_ zcESD2x3$vgGVB%8*9L4qsl2hGv`y#5%~JgIdk>bsGUv4p<8DI9;Ue<4{XC3Jl?5Ty z^Qd$({h|lM_lCtNag1?#;XybFu6?Isyf+q%xA|PgTkX{-??1Z5_4qL8jxB0ePG$VB zpAAtc-f@I68Rp>g7VG0r$ATa26t;@-g6<=sU(OW;NJvXe_;BiyJ?cx<(}7Mi+(Rz3 zf_HImsHt3)2o+^PQnto_y@K`DMd^2n;R|SCHDZsRU@fSqJyup1KV7EX&(IpDvsUo9 z55VZW-EcsT#6jBd%-$S^V5@UY$^BFL`Y24n9pNi*i(ra68fy`L>@Q@4ZO9at>!R2O%8+tay~+P zQp6_!v?H{h%k7%JQSzOn=qT}-1bc*4z-A>>?>IV%0!L6&p5~dqr~;k~>Jvh2>SeQgUL-7l3B!@W++H9n@Z6Zb?z#CXx2?)Nz zXhhi+j=8ArqX8PnTRg)*K`rkjIx;H#C@JK1`(SVwt<-{x3k&P_PVI~v@+Ue%c<4@K z((rUG2WIxh;+7Wgy-6d6+L6lmDU1W@h!`VO@;oPIR7r-Z%!IPQ!ZljKJNo7@c#l-8 z`55DmbF}P$y6zp8@(nC~h9)M5z_ZD=C)JEX#6zf8(IFideGzTNNMOT1V7rSkQCQf+ z{`7OSv`)EV-|dHJ-$6{os@Mh`hdpEqGuf#npO{rjZ#Cnqlpr@V#2pW3W)5Jy*i(_O|G!~Ju zN{R_8hL!HP ziyh^b%@2sK9VDznc7Ymxq%J3&a9|96o*2fF0lx7a7@7C{Dsa{gW(?&i85PwMVHxH# zc@r?v=XpYPN={y829mgG+zpJW`A3P=$ih6Ny6nHUzJg1YY62V`JcoQi#vnr-hAssW zf7KQ$o(=`D7-#?(mc=S*jQ&;c8zoWmrI!5}SU*{b$lz_Rs;9%o57Ae4t$ z4q*~~bl_Io@{%+7auH5Qo<&Zwn!MhRRTV2`W-fUY?bV*cEh{)wgcO>2u|_}gb?U6M zvv+K>(^pYdFNXMGjE3(`%2vauXj)OSMPTJ@cji}Nd%7CjAsQn`omF4-<=WXGL|Cq^>Gh)o(e_NJYlGBrzJZRgzGN`K;z2(bNks!yhT}7Zz}EOTD~R1b3U-T& z?(j>8xR}SIgfvM8KoO{hbMhN~jbw!{P?6=iRgNnQr<+6cB1^$Q{ef2jou)7gw1wT zceUa|F9ram4}Sn>u4>TKwhHxX=&XP=-n z6*?Y-BdK_$e8mXGA0%P@ON7|v^RC5MTE%#BC!x_wGrUT_5^Vi64&Xq-t3SaqdC#~VZ16q zr({32Xv{Mp;C5oKQ0|AUkUUwEV=>iaVF%$ObOmom$#A}?0pyM0BqJWdom!r*}*fLjT-0e78i=kd63g=?$mTa>S)?VzPV zN3OY-X5a}fPNypGAQ2Z1oHDIr$+2r1nn$@&j!jW3H``Q&ual4gDD6_KZk4EDgDONz zt@QR}*2H!y1&%`LPNIggFk8~?%g635rY~(nj?>`UHO~TD&t-n|9g6pj|AEbKFF~NQB%&YLlx<|eDyr6qmlk&J z8hK({7EwjHI1sm?Ueu-E9cJn)$J!vKCzYHaZ%}MdPDyN{p7IUAm5x`=)p*B!v}i7u@JtUaJy2?eBtv;#8e zBvqRa^Hrwkq*E1wXm^a*0aTMr-t<{BKG9acIg8~c8KF(bijy*bt0w#UqMk11Dv|*Y z5e?f|)utE`omGWEav5ZmRVOH*2i5Vv%VD_Ty)Wnd?)Ua{Mm5=8fW++D&%G?*J;2?|LNlma$wpWuYnrz@OzG$BR?L7{z0A z2$a;XDhWJ8D@^cso7kXBiJ!69rQCuBmPQINX5k_Pk#eE|O(%tMrjweEO|iE3L6{#9 ziHTn}@4>EI_PoFuWh8PEwt%3t;cVRLk1~SSDg=bO->v-0>kLY1!hXQKz=`@nAJf(^J18YtzfHs&|NBQ*sq-OD;;6(V~w1YxJBEmE#pm9E&4)UC=4 zQnX%u2!QwmIXh(6!rLE_=s8-!vsTJjgc8s7{YUo5ZScN`emJyZJX9iQKHy={Bd5L= zj-w=NIxDUT!QZdrRW@xV2dGI^s?H`zwU|&c9l#(UPRIosJ=Tq%7c7-ndPFgCyy>P5~)_1!$ALpxF>7znlZ6BkSosQkfH zH;aKo(_uB~{2mO;70_JS)e3eFV$?>p1~-v;-mO_xRr}mL-p|hLC@Rg) z-nG9TO7z&sL?NwKT5yU_A zWy9&`=il`Yy67lYHA49OCTg`YE3ExyTYF*H&TV$NPNgQOvtkQN#s`FUY7NZ8y4XzB z%B=N50X*lW=!#Y(8I$l~{u~2wkBByJv{b~zR0HJ=P^=p(%5B@L))R#bgX>pH!2O2( z%_48}gL#M%#wD8sj=G{uvcY=u>pePp?$ibZU`?ey)MT!qWX>}hD-rmJUzG@}a(#W- zdpf*)Sfa!zG$p8*Q5DyKmog-!fv#vs4!?(gWPB0siAgvssf1VaMe`Vk5A2LFfD(4~ zoGRvOy0u$%IQKPo>S)&^Hx=Z<@;w`RVdL*wV|^u-aW9oaW@D<&I`?D&P{&S>A;2hn zUEE2HJA`x#N!Nw9?c@fTgfWACc5}{*UwS*(rWjT96^H*s3?<)d@wtgxseQWLO~} zCNmtb0z8P7hCsdAv*eZYO3W3{G41cvfm=n{lUV9bY1o8m?Wj4j_Qz=AVm2p|W5m%Bq6m0aSo; z4Ak9nr7lS-|6Rf#^lCu)14nT!0ep)a#h2|i*XKa2)+nYF={+<5$meA_5d9<7Pc$8g zWPEW3%jW`}ffI|b$`%uIZ3MO_3T_l-my~(6PO4Jg!WHkJgA%iC77+xYQz@wXb<}&RDMS5_oixY z?9{fubUL>8Y{&E5j>omxi%YaBf0>ff)I}xN@oYK_Z~8H)W^W8jn>P2^=Qig@hZY$X zp?;`wsk>Gd+jX;3AGq16>4iJ4NO#X}e(8bI%;4&L%I({W=I8TEVAT0>-pSS0QQRI) ze{By1mEZ>TXal~kPMG}^I{bo7SMM)~pcB+UE(ZRYX0b{oMpQ+8e|%^3uCz0!I`TM0 zGd~&98h@Ghm1-8lTOD2^DkdSidem7A5h?HhfS$EG!_geRkQZk)2dk|NrmGBJorP>O zl1?nKR?D3Z1I}R&O_*D?z|+>)Fkf=jGG{F+*whxT4$Svh-6~o(VwCEM8t<%LrVxzT ziBx*iPjiGTJ^ACq+R}5uX%o7`)JGmBVat#f85HReoXv_QOYs}Tz47}o=7)V*mcXF!n;D0pB_J_rIOR{W}>xn{hq=@$CUg2Hrgo0&W}6kQo~ZRPpY9DEK8UJPa|Y)I3Z zur@1ssq2LFDBEYuPGcz8DfV6VRkdO+s=l^fgK`t+C{a*sg^wcNdJ zZCgKerFQo#KP$%evWxhg0}5~3g5Sn;^^AsPO-LSOF1>x_ zjmms|In$ivvZ`mi`sDUlLDHq`SKiPSPOGS8d#yEo#ppH>CDeU zk#5?DRtTj`#{4=R>?86kE1ZQX(-W$M9VYQnO$Tly)|BrDFPI2czl?gI#32NPmug(o znP>HEHqHFFRXaF_LO^|8jFXo~1eltksQ|mm#7@#eHTo;!R}IF>lAT6Y${glg8-{oL zgs*y45G82}(g?BoJ);>64bi7PiX}ufFX`+88)L@YtzlR@2C82g@6_C(Kl67eN_xHd}rl70dP#4^e5f5(Ncf>dZ3P7vV6ccv5J*|W6Ow^~fzQ_T zT8=OMtHbk5e5}sw0Z&*Kz*LDRCRog1*IVa2;46zQJ9Wh$-#~ddGI6I61RKbuL;r6aJ7F+ z%CcQhsis(n0v&6c2gg+0Z#H=36CL|xZtGgYbpl<6D_2rfahZUey|#G7=#Dz#3vU;^ z6({weNgAYgYdd%^lcL72ji}{p9#0_6$_>1vLaQ>QT{W;+Zgujtn;?n zX}#y%fpgdXX#8-O|BBQ6Rj%>s_xkk9k7BYky5Q_&hTj? zYH*TM)9vac6=|Ix2RcLZg?Hi-n7iKXF|2)G)j>wm)x)qM`&KTwyq|xCzb`lJm)U9U zc5(RpYh0VXtfT0{llJ6^*1N6K=>JUMT;sy}x%I~XajJk{-~TTiqoeawfAm51U!jx# zVy(-mqQ=k9>6CxD{*%UM{GSYbw*FU*SEQlS)3^P(G_M1FH1Tl&Unz&lQa5LU+u0#? zKq4$#YCR)S9qvo~S4fpTr1+!rCegK5)_%Ema4K(nw*I$`PbJHBJG-6wa%0wLU74+q zFo+B8L9rd#$;8BQ{+2*Zk#Ot1O0BQ1O}{BAxlKErw{F>lNU_Ba)eT?&)DV)fbU^ewiOGH{Q=*)4ykCFFbh?Wt}Ha@~>(E3EDJb zUt7|rnYEqb+^qpkx-{Nm)wSZE`Rnw0<6L8X{=Y`!RO1_s^|R}z|Gja2{^@!{pTB0G u|3~BMvCrSI&;PA))e@_&iy}#aC)Qw literal 0 HcmV?d00001 diff --git a/addons/theme_aakriti_v2/utils/blog_data.py b/addons/theme_aakriti_v2/utils/blog_data.py new file mode 100644 index 0000000..7dc8840 --- /dev/null +++ b/addons/theme_aakriti_v2/utils/blog_data.py @@ -0,0 +1,330 @@ +# -*- coding: utf-8 -*- +""" +Aakriti Events V2 — Blog Data Utility +All blog post data lives here. Each post is a dict with a unique `slug` +field used for URL routing. +""" + +BLOG_POSTS = [ + { + "slug": "how-to-plan-a-luxury-wedding", + "title": "How to Plan a Luxury Wedding Without the Stress", + "category": "Wedding Tips", + "date": "June 15, 2025", + "read_time": "6 min read", + "image": "/theme_aakriti_v2/static/src/img/wedding.png", + "excerpt": ( + "Planning a luxury wedding can feel overwhelming, but with the right team " + "and timeline in place, your dream celebration becomes effortlessly achievable." + ), + "content": """ +

A luxury wedding is more than just a big budget — it's about creating an experience + that feels personal, intentional, and effortlessly beautiful for every single guest. + The secret to pulling this off without stress lies in three core principles: + early planning, the right vendor network, and clear communication.

+ +

Start at Least 12 Months Out

+

The most sought-after venues, photographers, and floral designers book up quickly. + Starting your planning journey 12–18 months before your date ensures you have access + to the very best. Begin with a clear vision board and a realistic budget conversation + before you book anything.

+ +

Build Your Dream Team First

+

Your wedding planner and creative director are your most important hires. + A great planner will have an established vendor network, negotiate on your behalf, + and manage your timeline so you never have to worry. At Aakriti Design, we handle + every detail — from mandap construction to guest flow logistics — so you can + simply be present on your day.

+ +

Design Around Your Story

+

Luxury isn't about excess — it's about meaning. Every floral arrangement, + every lighting choice, every table setting should reflect who you are as a couple. + We begin every wedding design consultation by listening. Your cultural background, + your favourite memories, the mood you want guests to feel walking in — all of this + shapes our creative direction.

+ +

Plan for the Guest Experience

+

The difference between a good wedding and an unforgettable one is how guests + feel as they move through the day. Think about arrival moments, cocktail + hour flow, the reveal of the main reception space, and the energy of the dance floor. + Every transition is an opportunity to create a memory.

+ +

Ready to start planning your dream wedding? Reach out to our + team for a complimentary consultation.

+ """, + "author": "Paarul Ladd", + "author_title": "Founder & Creative Director", + "tags": ["Wedding", "Planning", "Luxury"], + }, + { + "slug": "multicultural-wedding-design-tips", + "title": "Multicultural Wedding Design: Blending Traditions Beautifully", + "category": "Design Inspiration", + "date": "May 28, 2025", + "read_time": "5 min read", + "image": "/theme_aakriti_v2/static/src/img/cultural.png", + "excerpt": ( + "Designing a fusion wedding that honours two cultures with equal beauty and " + "respect requires deep creativity and cultural sensitivity. Here's how we do it." + ), + "content": """ +

Multicultural weddings are among the most beautiful and complex celebrations + to design. When two families bring different traditions, colour palettes, rituals, + and aesthetic expectations to the same event, the challenge is to honour them + all — without making the event feel like a compromise.

+ +

Start with a Cultural Discovery Session

+

Before we pick a single flower or choose a fabric, we sit down with both + families separately and together. We ask about rituals that matter most, colours + that hold significance, and moments they want guests to witness and remember. + This forms the emotional foundation of the entire design.

+ +

Find the Visual Thread

+

Every beautiful fusion design has a unifying visual language — a colour, a + texture, or a motif that bridges both traditions. For an Indo-Western wedding, + this might be ivory and gold paired with lush greenery. For an African-South Asian + celebration, it could be rich jewel tones with intricate pattern work. The thread + makes the event feel cohesive rather than divided.

+ +

Zone the Ceremony Thoughtfully

+

When a celebration includes two ceremony types — a Hindu ceremony and a Christian + blessing, for example — how you transition between zones matters enormously. Lighting, + floral drops, or even a simple walk through a beautifully designed corridor can create + a meaningful moment of transition between rituals.

+ +

Communicate with Vendors Early

+

Caterers, musicians, officiants — every vendor needs to understand the cultural + context of what they're contributing to. We brief each vendor thoroughly and ensure + all timelines account for the natural pace of different ritual formats.

+ +

We've had the privilege of designing some of the most extraordinary fusion + celebrations in the region. Let's talk about yours.

+ """, + "author": "Paarul Ladd", + "author_title": "Founder & Creative Director", + "tags": ["Multicultural", "Wedding", "Design"], + }, + { + "slug": "stage-decoration-trends-2025", + "title": "Stage Decoration Trends Dominating 2025 Events", + "category": "Trends", + "date": "May 10, 2025", + "read_time": "4 min read", + "image": "/theme_aakriti_v2/static/src/img/stage_decor.png", + "excerpt": ( + "From dramatic floral backdrops to architectural LED installations, " + "stage design in 2025 is bolder, more immersive, and deeply personal." + ), + "content": """ +

The stage is the centrepiece of any celebration — the place where memories are + made, photographs are taken, and families gather. In 2025, stage decoration has + evolved dramatically, moving beyond standard floral arches toward fully immersive, + architectural experiences.

+ +

1. Organic Floral Cascades

+

Tightly packed, symmetrical floral walls are giving way to organic, cascading + arrangements that feel wild and lush. Think trailing jasmine, oversized garden roses, + and dramatic foliage draping from asymmetric frames. The effect is romantic without + feeling rigid.

+ +

2. Mixed Material Backdrops

+

Combining fabric draping with metallic accents, geometric frames, and live + botanicals creates stages with depth and texture. The interplay of softness and + structure creates a visually rich backdrop that photographs beautifully from + every angle.

+ +

3. LED and Projection Mapping

+

For evening events and corporate galas, projection mapping onto stage structures + allows dynamic, programmable visuals that transform throughout the event. From a + soft warm glow during dinner to an energetic light show for the reception, the + technology adds theatrical impact.

+ +

4. Custom Monogram and Typography

+

Couples and brands are increasingly requesting custom typographic elements + integrated into stage design — neon or acrylic lettering, laser-cut name panels, + and illuminated monograms that serve as both decor and branding.

+ +

5. Sustainability-Forward Design

+

2025 is also the year event design gets more sustainable. Rental flower walls, + reusable structural elements, and seasonal, locally sourced florals are becoming + standard practice for conscious couples.

+ +

Want to see how these trends could work for your event? + Book a design consultation with us.

+ """, + "author": "Paarul Ladd", + "author_title": "Founder & Creative Director", + "tags": ["Stage Design", "Trends", "Decor"], + }, + { + "slug": "corporate-event-design-essentials", + "title": "Corporate Event Design: Making Brand Moments Unforgettable", + "category": "Corporate Events", + "date": "April 22, 2025", + "read_time": "5 min read", + "image": "/theme_aakriti_v2/static/src/img/corporate.png", + "excerpt": ( + "A corporate event is a brand experience. Every design decision — from " + "the entrance to the stage — should reflect your company's identity and values." + ), + "content": """ +

Corporate events are often treated as purely logistical exercises — a venue, + some food, a speaker. But the most impactful brand moments happen when design + is treated with the same care as content. When a space feels right, guests + pay attention, they engage, they remember.

+ +

Design That Communicates Brand Identity

+

The moment a guest enters your event, they should feel your brand. This means + your colour palette, typography, and visual language need to carry through from + the signage at the entrance to the centrepieces on the tables. We work closely + with your marketing team to ensure design coherence at every touchpoint.

+ +

Entrance Design Matters Most

+

The entrance moment sets the emotional tone for everything that follows. A + dramatic brand-installed entrance arch, a branded photo wall, or a thoughtfully + lit arrival corridor creates a sense of occasion and signals to guests that this + event is special.

+ +

Stage and AV Integration

+

For conferences and product launches, the stage design and audio-visual + production need to work as one unified system. Screens, lighting rigs, speaker + positions, and branding elements should be designed together, not assembled + separately. We coordinate closely with AV teams to ensure a seamless result.

+ +

Networking Spaces Deserve Design Attention

+

Breakout rooms and networking areas are where conversations — and deals — + happen. Comfortable, well-designed networking zones with good lighting and + thoughtful furniture arrangements significantly increase guest engagement and + event ROI.

+ +

Planning a corporate event or brand activation? + Let's create something exceptional together.

+ """, + "author": "Paarul Ladd", + "author_title": "Founder & Creative Director", + "tags": ["Corporate", "Brand", "Events"], + }, + { + "slug": "birthday-celebration-ideas-adults", + "title": "Elevated Birthday Celebrations: Beyond the Ordinary", + "category": "Birthday Events", + "date": "April 5, 2025", + "read_time": "4 min read", + "image": "/theme_aakriti_v2/static/src/img/birthday.png", + "excerpt": ( + "Adult birthday celebrations deserve the same creative attention as weddings. " + "Here's how to design a milestone birthday that guests will talk about for years." + ), + "content": """ +

A milestone birthday — a 30th, 50th, or 60th — is a significant life moment. + It deserves to be celebrated with intention, beauty, and personal meaning. + Gone are the days of a standard restaurant booking. Today's elevated birthday + events are intimate, immersive, and deeply personal.

+ +

Choose a Theme That Reflects the Guest of Honour

+

The best birthday events tell the story of the person being celebrated. + Are they a lover of travel? A fashion devotee? A nature enthusiast? Let their + passions and personality drive every design decision — from the colour palette + and centrepieces to the entertainment and menu.

+ +

The Importance of the Reveal Moment

+

One of the most powerful design tools for a birthday celebration is the + reveal moment — when the guest of honour first sees the decorated space. + A well-designed reveal, with controlled lighting and a dramatic entrance, creates + an emotional peak that guests carry with them forever.

+ +

Intimate vs. Grand — Both Can Be Extraordinary

+

An intimate dinner for 20 can be just as visually stunning as a party for 200. + In fact, smaller gatherings allow for more intricate, personal design details — + custom place cards, hand-written menus, personalised table settings, and curated + sensory experiences that wouldn't be practical at scale.

+ +

Commission a Signature Cake

+

A custom birthday cake that reflects the guest of honour's aesthetic is one + of the most photographed moments of any celebration. Work with an artist-baker + to create something that becomes a conversation piece — and the centrepiece of + the dessert table.

+ +

Ready to design a birthday celebration as special as the person it honours? + Let's begin the conversation.

+ """, + "author": "Paarul Ladd", + "author_title": "Founder & Creative Director", + "tags": ["Birthday", "Celebration", "Design"], + }, + { + "slug": "event-decor-colour-palette-guide", + "title": "The Art of Choosing Your Event Colour Palette", + "category": "Design Guide", + "date": "March 18, 2025", + "read_time": "7 min read", + "image": "/theme_aakriti_v2/static/src/img/gallery1.webp", + "excerpt": ( + "Your event colour palette sets the emotional tone before a single guest " + "arrives. Learn how to choose a palette that feels intentional and cohesive." + ), + "content": """ +

Colour is the most powerful emotional tool in event design. Before a guest + reads a single word of signage or takes their first bite of food, the colour + palette of a space has already communicated the mood, the personality, and the + intention of the event. Choosing thoughtfully matters enormously.

+ +

Start with the Emotional Goal

+

Ask yourself: how do you want guests to feel when they walk in? Romantic and + intimate? Celebratory and energetic? Sophisticated and calm? Different colour + families evoke different emotional responses. Warm terracottas and earthy tones + feel grounded and welcoming. Cool blues and silvers feel refined and elegant. + Jewel tones feel festive and rich.

+ +

Choose a Dominant, Secondary, and Accent

+

The most successful event palettes use three layers of colour. A dominant + colour (60% of the visual space), a secondary colour (30%), and an accent + (10%). This structure creates visual harmony without monotony. For a luxury + wedding, this might look like: soft ivory (dominant), dusty sage (secondary), + and burnished gold (accent).

+ +

Consider How Colour Behaves in Different Lighting

+

A colour that looks perfect in a mood board can behave completely differently + under warm uplighting, natural daylight, or cool LED wash. We always review + fabric and floral samples under the actual event lighting conditions before + finalising any palette decision.

+ +

Cultural Significance of Colour

+

In multicultural events, colour choices carry symbolic weight. Red is auspicious + in South Asian traditions; white is associated with mourning in some East Asian + cultures. Understanding the cultural context of your guest list ensures colour + choices feel respectful and celebratory.

+ +

Test Before You Commit

+

We always recommend a mock-up table setting or a small test arrangement before + finalising large orders. Seeing colours together in a real-world setting — with + real fabrics, real florals, and real lighting — often reveals refinements that + digital mood boards miss.

+ +

Working on an event and unsure about your palette? + Book a design session with our team.

+ """, + "author": "Paarul Ladd", + "author_title": "Founder & Creative Director", + "tags": ["Design", "Colour", "Tips"], + }, +] + + +def get_all_posts(): + """Return all blog posts.""" + return BLOG_POSTS + + +def get_post_by_slug(slug): + """Return a single blog post dict by its slug, or None if not found.""" + for post in BLOG_POSTS: + if post["slug"] == slug: + return post + return None + + +def get_recent_posts(exclude_slug=None, limit=3): + """Return recent posts, optionally excluding one by slug.""" + posts = [p for p in BLOG_POSTS if p["slug"] != exclude_slug] + return posts[:limit] diff --git a/addons/theme_aakriti_v2/views/blog_templates.xml b/addons/theme_aakriti_v2/views/blog_templates.xml new file mode 100644 index 0000000..17b52fd --- /dev/null +++ b/addons/theme_aakriti_v2/views/blog_templates.xml @@ -0,0 +1,615 @@ + + + + +