From 63cf731d1f2931da8c844cf48be315f076fdef24 Mon Sep 17 00:00:00 2001 From: Flatlogic Bot Date: Thu, 20 Nov 2025 19:43:30 +0000 Subject: [PATCH] pooling in chat! --- core/__pycache__/models.cpython-311.pyc | Bin 4089 -> 4181 bytes core/__pycache__/urls.cpython-311.pyc | Bin 1176 -> 1319 bytes core/__pycache__/views.cpython-311.pyc | Bin 21642 -> 21876 bytes .../0007_conversation_is_generating.py | 18 ++ ...conversation_is_generating.cpython-311.pyc | Bin 0 -> 811 bytes core/models.py | 1 + core/templates/core/chat.html | 250 +++++++++++++----- core/urls.py | 1 + core/views.py | 7 +- 9 files changed, 205 insertions(+), 72 deletions(-) create mode 100644 core/migrations/0007_conversation_is_generating.py create mode 100644 core/migrations/__pycache__/0007_conversation_is_generating.cpython-311.pyc diff --git a/core/__pycache__/models.cpython-311.pyc b/core/__pycache__/models.cpython-311.pyc index c6ae9db56a250a75ec9adf5b8fd67e319a2ea5e2..a1c59e5fba9486c62a9f89b3eb98c27fdf22ae9b 100644 GIT binary patch delta 372 zcmew>`t2bMV=wu&!ZS#>l|1 z8i*kviZg}1g&~S7g(H|jlk*mjbADb~YEf}wNoIat5gSlV5j&7@(_}2tnOwo1A*cuv z5(W_>K*CRxd-6wiIoVr0PWkycsfl@RnW;G`w|Fy)@7T~$YXf^pc&wECb$=7*}8G|Qt^QmwJfE0iTgUObB5sU$o zC-Ld3fOUaoWI@s(M;8eKiC-Kxx%nxjIjMF<;gcWp)#|V@N_}9!Bqo?mvH1uR|ALSd JnB2pk3jj;;U>yJe delta 289 zcmcbr@Kc_5IWI340}u$s$!G50$oqqhF=BEouk2)dMuo}F>>^qztSt;t94TzU44Uk> zc%1X|%2JDp6H7Al^NQGj+KSkLL`V@QkeqD5>NWW*yC|muNL&~s;=-rI!Utl6ap*Go zPX5EBJoyoi#AJ77>CNvsk{B6nCI@jfv$_CPXimPxrOfCy`5)IdMxDu9xu>wW0YxXV ziE>#0=^_xJJUNHw8l%NzXWsXW#*>Ztj2Qzbr}L?B`GFLG2>r=Z`63woCcop;WdrN- ro2LfCkoXsbB;VwB{9=>;@rMHdK`=*X diff --git a/core/__pycache__/urls.cpython-311.pyc b/core/__pycache__/urls.cpython-311.pyc index 0a046db79f7a97fa9a38d3c364c517d7882c8501..b6c3cc44283895765a7b23ef7a4dcd086bc9837c 100644 GIT binary patch delta 251 zcmbQixtvRVIWI340}xEemd`X{W?*;>;=lkOl<~Q5qk1ai#0jjL5~<8tyfEn$$u;cD zfO=K~F$AP@Me(Ib1v6+$Z=S}e%@|N+ke*r+pPZjpmReMtSdy8a7oVG2T%4GmTC8uA znO9ev}(pigyfR;_xX7=Th0WuhYxLAF26Ehp5<_#8(2A2z* k);mJ4*v4E)uDifef03pB3QPS5QEq;w25t~6k^*V~0Aig(i~s-t delta 109 zcmZ3^HG@-qIWI340}u$s$!Bh6Vqka-;=lkel<_%hqk1YMS2|}DZ;C`PgQn!>U5wg{ s%zm1DlTDe^Cog37<&p*}Wd!14zRf?F*%$>r2y^i>HE@Gqkt9$Y037)f{Qv*} diff --git a/core/__pycache__/views.cpython-311.pyc b/core/__pycache__/views.cpython-311.pyc index e1d23ecb2793b46e9aa2de9c18a371bbfbb12ed8..0c8979adb07ff71cc52a7f47c275d3d6957f9c0e 100644 GIT binary patch delta 1458 zcmY*ZT})eL7(Q>Ir);!vx&lQg(#nsN$;6p${JWTy|3QHoByOA@dJb(_X}j;7jvu?g ztxV#U?`}46Q3H%^CVDOwOiXs6$zozs42iRGZnv74U_!j`%I`g0jlMbGljnQh_xpd} zvvC)WcA;$BW;@O?bH?kV&3#{%MQrdJU9x=v6MA!5y9vhWw9o?6`nuo&2+&XMtuUki zVBfUxK{kp=dhn$+VE*Sd+fbR8P(O)KgAkw@*V)EPNM{j(400uLWl7W|^$IzU+Bkxr z{^e?cq+VY)Rt|G|{Iz5$1nIMLO)##TJ01co(Qi82`1dgOGCk~k4D)oa>kPky!X`cH z%EB7`uKUgYO(x`cDVbE_GBLb145>xg7FIMdLBtSIBuybJ=)m(67kY~q645w`U_VOx zdfL|(P_-({8j(Vps3Ez6-T{O`ge1Z+!U#eP;Ua^a^+G~X#}b-vIjU;jD)JF}K17ct z!juGA$rUZCVR8-iWz<2;Rfkf{wJ1j8szy>F`bW8V&bBrs!~{C zH@4E-58L{q-tR5&IlbX?!3^E;{mDO11Nk*gf%niy{hg4Z=Lb*HrUBmxxinoQma@eR zOBda-(*5zKA-tLwwoq1J+RFvTacP)``_?TJ$K7KsZ`aLiHnS)c`f2kWJI>bKR8Tlh zwxvNX%b2!+jbtrvQ=InSm~vT=?HQAN;=Y6aKJY3yC|E0@g0>9$+PsA^Y!94VndZ|L z4Rh;-X>A3@aSK)SsmTamTAO>ti57_qYs3DRE%tJi{zt_q<9QMy7A zNfTv7lcF&%3dP@S1YGCJ~lD#7O1~O!S)aiEg~Dj|r>x0Lu|~RCN>O zYAQ+;`BWjsNdA7Du9f3}qi2Q&z)7zUd0>HlGUPl(LoUHsKFE4Tevu7&Y`7Ng(WYU~ah<7??Bdm*segE{*k%)f zT1VPlhdg)c^iAu5(E3Dh{UmsP6g>Mv!-3F{6&h&I$Q!4f4Ld83#cbnc_U$`o51g}E zVfLw`e&<~Ft;wu=3cpKY))Cxy1P>g+tTm{wkJJL}(#)u*_A9omikaeelUHzKy9Ib( ze=^z)?_fF`waKpM7IHkjw}hCHV}j<@I>vJRH7S--RO7tlb@Um*#l(&L-?}2VXk@I- z{E&(3`t7mLK)|ZXm-rmAReI6iQAv?jBN*w>W5m$g{u=BRKV4jx-|2tNFX6 dXE7nCVoD$RR(~*g11g%qa>)H3Ch2IP?;i<0Z#@72 delta 1255 zcmY+D-)|d55XU`nd@hZD1t(32UB#viscD0Pply=I5uiFhOzJpsDHT6-J?yJ}ZhRN^ zHoxGYJX8pp7AocescNMPP)bTvQBHzZ2q^*~6(l4h`g9M#KY&!EiburGxoN~o_qo~c z%^bX&W7sNhLWS7zm!YMM$} z6*sn=9)(qVBmJ`<4&zED4k`RR^SAV+1?;+oASH2QbPx=@GQJmk#xhynAwG0}R0Eq9 zr$pT!7Mz6jmenSY=L_*P##_Ep!1BqV&AH{f62@e5_rpBADS134p9Sj@X2*LWf)Hqj zAig)A>D#pxVR=d+OS1gDXG`O~TXr>yuLpKuT?+3EU-GVc#V?4bF$$hkB*$9CgvmHO z(fKTu(HoJX!PKE*Md5Nu<%%|&g2p|+Pl3-7IN_{7s>zYK!bJWV72{F7Gcg8j7|$j} z!H;A+dYy-OMN~ye)60%@)HT_vh;*cqqSg%E@tI;h$CYe+pPNj#+9{)qJ|}i}*EqqV zp)aV+RJdm7CcB2eWs}>#5)m`t@tBwK-|Q`~KiG}mKHrc2$tR=HSUvv4Mz|i${~FET ziRSBpyj`7)0j%M>N0PA{Vx>u`NF>;!;>FfBv0#6Hf=8}pIf zLb!m5saS_AH?ssO4~kLvW~TalUkmX~`^?m*5TR0R^o2s!G9H{B*#8lkodh=p!w+KI z7H_60r7GoZZ13)I5kH$w_-+dMjQ!KJ1Yv3#$3JV7%i@aJI{rSRq}^Vl8es#35kj7D qjBuRbb{Hjs(IqyHPyfqqqE+aEAMB3{E6|n%|6R}jF^&gb82Jyl{5*UB diff --git a/core/migrations/0007_conversation_is_generating.py b/core/migrations/0007_conversation_is_generating.py new file mode 100644 index 0000000..5672f81 --- /dev/null +++ b/core/migrations/0007_conversation_is_generating.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.7 on 2025-11-20 19:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('core', '0006_setting'), + ] + + operations = [ + migrations.AddField( + model_name='conversation', + name='is_generating', + field=models.BooleanField(default=False), + ), + ] diff --git a/core/migrations/__pycache__/0007_conversation_is_generating.cpython-311.pyc b/core/migrations/__pycache__/0007_conversation_is_generating.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5ac732ddec222ad5eb6e44afef58d9f0c08f8acf GIT binary patch literal 811 zcmZuuzi-qq6t@XYOp$Ild1Yctb)7n4=bA!Q?BvV${GRRad->MuIY zSd(NAQABZyG92Pe3pI>1^c+#`3!*yUvEFXlm+as?3Uz91BER!nrF~5}Su)C_GU2Qc zX2vO`McnRG-|ktk2qoD=fI>`Bs8Kw^p{^k?#;quMHB~F-xZQ)OaoE|HCJyAg9Eavb zIr0>XcBLRo*soe8QkD_(9E3X<3?7jJ$}(Xi;l`Z3hrDRiie6HX5in5V*=XIzqDx^r zs?yTer7PuxuqXpzG}zfrAf+3=EiBTk6CxZ!WL=elid;2M zSWhWkS7+pg3f*U%rx3AbNjQAc2$5aFeMv&mgF_Dppnje1y0vc^-V=`MY8g z#Skcm!Qbu&((7aLuSIgf;p*g5ZpwojP^8$DFg>5OiR^o|u3a;yFKY+cx4$|w>(+dw zKfii+?)7&c%)I`0IP!)+z2VFo)?LGPj*)~D1+{K^=JbV{`AU1shHnU)jw3eWt8}Yr zLt}oaXU1xUX{;^7& J{3qMo`v(gd&u9Pu literal 0 HcmV?d00001 diff --git a/core/models.py b/core/models.py index 01752e5..51ac0a9 100644 --- a/core/models.py +++ b/core/models.py @@ -27,6 +27,7 @@ class TodoItem(models.Model): class Conversation(models.Model): title = models.CharField(max_length=200) + is_generating = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) def __str__(self): diff --git a/core/templates/core/chat.html b/core/templates/core/chat.html index 8180408..eac796e 100644 --- a/core/templates/core/chat.html +++ b/core/templates/core/chat.html @@ -81,95 +81,203 @@ diff --git a/core/urls.py b/core/urls.py index b1dc985..f6ced36 100644 --- a/core/urls.py +++ b/core/urls.py @@ -13,4 +13,5 @@ urlpatterns = [ path('chat//', views.chat_view, name='chat_detail'), path('cleanup_tasks/', views.cleanup_tasks, name='cleanup_tasks'), path('settings/', views.settings_view, name='settings'), + path('get_conversation_messages//', views.get_conversation_messages, name='get_conversation_messages'), ] \ No newline at end of file diff --git a/core/views.py b/core/views.py index a6ee8e2..032e2ef 100644 --- a/core/views.py +++ b/core/views.py @@ -352,12 +352,17 @@ def chat_view(request, conversation_id=None): conversation = get_object_or_404(Conversation, id=conversation_id) Message.objects.create(conversation=conversation, content=text, sender='user') + # Set is_generating to True + conversation.is_generating = True + conversation.save() + # Start AI processing in a background thread thread = threading.Thread(target=run_ai_process_in_background, args=(conversation_id,)) thread.daemon = True thread.start() - return redirect('core:chat_detail', conversation_id=conversation_id) + return JsonResponse({'status': 'success', 'conversation_id': conversation_id}) + return JsonResponse({'status': 'error', 'message': 'Text is required.'}, status=400) conversations = Conversation.objects.order_by('-created_at') selected_conversation = None