From 6d9693bc26d5f4956f230aee939db9a89f879e92 Mon Sep 17 00:00:00 2001 From: Welton Moura Date: Thu, 6 Mar 2025 11:00:28 -0300 Subject: [PATCH] ajustes --- .../__pycache__/htmx_views.cpython-310.pyc | Bin 5712 -> 5836 bytes gestaoRaul/comandas/htmx_views.py | 5 +- gestaoRaul/db.sqlite3 | Bin 335872 -> 335872 bytes gestaoRaul/templates/static/base.js | 1 + .../templates/static/comandas/js/comandas.js | 36 ------------- .../static/comandas/js/viewcomanda.js | 25 --------- .../templates/static/orders/js/orders.js | 50 +++++++----------- gestaoRaul/websocket/servidor.py | 4 +- 8 files changed, 25 insertions(+), 96 deletions(-) diff --git a/gestaoRaul/comandas/__pycache__/htmx_views.cpython-310.pyc b/gestaoRaul/comandas/__pycache__/htmx_views.cpython-310.pyc index 7dff6ed0d557c380c325674c35f34d40b7fb67ec..5ae061b443d2fa78f970e44b4601e50f4073897a 100644 GIT binary patch delta 2548 zcmZ`)OK%fb6!x{p@9`tC9mmcC=V5^XCoQj{K%ycDFEu1h(pI>EF!)ZAF}BCOGe%0} z)Ko#LsumS=S5-j;sT+h;7W{y!Qa6>lpxe9efk}wH7qh#VWOY+ZMzmODvUztk=!9aM; zn|c7ynTipX-M?mO>Z;D5$n+Yvl!v6%DP-25}*&32%*=v~HWids{1; zOt)A9S4ikX8@FXvG&aZ+?kqXTPr3hUVusiV!YCSew4!a?*5O&J=~c?yK;}Hc%kEfgSRM5Qpt7xl6u=lX~Xw zk?o+JYy=zL9p|=c_ct7Lu;FT`4IgrJ=%IVZ1-T!-!iM4M=Y`9>Y2}a)f{D-`~4&EMw5=QCOAVa*fVpwhkiAGk!nU{P|ckODD6H z$?VlkK9jvTm7Uu6jEHl#?e+WORsZ~O)!C;8uj#byq!QSjAT(y&-ZIJp#? zfGIYK-~$kfrQOz9R{>s}K@qmJ;4Rh-%c$zikCcLN5>z>^Sco0L@d*T}unRbnCq#Bb zSOn!(sV2qOEd=2<8HFN=;R5Mu7X9BV!+=IpzK_E*0K#M0nq9Yq)4Y{aTj7xE_&Kto^3e^dXe6x9$IZc`XH4cyA5W%tBF?5u>RR4 z1gVTqaU^~HKQ~)h4xq174t5poWri1V)M;w1{K@pa?KhYt(5{bXqA610Q_-Vjg;%4q zYv`u%ES$M|>B@ztZYD3?&BG_S2=nmN)smM~mOM@F*V+`fP>W^L(%Z5B3K+`+5O#Wq zO4tpa>RFj@9d-7D`K8%&LYZHfy~3`84O>Onvt5YkCN$6Xe)n-dtg)~&0A0`Hggq($ zwddzSnX6X>cjzQcD9fy_vkd>CH`5%$DZH@o*_$r$#RSm<@m*9q2~L$)*##KRY~%?h-d zZaZO^DB-VZ>rmcR+uR$4Fx(a=+F|&Pe;pemRsKA--PG|a=<-$wzEgEQ-)>f0Dz=K< zH@1#uC4iitb^Yk-(}nZ55W0Ry7rY%89ITA8XI#0A-q&C8Ws5N;te1pC9S${PHfnAO_qU(wi#=~WOlI*-$(3n4DVKm z?B;2rVp6?qwX)&kXA-fzUmCPqfwgOZ+9^cZ(d@86{zW3*#IT6OI((Tmb5X08C*Wo# z(;yob3&C8g-Gp(JM37lOilb$O0>TQy4Frl%ML@sb3Q)IHe5c{s^|C&LvbB6ufT}|! IJl%KVKa1l>d;kCd delta 2388 zcmZ`)O>7fK6!xswyX*CO?Iiw5>;xPFC>BX5l!l4|Eebz{mL&YO;I`0>XGv_BpOXpIlM52dErK(g_TzW(8rI$+Wd5^tu;EGhyL*E-ac7#-~{Oy}JZ)V>2 zerEre{%b1k#^ZVje$U&#FE<{<$H?S^T|4qMrKFG$4N=)qYg$RGMN3gJjyMml9cq_S zFr_=`Qkur7aVJ#D(6}9?rmbC-X@Vy2$fYbDpo1_oY!A^Pnz~PDnr7~V)<|ijr^(V` zp~>|$BQz&8`JN_EM}=k-G-G0)Ep&FPP>uCe1v)M?TY8#pbV6vhQvF=0xcwPYd~%)q zL`aH{hd;0+bBj^(|-7V&#hEuskj#jX-TMmo|MjP;Xd{%WRLOaD{+0+C)6J zX0bdkMs|=QUx++!N70~wFpdU_RrV`4YscAYXAltm>_nSH%!dp?^&%L#x|%yOJX zJPv$iyHLFo;gthpPQ~-PX1G=a!2tR)(TGlTl}NV-3ERtmQ>OI+FqlK59REkTOq%?n zy1T7bfkP;vzs!7l#ThZzOya(WIz@V#)tH}d#ail`v}*X7R)~(Y!rNL#OG72iJ&de{ zA-nl`HU>@}55n$}SCrTkKdfcQ2*051A^Z4U?G|~DJJFr|dUS_+D_oc^+?s{)F8zoP z0k!MCeSlY@yPy0WT_$8dKNUOMo`mg6TBDOpkM&Yr%(7{iVlxOTKp=b84V(3Irr->g zO(%P5xmoclb(?9Z3M1?X2;{m|vje$idsZMfJ(~sk)e7_cD?;CnKyI6MpjzI|db#2T zVb-j(46ZIBh#H8qJt)6{Ad28PO8WqUgs8f*f29n?Ri~DykAAHN5tmV@<3U^?xFO$7 zg_04asauqG3k47HPVuM4q#?`yD)^7cFJ=DH$dR)=6TcgK3wJn(aEN~&pKQO4;yVC= z;`x@}^a9DfRx~AoOCx4&d-4!aTwP0&*`#1mj?!%Wkei?n;FU*6a)# z3Qnoe2#EbA(`{Pu7m%~}5nnMU$VGn7e3lhO!)9?A*oV%ub0{9<_Y&L5A^vk>yw8Fi z#i?Te#gs^Vr$Yq?k#cbnU~2ox@8k+wlf8=|O5hSog6sd$>||F*t_MQwL$nu}T|}vO z-)zd;X5L`Zq0K)}ju3}`mwa6=!9xD!K#spiPPUP4pe!D_baMX0;|LSJ7jS1mq9nb&0|fhl*|cAvMa5>)G8Ddx>*Cp{p*5ZUj@;IwG7=}_uW^?nTbYcNtfQ&{Ke1&WG$CkRm$kf zEMHHJw`~+x0E$u8_qAVp7+_XG==&<%R5!U<#d(oQ5s76SUPE{#;AYpQ?w9Nb=!=kN zf}tsy@R>B=uffA=pehyumD=S>4Ze8jL=dA@tG?{ctoVLIRC$o>YP=Pf`Q;{jneg&r z5&kHh&WY;7n3v+>M)GEAF0~zxY5dQ0dMb)D8zJh=A;*&0jrYca7*A&MZ3DNSM~EY2 z5JV35qI4GFA_8`VC{nhBl7oPJHpQY}>DobXs_EE=vADc90gMnvAqmB|@n{mnMB+bY G3jYCt?gP01 diff --git a/gestaoRaul/comandas/htmx_views.py b/gestaoRaul/comandas/htmx_views.py index 9bd6182..742c4d4 100644 --- a/gestaoRaul/comandas/htmx_views.py +++ b/gestaoRaul/comandas/htmx_views.py @@ -1,3 +1,4 @@ +from datetime import date from decimal import Decimal from django.http import JsonResponse from django.shortcuts import render, redirect @@ -69,10 +70,10 @@ def addProduct(request, product_id, comanda_id): 'message': f"""

