From 8a7bbf227fa680ba199881f34f569db2aa1682f7 Mon Sep 17 00:00:00 2001 From: Alex55 Date: Tue, 24 Mar 2026 16:42:10 +0200 Subject: [PATCH] sdf --- API/__pycache__/rok.cpython-313.pyc | Bin 5351 -> 6360 bytes API/__pycache__/rokky.cpython-313.pyc | Bin 6618 -> 6596 bytes API/rok.py | 41 +++++++-- API/rokky.py | 2 +- API/ww | 2 +- app/__pycache__/routes.cpython-313.pyc | Bin 6208 -> 6548 bytes app/routes.py | 39 +++++--- models/orders.py | 15 +++- services/gg.py | 119 +++++++++++++++++++++++-- services/send_mai.py | 79 +++++++++------- services/test.py | 25 ++++++ templates/welcome.html | 10 ++- 12 files changed, 265 insertions(+), 67 deletions(-) create mode 100644 services/test.py diff --git a/API/__pycache__/rok.cpython-313.pyc b/API/__pycache__/rok.cpython-313.pyc index e4d55f830b90bae06005e5f1fe2381f7d0364622..bb34c4ffb2308442ff0bcad64fa075f648a9dc17 100644 GIT binary patch delta 2859 zcmZ`*U2GKB6~1?8cK&zvAOCxIZE)Bc)_^e>O5!?UA>qfQJB&%YPFKtB7#8eV=gztT zSL&LI3fv?z)+lPEzO#tq9M(9mL=>AlatoIpYU@t zzMQ)D<3wGc3hlA84Is@whCLe*|8ES}jFB{66AoY^Ya&r*gc)&0(j-mJuq2=<-H50& z>Hr$s9)tw7m=@?p*YG$AX)3tGS`cJJ3xSM+GfbV}i@^WbObn(IZ4MQ`;!DTvB#uY^ z70QgvR^|+AgjBCzznLjtw#V=_*$=}IjtbuX9sVXv*XM}Wtg2Zk7i&clw14ZH_IHA{ z>jA^`VJzAyHl7y1koGz3Lh*{>2vlm7C4&U0nRA4fC$(%r&z&P-yTA@i2dSASyWm5T zARLkQC|J~oZBnTj4qvL8HN&itJ>a^}kQZne9mB!176V@x#Tz1A zuD)&3DHIk+wY*rWS>!PI#~xhe-^X~^{*N$*_t}TVef#&*9EU*cOb~2KP$?M}ISL_J z`#sU*Xgy1ejis1xnz8?ghtx)qOh#vNemmsrsk3=n3b(0n3P*jWUt{ugv$t)dK8@A< z8K24J<%U&9jZ7MsrxkFUj+<6K!;D}}(0wX`{v!0|`%%7ml5?R(pWcRo&;WYllFrd% zd5kp$UC2f3kELjra{MENia$jtA8*8J0oVJDlnSk1Pf;vwp(3n=TJx2)Q zJ0U*F^&?Pw=x(IMwn4(WxU(}vB_OJsOEx=vThb*hLQk|Qx4P=j9Z{EC^U&E`imomi zed7;@ePcdvWssN24bma(3lTrwLp3vruAmgkH#dq$ML0o8lt5EInnf=%2{enr-`d-u z#x}LSxxFpDp+O!vk*3m`wieSB`z<9ptV}AixRE;@pCT-DB6J3%j|!2Beh^<{`!`BL zUJ~bT?)PwFf2O233O=IRe^)-NIJ|3rt-Mr_JZO1RfBod-#ca~+w8NuiFK(L)E^Q=V zOit_wxb$i^mrYj6g-W~2{zV{Nk2}2e)*K*k)P8*0 z7Eo6sE{Y@6DqFQ;ZP6-}s(^QjTNkwsTQhFd2wjmQO&8}DjVvLM&BZ)#+%QUufOoD` zou9ANc*kFwt6GNLsV0~JIc`s=sk*}g8JOf`BcsbagcihO1j(QYUFvf%aRhfu3YD^h z4U0mneb=^0Ln#rXSTj6oBGVA0!Oyx6H^MUds~lOK_}RpI&;EyUX8EMN5eTp5SMu+? zxqQlgGdyr)D}*|GJ{YxcZ1na$?i={!@rQkxr#u@_HyJJ>ZK|kmXnp9&`ktff-Q!Qg zVvt)ty}4_^7J|Q;Rbs2>SI)n4;V#~Y#_oM@?ZjQ-u@G2S`~M^)K)HMM-Qb3xuBt2Q zCSp64O#uZv)&uD+krjtG6(j~$qY-1n|cI1eul8TdlSxiC;p ztoM?jqjt_|n_!gYR)HoPGeo&KHPtEO?M7*7YDpOJFgpTTPG%F}zA&^yFoV1W)Uk%LkAXHnK`f{}FCsc1*{4A_26oxcaMj2^dP?R4}4 zeq#ST+E?G?kYBztb!!Sx5fcCva^&9ly4VZ2@b_;i$S>YGd+Y4&^N(5K&Y4?hZl8Oi zM3*lRdax=J<2iWskYk{KO%3T?4p*+i+v10Wo-xN)waCk$c*}i-YIHLk4xTPF2+lwq zkqoud=Z!}`?k3SS5&FvV9!d0l<32sy2ZT#1gs#r5*?r{B#(S~|C+6X$GH1L*E`y(* zeCtCH0AGy%g8CmJ@hc?X4m?8YBNTkXtID1FPwML(>4*HcmRb99j3mafy0wHuxaS{3 V-8lC2IFfrmIQ>xCeT#R8`7Z(SIXVCU delta 2038 zcmZuyU2Gdg5Z=B2^WXU=j`PL4CN;@p{Qz7)yEZ(1IDs1QL1o`_Ac}X zRS5_XKT;uDDk1RzJQl%2Rf(s93e6KweQd8FRRRh10jX62s?--|&T*1fjO5w5nc123 z>^HO5cK=m~twy6E0(7tV^*Cr*9@#^{e5o;SJHC8^&3d-4)*22J z!DHLObY5gT(G8RNblMeRg>=naiF)IN6O?V9HR=mB&t)TEAG!F0dXCaZ_+fo7-NoP4 z2T}tVV>htP0Q_e?Ek6#b1N?^WJhlg<8kV_5_|Gug>Pdl+bEMqTlNd4Sh~P;4axya^ zm+@8tvPcU=TXb|ohw++zLQ7}LgW?diL{k|Q9Hp1=kK1xjymy z`jeLkslHE0*=U)}5c=}B!#QJ97Y1D%b%jk`#8P5pWa9*VTVq5mm7fad;UKUv&F{!v zc}LrlBW7v$?*+F`aO;s;{=?hhzRQS%fK*b23igpKnH-oVPm5VHO~Jm=f~78Ajiz4f zY58xiu(OR2N8gg&u=M-0+r$KqQGJ@WVi)3*tQ&$bjL0wz+s1E1vs{kl;BUicln=x% z@PkJGO9n$^24MHaS;zC`X+V<40%Rt@MgjHS_8n0SPYQpOP+nwV;Id39jneQ z*yD^fSb$^xkCD|v>D8%B7a8HA0GN_=4z;y-)!$R;-sVdixGbEx1Q|R+Lsgjc03*F-gPIT z8_Lqb+wB?NmG~xSWIjFf(V0&cuWG$_*TST&ca_j+`g*+Wwg~IJwHVJOho0RJNiL1< zA5+OM#ohz^$dybMT)1CJdT&1%wBi z)xwq)MkI%tVi}sbNeCuWf)*4Up}f)fCCvN)<;g2aQz;6LXo)2qjC@V*6fBVsOFhRN z$&ySJ^EEJ)5 zGvmYX!49KF^R-}CWwyShTnHuxZ9;qzBKfq&aEFVyUk4M+N&Z!P#wda6bF_KDmI%Mv zeuQ4*eVJ{GHzTQ~BMj?V5N=^bZ*`)a^p)mI#IUNq&~Srm^c9%y@IEoD7kd;L)+=}z znm3-rPke`(&qzN?IFlJp+5pH54|ARbIoVL~W@!80gz-IRKf_)H8=k`DzyO+*{!V&t g5dAs{zZd<382n%dOYNeuwKr&-cCYS?(Y7Gae~D;+e*gdg diff --git a/API/__pycache__/rokky.cpython-313.pyc b/API/__pycache__/rokky.cpython-313.pyc index aae78ff09ad0ed9835b989e67b617b9e7f806fb5..6c21fdcb1370010a2bc2b462b8b2dc5e5aa9b693 100644 GIT binary patch delta 49 zcmca*e8iadGcPX}0}z}^JeV0Xkyn!GAHzhAf16DhRU{Y-Cr3)=bA7f`U=%8H2dV)8 DjQb9I delta 72 zcmX?Ne9M^kGcPX}0}vdM*pnGGkynz5hjF6DKfV|lB?eQFI1nf>Y*u4bkzlNx>@Aru W^vOvqD|dv==DYTk^G?lNhPX z5`$R=?sEy5doX*#`Qm2wvSrD#MdQ@YWEA9NsxNJ*5$3^|cAMmJEBDdy^8 zfK5@zE%C?`Gmfb7*CBu@q3 zTfq-*!}m#!c3K&EPxAwN_WK8z!01PW&S?;Rw;HFe&Hb zvnZP?B=cA_oTVLj&d}v`lgM83<%|T1)H9(LIq`3X%WW>wSIyv*&Lk#fCN5dFSFjU{fqXB#2HYn!;B}W5f5@5fU+ho#b7Mf@N?9sKt#2y# zIegdH_%<(@4>5{q971a?LYEi?vRP*r#y#6u?qDys-)N0kM|NV-Q+-ge)lm`KNNtJ! z>R+-%>!SywH=>2;bVTSBN}Eokh;xuQ*RVurBtq@pP{}QNC&F|=Wu%GJ_-nbeXUyCNkNAk`If?tdf^CVRO{52&0C@+)N>kvNJOm!{RJTCuO~ZS-#O377xGn z!%ciM?Zc<}ZVoOVWX9KcX&#w~9CE1KYyu@RIaC8CSPWDL5Cjkb>ItZ(%|ujAPg7;m z8P!})LKP~KP+3A&PzU(YvbGn+*Bf$CK4Rq3N=p8CFM5YCA$%@^Bj)ybt9!9$p=W7g zO{gs%ewx`88X8ao~x=w>Y;jx4dV~vAcNkb-(9! z_u}-m>1F?l{K(!}JhASoSsq<;HC!1i4y@Pix;1+9+#|NScC^VPvCgP#tsv(BX*E8fR!8}73N$f1o` z4%8fM=@+Q`f@Q#DxbJHoU<~(rX(B&hi~}aTVmaIaXB27R1W7x~`i$&DM~LPG`N}6g zh@AHV!Z}(1uGU7}SmeC;w$&q$xzt;P#@|`PbR&Lho$~J_I+e@i6Zt|;WwJ8}wt5K1 zY)y$hV6vohX@!`Tq^ug!N*=*Wf#5u;F1S*%C?%u#=DOczwC$Wwd0m}O<=|-&MLln` zB45xQkVMqO_<{3g?Msd_TCWa&GQ8BYJheQw>S}q+hSpi%($r%%h%dYRwDaCK_J{O* zBLsdI;26MhfPR1h0GNk4{&fEtvfFw@bP{x@0JM4p#DY8sU<4Qf7zThU(R%==0eFCN zjp%*S)oXBV7GWR(P=u&cB>mq>a$mZ}7&4g~o+|nnHhU-Lcfk%Ezng1%3jcxUOP7W6x(N!TYDJd zg;}@)&^TdU`oi~=gDnwi#Ls;qr^Rl?7Jp}pD&%DJ5xE(1ZIhG80%Jq*Dj$z)M>viI z(6!@HfA-fUb3eA<{-0{wHvhg)067PIBCI delta 1928 zcma)7O>7%Q6y9C$uGhQvZu}G5aq4>WAG=PIHcqRiKajRb(-4)Cm1$^9En}|}xA8j6 z+O$N7x(EriLQSdxVF?N4f+#|WLoYpoXb~smDm|1{RY2+m35lTQfH*O;Tf0`pfsy8$ zH}8A%=Iy*UvmcFqJ0d=Dxp)G#gOTqFe@HjPAbI`9Kq^ALBmyx-b`uJllEx@(K@gx# zu>*ICnd^nW(cZv-rESIk!;MB;S6FhYeT=lE=SSdg`0N}0k9B^9YepALwatyfzZh?) zqv1v2L&VtAWgyh#g(mN8;X50A*rkYyG)yUN2PnneVzHxX;c2n(wpfH47M(st941W< z?JfMyChu?Zffhc}ok&1@k4^$o=w7o`(@MGJU&y7CNi@MGrs1m;lVIaXr zws+gx(A;n=s^xT{m|0XoJDLaJn{<$r;5GV?z@fPf^(VI}c#r-EN^H*rtJn`v8nb|% znk`8-0;!-fSXo@aTbXS>m$WNfk`jqgYK*pYG69S1D8nVWxlXvp*J*d`B$AG~FiuOr zG4GjAB$))$NSRC^y9m5u-$5lgc-bC}Iu+MQb3;W;P`yMKu^?N{3Bpcf_7a4~Thwd?U=3^+JNusR*H<6%%~#(=kuxiNm%Cktd@P{M|m-GZiHbr>f}{pr$i=woq6V zi*FB=RlPh^0yz~7t(IYe>+07pRO0dqDCH_ybfUSqtQIqcWvnV>)wrB3X=PO_!>_m= z_zTxh`XKAr$2w5xzz&Z(l*>`UU{^9AQ`8L`@@4SPe1R}BGZ@p8VSnn$U~_Mzu_1>> zi=q*wfgx;6s=9zi`B?*IzS)A7Q!niShY;C`y1pCTtSYh1!V!LONpP>luEy41-Q;&v zk3Db)J_+3j)uuMxJ=K{9PS4uR)tU8+o6bmevN5}~>6ELJ+bkh@*Un!%U-REo?}>@( ziHCumH66ZlkM>ok9@1^={tfQtsoUeXkE2 z@r1**CR`OhbRm&(d@yrm=Ka~nf@l3?tz7r^ZVG)HdR>Us>Db@fE_hnl-`CN1JWSjP z^OGI6I|BogKHFW9MDkr9gK(7{)-%hh4$s-T;ZK5ZL_{A9OpvhDav*!b5u`ba52SHT zB0#$3alTGMr@KJP@MqVOKZJOL)ytW3MK`F@1<;KYU&1qDe=n{ygD>a>4bfUwHEac~ z4Db~KeHi)?z;DD*$hvi!dNFNQ4|oL;Cs5bFhrH*r*kfAwVD`P)_3_$L?QGpWc%P2q z1DLMm>fWABp?4!&7ov4Kih}!E`jJe@XeoFR!vqHW1>hKl;}|9pta7I&&!9RPm%$X) z;mypz!8DdmA<)s)MWtdM2uNTphI8?Q&zz|GJgxc;C~dyd5v}%Ony0|UjX>^vH~;1VbK(&O}FA2 zgeLju14;sh{eAzJq3q?GCUppLh2@WJ+Tqg;VlYDTeFbu7?-?c4C{7nQApZ~! diff --git a/app/routes.py b/app/routes.py index f0651e9..8e33f1c 100644 --- a/app/routes.py +++ b/app/routes.py @@ -7,6 +7,9 @@ import json from API.rok import create_order from API.TG import send_telegram from services.orders import get_sku +from services.gg import get_product, create_messagea +from services.send_mai import send_html_flow + import logging @@ -31,16 +34,23 @@ def index1(): logging.warn(f"newOrder: {params}") # Просто выводим на экран (в ответ клиенту) # парсим данные - sku = params.get("id_d") - product_id = params.get("id_i") + id_d = params.get("id_d") + id_i = params.get("id_i") email = params.get("email") - price = params.get("amount") - + amount = params.get("amount") + currency = params.get("currency") + date = params.get("date") # всё остальное сохраняем как JSON content = json.dumps(params, ensure_ascii=False) - db_sku, db_price = get_sku(sku) - create_order(db_sku, price, db_price, f"my-test-order-{product_id}") - # send_telegram(content) + + + message = f"🔹Спасибо за покупку в WST Keys (West Store Trusted Keys)\n\n ⏳ Ваш заказ находится в процессе отгрузки." + create_messagea(id_i, message) + name_p, im = get_product(id_d) + sku_rokky, price_rokky = get_sku(id_d) + + + send_telegram(content) conn = sqlite3.connect(DB_PATH) cursor = conn.cursor() @@ -48,9 +58,9 @@ def index1(): try: cursor.execute(""" - INSERT INTO orders (sku, product_id, email, price, content) - VALUES (?, ?, ?, ?, ?) - """, (sku, product_id, email, price, content)) + INSERT INTO orders (id_i, id_d, email,name_p, im, amount, content, currency, date, sku_rokky, price_rokky) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?,?) + """, (id_i, id_d, email, name_p, im, amount, content, currency, date, sku_rokky, price_rokky)) conn.commit() except Exception as e: @@ -58,15 +68,12 @@ def index1(): return jsonify({"error": str(e)}), 500 conn.close() + create_order(sku_rokky, price_rokky, id_i) return jsonify({"success": True}), 200 # return "Hello GET" -@main.route("/sales", methods=["POST", "GET"]) -def index2(): - return "Hello GET!!!++!!ss" - @main.route("/newOrder", methods=["POST"]) def new_order(): @@ -87,6 +94,10 @@ def new_order(): send_telegram(data) # logging.warn(get_order_content(order_id)) logging.warn(f"newOrder: {order_id}") + get_order_content(order_id) + send_html_flow(order_id) + + return jsonify({"status": "ok"}), 200 diff --git a/models/orders.py b/models/orders.py index 946bd17..774c877 100644 --- a/models/orders.py +++ b/models/orders.py @@ -6,10 +6,19 @@ cursor = conn.cursor() cursor.execute(""" CREATE TABLE IF NOT EXISTS orders ( id INTEGER PRIMARY KEY AUTOINCREMENT, - sku INTEGER UNIQUE, - product_id INTEGER, + id_i INTEGER UNIQUE, + id_d INTEGER, + name_p TEXT, + im TEXT, email TEXT, - price TEXT, + chat_id TEXT, + currency TEXT, + amount TEXT, + date TEXT, + sku_rokky TEXT, + price_rokky TEXT, + orders_rokky TEXT, + key TEXT, content TEXT ) """) diff --git a/services/gg.py b/services/gg.py index b3d9c33..a149122 100644 --- a/services/gg.py +++ b/services/gg.py @@ -212,9 +212,9 @@ def get_chats(page=1, pagesize=20, filter_new=None, email=None, id_ds=None): return r.json() -def get_product(): +def get_product(product_id): token = load_token() - product_id = 102182541 + # product_id = 102180432 url = f"https://seller.ggsel.com/api_sellers/api/products/{product_id}/data" @@ -229,10 +229,14 @@ def get_product(): r = requests.get(url, headers=headers, params=params) print(r.status_code) - return r.json() + prud = r.json() + name = prud["product"]["name"] + im = prud["product"]["preview_imgs"][0]["url"] + return name, im + # return r.json() -# print(get_product()) +# print(get_product(102182541)) def create_message(id_i: int): @@ -268,10 +272,91 @@ def create_message(id_i: int): } # пример вызова -create_message(18094706) +# create_message(18094706) + +def create_messagea(id_i: int, message): + print("SEND MESSAGE CALLED", id_i) + + token = load_token() + # message = "Спасибо за покупку в WST Keys" + + url = "https://seller.ggsel.com/api_sellers/api/debates/v2" + + params = { + "token": token, + "id_i": id_i + } + + payload = { + "message": message + } + + r = requests.post(url, params=params, json=payload) + + print("STATUS:", r.status_code) + + return r.text +# message = f"🔹Спасибо за покупку в WST Keys (West Store Trusted Keys)\n\n" +# create_messagea(22273227, message) # пример -# print(get_chats()) + +def get_chats_by_email(email): + token = load_token() + message = ( + f"" + +) + + url = "https://seller.ggsel.com/api_sellers/api/debates/v2/chats" + + params = { + "token": token, + 'email': email, + 'pagesize': 100, + 'page': 1 + } + + payload = { + "message": message + } + + r = requests.get(url, params=params) + print(r.text) + if r.status_code == 200: + return {"success": True} + + return { + "success": False, + "status": r.status_code, + "response": r.text + } + +# get_chats_by_email('fenomenplayerok@gmail.com') + + +def get_order_info(invoice_id: int, locale: str = "ru"): + token = load_token() + url = f"https://seller.ggsel.com/api_sellers/api/purchase/info/{invoice_id}" + + headers = { + "Accept": "application/json", + "locale": locale + } + + params = { + "token": token + } + + r = requests.get(url, headers=headers, params=params) + return r.json() # или r.text если нужен сырой ответ + +# # пример использования + +# invoice_id = 22228752 +# info = get_order_info(invoice_id) +# print(info) +# print(get_chats(email='fenomenplayerok@gmail.com')) # def tokens(): # timestamp = str(int(time.time())) @@ -313,4 +398,24 @@ create_message(18094706) # response = requests.get(url, params=params, headers=headers) # print(response.status_code) -# print(response.json()) \ No newline at end of file +# print(response.json()) + + +# def create_debate(order_id): +# token = load_token() +# url = "https://seller.ggsel.com/api_sellers/api/debates/v2" + +# params = { +# "token": token, +# "id_i": order_id +# } + +# json = { +# "message": "Спасибо за покупку в WST Keys" +# } + +# r = requests.post(url, params=params, json=json) +# return r.json() + + +# print(create_debate("22257737")) \ No newline at end of file diff --git a/services/send_mai.py b/services/send_mai.py index b77289d..2bd6f70 100644 --- a/services/send_mai.py +++ b/services/send_mai.py @@ -1,5 +1,8 @@ import sys from mailer import send_plain_email, send_html_email +import sqlite3 +from datetime import datetime +from gg import create_messagea def read_multiline(prompt: str) -> str: @@ -24,43 +27,59 @@ def send_text_flow(): send_plain_email(to_addr, subject, body) -def send_html_flow(): - to_addr = input("Receiver email: ").strip() +def send_html_flow(ids): + # to_addr = input("Receiver email: ").strip() + + conn = sqlite3.connect("./files/rokky.db") + cursor = conn.cursor() + sku = ids + + cursor.execute(""" + SELECT * + FROM orders + WHERE orders_rokky = ? + """, (sku,)) + + rows = cursor.fetchall() + for row in rows: + print(row) + + + conn.close() + s = row[9] + s = s.replace(" ", "+", 1) # только первое вхождение после времени + dt = datetime.fromisoformat(s) + dates = dt.strftime("%Y-%m-%d %H:%M:%S") data = { - "company_name": "wstkeys", - "order_id": "123", - "customer_name": "4321", - "currency": "USD", + # "company_name": "wstkeys", + "order_id": row[1], + # "customer_name": "4321", + "currency": row[7], "items": [ - {"name": "Game 1333", "quantity": 1, "price": 1330}, + {"name": row[3], "quantity": 1, "price": row[8]}, ], - "date": "23.03.2026 14:02", - "product_name": "Railroads Online - Pioneer DLC", - "product_image": "https://s3.ggsel.com/gsellers-imgs-prod/e05c8d1f28e18f56334bf8e7e9f7b547.jpeg", - "total_price": 20, - "key": 'XXXX-XXXX-YYY23', + "date": dates, + "product_name": row[3], + "product_image": row[4], + "total_price": row[8], + "key": row[13], "support_email": "wstkeys@gmail.com", "year": 2026 } - - send_html_email(to_addr, data) + to_addr = row[5] + # send_html_email(to_addr, data) + message = ( + f"🔹Спасибо за покупку в WST Keys (West Store Trusted Keys)\n\n" + f"🔑 Ваш ключ: {row[13]}\n\n" + "📩 Копия ключа отправлена на вашу электронную почту.\n" + "💬 Если у вас возникнут вопросы — напишите нам.\n" + "⭐️ Нам очень важно ваше мнение, пожалуйста, оставьте отзыв." + ) + create_messagea(row[0], message ) + + -def main(): - print("1 - Send plain email") - print("2 - Send HTML email") - - choice = input("Choose: ").strip() - - if choice == "1": - send_text_flow() - elif choice == "2": - send_html_flow() - else: - print("Invalid choice") - - -if __name__ == "__main__": - main() \ No newline at end of file +# send_html_flow(5388351) \ No newline at end of file diff --git a/services/test.py b/services/test.py new file mode 100644 index 0000000..8c3498b --- /dev/null +++ b/services/test.py @@ -0,0 +1,25 @@ +import sqlite3 +from datetime import datetime +conn = sqlite3.connect("./files/rokky.db") +cursor = conn.cursor() + +sku = '5388258' + +cursor.execute(""" + SELECT * + FROM orders + WHERE orders_rokky = ? +""", (sku,)) + +rows = cursor.fetchall() + +for row in rows: + print(row[3]) + +s = row[8] +s = s.replace(" ", "+", 1) # только первое вхождение после времени +dt = datetime.fromisoformat(s) +result = dt.strftime("%Y-%m-%d %H:%M:%S") + +print(result) +conn.close() \ No newline at end of file diff --git a/templates/welcome.html b/templates/welcome.html index e811837..57cac39 100644 --- a/templates/welcome.html +++ b/templates/welcome.html @@ -1,18 +1,20 @@ - + - +
logo + style="max-width:400px; height:auto;">
-

Спасибо за покупку в WST Keys (West Store Trusted Keys)

+

+ Спасибо за покупку в WST Keys (West Store Trusted Keys) +