{product.name}

- +

{order.obs}

{comanda.name} - {comanda.mesa.name}

+

{order.queue.strftime("%d/%m/%Y - %H:%M")}

Atendente: {comanda.user.first_name}

-

{order.queue}

diff --git a/gestaoRaul/db.sqlite3 b/gestaoRaul/db.sqlite3 index f8a14ed8725499516959b8fa08d08553697d71cd..89a83bae70fa32e859a040a57d95c89309d5e75e 100644 GIT binary patch delta 2152 zcmZ`)du$X%9G;!sy}Qo7NIZNXkd{_yt8907_IUy9736h&P}<->h>(Es50FQJpfR?q zgc>vi1>KM!2@nP2D}rW0EwsG)ho!cNn%Ej&Bq%YVnrJ1G=Vg{uIl(fpjBk#iDcIQqom4K4mIN1i;IU*JGz42N z!EH)y6s0*F4>pE3FTo-x?#(>L2L*n^}{J)c|Vke`^9HLimBo2lPrV;oAX#p(dHX? zwg~b|f)#_Xd|G3qgXMZ6xQiQ>L`#ETi`hECK-Yu$mErOd_DZTX+Kq1p-4t`+G|vJEI?y_h;z>kDo4`dndVxlb;5?1a(Wn8OMQtDf zI_Ov@9jgUr(C&CW9X*8(l4vpLptBX=Ao>_^bf$}+8Ey9|4L+gI6Q~Cy_-gw5Bz=B} zz5%JQuaY%+_NdSsCNMcR_ay7h|{( z!}%D_#c(!;t{6IFI1|I^7&^jxXS2VsWalG6vYP#2hR`XT5{?UR%Nv#Vl_Sbq@~iST zIVD47K)IrPBtIu~zm{dIMd5~UP54guTKHTzLR8hEyb)qqETFPjKxMIj%3=YnDPx1P zQKgs~(3MA8R}!De$Fwgb?r0y*vEguzlXh_P!TwZ`>f_p5_tT3NJy!U01R!OzSpXOa z49&1+X?T`q7wbmG@-n8OI+~6h_x2f_(X@;Tg7z%b1!){&WE> zCds4paOvjN#cS8CEe_;<&XO1UvjvdL&w-$^pL?CveJ^;WpDPO{U*?o4*mnhRU(8^@ zBWu@f+3;j>-G;53R|lJhxyeD(Wv*SeeNzArjF7^gFLU=yOCkuW5^I>@ZhR(nx7cA7>1_L*_a@J-J1YO7BzM$p8u-7rk-mN9neuG$G%dZYt8mgYG$S8kLwZ=~a-ucYH7 znS))|CN$}85JWX95H{iq+rzG-$E;1ks$1L)j_`Bg&Rg8mcTAP!tpG{up`2FURGw1m zl@fVa{!Bh3^-AlB*&C(SmHxs}=N0ULGx?*t*u=(|qBt2HtA=YjhBJP~QyuK+dZdbP zp64&18${kKJOU;?Zl#TJuau;d0wi_u)&0I2VdUwg?espfRbZHX0HF6#OV+`~UkqL@} zii|m2Oev5A2QSmH+37Gx_?GDk}?q1ioZr3`^PG}Y&eQ{X%}(&9*@uC z`}y$seBbwt&$o}yx1Zc1wygjFoQ*@hk;uZfl~0~{E=855YpM6BvnR&-Cdc|HcdQS- zc9ID_3tkc?2s;n|6hhYpH}t!3UN|BgaRV3NVO|u@12#?<*I|%MEI>W5hd~sK(1`YJ$nT|&X*otYp= zhA58;j28BmD$%^{IEAuP!JX+Av%latb~NwU2g-ZPBXp{8$2+i;f!sgJAWHpC631_36CvmyS#t?EFLpbyb z9ssui3Dof9v=e@s+^*pvrd-|0gCVk3!<)(Db^N-Ru9`fE+5Utn3X*r~xQlFB#FD60 z4IXT35$YnI6^&|!2M^z?xi=PZSA=D|!6VF*UeGFjObni34+$>|2L;{V?o+Gy3`2hV z18)*lOG{gtoRYPSnaL8nfs?U446waeRaUiLIo&I3QCYTR(~^ypnO3rf>Au>)eK3~0 zPnU_RzL%wDQdwQg8fmh02Pe>n@Bq2+DSVTRU&lX@V}IcuB(ojl;}yJ}9GipNj`vJy z|8Y`GOEWCRNGXOPXVp0Bnacd1C~a73Hl_RBE54|BpQzcpqF9QS(sfgp^*DNPs?-$0 zjR%rv?&8h3XR5%s6L;~^wy-~Se@R!RS?NWoGWWpY-IA58_VXZgZ_583&PITt>arO} kba6-3YH1-P^*WA(>A|G`sVxV>EaGl4>Hp_HwOwBAZ!fP8-T(jq diff --git a/gestaoRaul/templates/static/base.js b/gestaoRaul/templates/static/base.js index 56f948c..6c5b43b 100644 --- a/gestaoRaul/templates/static/base.js +++ b/gestaoRaul/templates/static/base.js @@ -70,6 +70,7 @@ websocket.addEventListener('message', (event) => { case 'cozinha': if (document.getElementById('Fila') !== null && data.tipo === 'add'){ const novoElemento = document.createElement('div'); + // const novoElemento = document.getElementById('Fila'); novoElemento.innerHTML = data.message; var fila = document.getElementById('Fila').appendChild(novoElemento); let valorAtual = document.cookie.replace(/(?:(?:^|.*;\s*)notificacao\s*\=\s*([^;]*).*$)|^.*$/, "$1"); diff --git a/gestaoRaul/templates/static/comandas/js/comandas.js b/gestaoRaul/templates/static/comandas/js/comandas.js index 294887c..bff295a 100644 --- a/gestaoRaul/templates/static/comandas/js/comandas.js +++ b/gestaoRaul/templates/static/comandas/js/comandas.js @@ -1,7 +1,4 @@ -document.cookie = `pronto=0`; - - function openModal() { document.getElementById('Modal-create-comanda').style.display = 'block'; @@ -49,36 +46,3 @@ function mostrarNotificacao(titulo,corpo,grupo) { } } -function notificacao(){ - - var resposta = fetch(`/comandas/notificacao/`, {method: 'GET', - headers: {'Content-Type': 'application/json', - },}) - .then(response => response.json()) - .then(data => { - if (data['notificacao'] == 'true'){ - console.log('verdadeiro') - document.cookie = `pronto=${data['pronto']}`; - mostrarNotificacao(data['titulo'], data['corpo'],'Garçom') - texto = new SpeechSynthesisUtterance(data['corpo']+', para '+data['titulo']+' tá pronto.'); - window.speechSynthesis.speak(texto); - console.log(data['notificacao']) - - }else{ - document.cookie = `pronto=${data['pronto']}`; - console.log('falso') - console.log(data['notificacao']) - } - }) - .catch(error => { - alert('Erro verificar notificação:', error,data['notificacao']) - }); - - } - - -setInterval(()=> { - notificacao() -}, 10000) - - diff --git a/gestaoRaul/templates/static/comandas/js/viewcomanda.js b/gestaoRaul/templates/static/comandas/js/viewcomanda.js index e9efba5..6299819 100644 --- a/gestaoRaul/templates/static/comandas/js/viewcomanda.js +++ b/gestaoRaul/templates/static/comandas/js/viewcomanda.js @@ -187,7 +187,6 @@ function addOrder(){ headers: { 'Content-Type': 'application/json'} }) - .then(function(response) { if(response.status == 200){ closeModalObs() @@ -195,7 +194,6 @@ function addOrder(){ }else{ showToast('❌Ocorreu um erro!😢','error') } - }) } function showToastAdd(message, type ,duration = 3000) { @@ -208,10 +206,7 @@ function showToastAdd(message, type ,duration = 3000) { } else if (type === 'info') { toast.style.backgroundColor = '#ffc107'; } - - const toastMessage = document.getElementById('toast-message-add'); - toastMessage.textContent = message; toast.classList.add('show'); @@ -221,28 +216,20 @@ function showToastAdd(message, type ,duration = 3000) { } function addProductComanda(productId,comandaId, cuisine) { obs = document.getElementById('obs'); - // console.log(obs.value); - // console.log(cuisine); if(cuisine == 'ggg'){ var obs = openModalObs(); - }else{ - fetch(`/comandas/addProduct${productId}/${comandaId}`, { method: 'GET', headers: { 'Content-Type': 'application/json'} }) - .then(function(response) { return response.text(); }).then(function(text) { var listProductsBalcaoElement = document.getElementById("list-products-comanda"); listProductsBalcaoElement.innerHTML = text; }) - // websocket.send(JSON.stringify({ type: 'broadcast', message: '

Tapioca de ovo

sem ovo

Joao - mesa 07

Atendente: Lucas

25/02/2025 20:03

' - //})); - showToastAdd('Produto adicionado com sucesso!😁','success'); } @@ -267,15 +254,3 @@ function taxa(){ // event.preventDefault(); // }); - - - - -// Enviar uma mensagem (exemplo - broadcast): -// websocket.send(JSON.stringify({ type: 'broadcast', message: 'Olá do cliente!' })); - -//enviar uma mensagem (exemplo - echo): -// websocket.send(JSON.stringify({"type": "echo", "message": "Olá Mundo!"})) - -//enviar uma mensagem (exemplo - test): -// websocket.send(JSON.stringify({"type": "test"})) diff --git a/gestaoRaul/templates/static/orders/js/orders.js b/gestaoRaul/templates/static/orders/js/orders.js index 3971539..0923a7c 100644 --- a/gestaoRaul/templates/static/orders/js/orders.js +++ b/gestaoRaul/templates/static/orders/js/orders.js @@ -49,25 +49,25 @@ function openTab(evt, etapa) { displayBlock('Fila'); - function mostrarNotificacao(titulo,corpo,grupo) { - if (Notification.permission != 'granted') { - Notification.requestPermission().then(function(permission) { - if (permission == 'granted') { - var notification = new Notification(titulo, { - body: corpo, - icon: 'https://example.com/icon.png' - }); - } - }); - } else { - var notification = new Notification(titulo, { - body: corpo, - icon: 'https://imagecolorpicker.com/imagecolorpicker-preview_b.avif', - image: 'https://imagecolorpicker.com/imagecolorpicker-preview_b.avif', +// function mostrarNotificacao(titulo,corpo,grupo) { +// if (Notification.permission != 'granted') { +// Notification.requestPermission().then(function(permission) { +// if (permission == 'granted') { +// var notification = new Notification(titulo, { +// body: corpo, +// icon: 'https://example.com/icon.png' +// }); +// } +// }); +// } else { +// var notification = new Notification(titulo, { +// body: corpo, +// icon: 'https://imagecolorpicker.com/imagecolorpicker-preview_b.avif', +// image: 'https://imagecolorpicker.com/imagecolorpicker-preview_b.avif', - }); - } -} +// }); +// } +// } // function notificacao(){ @@ -95,17 +95,3 @@ function openTab(evt, etapa) { // } - -// setInterval(()=> { -// notificacao() -// }, 10000) - - - - -// setTimeout(function() { -// mostrarNotificacao();}, 2000); - - - // mostrarNotificacao() - // notificacao() \ No newline at end of file diff --git a/gestaoRaul/websocket/servidor.py b/gestaoRaul/websocket/servidor.py index 2a82c29..3678e09 100644 --- a/gestaoRaul/websocket/servidor.py +++ b/gestaoRaul/websocket/servidor.py @@ -56,7 +56,9 @@ async def process_message(data, websocket): async def broadcast_message(data): if connected_clients: logging.info(f"Enviando mensagem por broadcast: {data}") - await asyncio.wait([client.send(json.dumps(data)) for client in connected_clients]) + # await asyncio.wait([client.send(json.dumps(data)) for client in connected_clients]) + tasks = [asyncio.create_task(client.send(json.dumps(data))) for client in connected_clients] + await asyncio.wait(tasks) else: logging.info("Nenhum cliente conectado.")