Compare commits

...

298 Commits

Author SHA1 Message Date
01b3b0022f Update app.py
All checks were successful
continuous-integration/drone/push Build is passing
2024-08-04 12:52:50 +10:00
Simple_Not
315e6f8142 threads almost normal
All checks were successful
continuous-integration/drone/push Build is passing
2024-02-02 18:59:34 +10:00
Simple_Not
17fc89ebbd threads gogogo
All checks were successful
continuous-integration/drone/push Build is passing
2024-02-02 01:51:03 +10:00
Simple_Not
fbb586b56c threads rising
All checks were successful
continuous-integration/drone/push Build is passing
2024-02-01 03:26:12 +10:00
Simple_Not
f9bbd5e6af pics tryout
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-31 23:58:05 +10:00
Simple_Not
412b26244a pics tryout
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-31 23:56:43 +10:00
Simple_Not
32f1d87831 pics tryout
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-31 23:53:00 +10:00
Simple_Not
216d60c84d ip-getter
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 13:51:23 +10:00
Simple_Not
ad6feb7afb ip-getter
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 13:50:38 +10:00
Simple_Not
a95d556e8c re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 01:54:07 +10:00
Simple_Not
956b59c2fa re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 01:52:45 +10:00
Simple_Not
a325ea91fe re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 01:51:31 +10:00
Simple_Not
a84da0a6f9 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 01:49:36 +10:00
Simple_Not
9838f7f024 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:35:54 +10:00
Simple_Not
d21e5e0bf6 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:33:14 +10:00
Simple_Not
38842ec947 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:27:50 +10:00
Simple_Not
5ad7f7514d re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:26:45 +10:00
Simple_Not
365c4909fe re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:25:24 +10:00
Simple_Not
71f72c66f3 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:24:54 +10:00
Simple_Not
d4e585fb13 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:22:50 +10:00
Simple_Not
92bb87c816 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:19:43 +10:00
Simple_Not
9e90bd2458 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:18:17 +10:00
Simple_Not
2b5fd02929 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:16:33 +10:00
Simple_Not
d4131c26c8 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:15:08 +10:00
Simple_Not
edd102e5e3 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:14:31 +10:00
Simple_Not
2a5a3fd8e4 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:13:23 +10:00
Simple_Not
a7e17694c2 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:11:23 +10:00
Simple_Not
d0163a8963 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:09:03 +10:00
Simple_Not
e83dfebee5 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:08:46 +10:00
Simple_Not
c8241f2613 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:04:10 +10:00
Simple_Not
25e5430b4c re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-30 00:02:38 +10:00
Simple_Not
e34be51a16 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 23:59:38 +10:00
Simple_Not
e30077bf4d re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 23:53:41 +10:00
Simple_Not
3320baf0f2 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 23:53:26 +10:00
Simple_Not
68e455fe7b re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 23:51:59 +10:00
Simple_Not
134297911b re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:49:42 +10:00
Simple_Not
d89ba3f582 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:47:56 +10:00
Simple_Not
14057ead4d re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:44:05 +10:00
Simple_Not
1b2bfb601b re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:34:24 +10:00
Simple_Not
b3d20faec3 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:31:01 +10:00
Simple_Not
2a68a6d8c2 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:30:50 +10:00
Simple_Not
c36968ec16 re ans-post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:28:38 +10:00
Simple_Not
e6ae7440aa re post
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:13:25 +10:00
Simple_Not
3f3e5711b6 move answers
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:11:01 +10:00
Simple_Not
a416e46139 move answers
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:09:55 +10:00
Simple_Not
33c609645c move answers
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:08:44 +10:00
Simple_Not
1f58b37b96 checking threads viz
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 02:03:20 +10:00
Simple_Not
1ff5f2803f checking threads viz
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 01:44:22 +10:00
Simple_Not
e91c6dba41 checking threads viz
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 01:42:37 +10:00
Simple_Not
5c99fc6f8d checking threads viz
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 01:39:59 +10:00
Simple_Not
bb6f126811 checking threads viz
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-29 01:35:08 +10:00
Simple_Not
0e727ef4fe Merge branch 'dev' into master-of-slaves
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-26 19:08:04 +10:00
Simple_Not
cf479d2353 order-bug fix
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-26 19:05:33 +10:00
Simple_Not
9aaec391b2 well
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-26 00:33:31 +10:00
Simple_Not
7600ab6e3e well
All checks were successful
continuous-integration/drone/push Build is passing
2024-01-26 00:32:44 +10:00
Simple_Not
fd4ff11562 check changin
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-16 17:34:16 +10:00
Simple_Not
bceda9bdde check changin
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-16 17:27:05 +10:00
Simple_Not
ef157ed64b upd drone mst
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-16 17:05:43 +10:00
Simple_Not
90522346ac upd drone dev
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-16 17:05:19 +10:00
Simple_Not
d5f4fd3989 upd drone dev 2023-11-16 17:03:03 +10:00
Simple_Not
765bad6d5e upd drone mst
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-16 17:02:32 +10:00
Simple_Not
348cd21ed9 upd drone mst
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-16 16:55:23 +10:00
Simple_Not
5995344e04 upd drone mst
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-16 16:42:37 +10:00
Simple_Not
6b3ae65d73 upd drone dev 2023-11-16 16:42:09 +10:00
Simple_Not
b3dc40fa20 upd dev branche
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-15 22:39:48 +10:00
Simple_Not
03c197aa6f upd dev branche
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-15 22:37:11 +10:00
Simple_Not
6b2b0a6142 upd dev branche
Some checks failed
continuous-integration/drone/push Build is failing
2023-11-15 22:34:55 +10:00
Simple_Not
b858c9db9d upd dev branche
All checks were successful
continuous-integration/drone/push Build is passing
2023-11-15 22:30:31 +10:00
Simple_Not
f37c6aeecd allowed extensions
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-28 23:31:24 +10:00
Simple_Not
d2907b9362 добавлено много файлов, и отсутствие файлов
All checks were successful
continuous-integration/drone/push Build is passing
2023-09-28 14:56:29 +10:00
Simple_Not
85dce5ce2e we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 16:24:50 +10:00
Simple_Not
f482dd03ed we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 16:21:42 +10:00
Simple_Not
75958f9d9a we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 16:20:11 +10:00
Simple_Not
8415845488 we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 16:18:33 +10:00
Simple_Not
5790ea301c we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 01:45:56 +10:00
Simple_Not
7a08ae00cd we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 01:43:33 +10:00
Simple_Not
d646b120d5 we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 01:42:43 +10:00
Simple_Not
2f630ddde0 we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 01:32:57 +10:00
Simple_Not
25a99b4549 we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 01:28:34 +10:00
Simple_Not
5938f4e063 we can send now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-20 01:24:15 +10:00
Simple_Not
8d98c04fa3 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:48:55 +10:00
Simple_Not
67fac37e44 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:36:02 +10:00
Simple_Not
a46cc7c78c we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:30:56 +10:00
Simple_Not
ae638c25db we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:29:35 +10:00
Simple_Not
a08e14367b we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:28:06 +10:00
Simple_Not
75f2d5a08f we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:26:52 +10:00
Simple_Not
0b9f373486 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:24:55 +10:00
Simple_Not
24f294bad1 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:23:02 +10:00
Simple_Not
48ec4c9c59 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:22:07 +10:00
Simple_Not
496ca85240 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:18:59 +10:00
Simple_Not
69442b671e we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:17:47 +10:00
Simple_Not
05370dae8b we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:16:40 +10:00
Simple_Not
694e1dbfcd we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:15:37 +10:00
Simple_Not
fe439b6b1a we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:14:36 +10:00
Simple_Not
7dce872df3 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:13:11 +10:00
Simple_Not
88e2b021f9 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:12:50 +10:00
Simple_Not
ce5f33e604 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:07:42 +10:00
Simple_Not
57e598814f we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:05:40 +10:00
Simple_Not
f49f97a8ea we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:04:55 +10:00
Simple_Not
390974f1a3 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:03:05 +10:00
Simple_Not
089b022a3b we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 01:01:55 +10:00
Simple_Not
c30e2c8705 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:54:27 +10:00
Simple_Not
b391326806 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:53:20 +10:00
Simple_Not
fc5b0d7491 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:50:31 +10:00
Simple_Not
d97035a32b we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:34:30 +10:00
Simple_Not
a622768a13 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:32:18 +10:00
Simple_Not
78a60c6d90 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:29:33 +10:00
Simple_Not
7f94bade46 we can chat now?
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:28:45 +10:00
Simple_Not
586b76bc25 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:21:03 +10:00
Simple_Not
6f37ff03ab check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:19:58 +10:00
Simple_Not
b7f4813ec0 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:18:15 +10:00
Simple_Not
e7fee4999e check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:14:13 +10:00
Simple_Not
1e2d39a5c0 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:02:34 +10:00
Simple_Not
feec65123a check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:01:15 +10:00
Simple_Not
a807114c58 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-19 00:00:22 +10:00
Simple_Not
ed2cf28893 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:59:10 +10:00
Simple_Not
622fa4f50d check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:55:48 +10:00
Simple_Not
ca15046bda check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:54:45 +10:00
Simple_Not
e96ff651cc check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:53:27 +10:00
Simple_Not
f653d1f234 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:53:06 +10:00
Simple_Not
ee869d4693 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:50:48 +10:00
Simple_Not
621dadd47d check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:49:31 +10:00
Simple_Not
03be9453fb check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:48:36 +10:00
Simple_Not
39e16ffdb8 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:47:46 +10:00
Simple_Not
919c860475 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:46:12 +10:00
Simple_Not
54bb686249 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:44:33 +10:00
Simple_Not
22e2062cb1 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:43:22 +10:00
Simple_Not
27be10ee32 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:41:09 +10:00
Simple_Not
c26c016adc check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:39:40 +10:00
Simple_Not
a4ea21dfa6 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:31:26 +10:00
Simple_Not
ed851efd50 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:30:11 +10:00
Simple_Not
410861aa75 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:28:39 +10:00
Simple_Not
5b25dced59 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:27:23 +10:00
Simple_Not
75e07c2118 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:26:41 +10:00
Simple_Not
113bd64b0e check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:26:32 +10:00
Simple_Not
6e9587e074 check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:24:39 +10:00
Simple_Not
421fecce4d check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:23:27 +10:00
Simple_Not
c5a4c8e6ed check many hexes
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 23:22:14 +10:00
Simple_Not
9727bf5c61 Merge branch 'master-of-slaves' of https://git.guaranteedstruggle.host/vdk2ch/flask-htmx-board1 into master-of-slaves
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 20:07:34 +10:00
Simple_Not
94524a326d fix ci 2023-07-18 20:07:12 +10:00
Simple_Not
e5c4ec6730 fix ci
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 20:06:50 +10:00
root
6414aa4410 Merge branch 'master-of-slaves' of https://git.guaranteedstruggle.host/vdk2ch/flask-htmx-board1 into master-of-slaves
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-18 20:01:59 +10:00
Simple_Not
411a973102 remake many certs
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-17 13:00:37 +10:00
Simple_Not
ec8a36b7ed Merge branch 'dev' of https://git.vdk2ch.ru/vdk2ch/flask-htmx-board1 into master-of-slaves 2023-07-17 12:58:23 +10:00
Simple_Not
8b54e30493 remake many certs
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-17 12:58:15 +10:00
Simple_Not
353551b219 remake many certs
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-17 12:56:15 +10:00
Simple_Not
4eb4b28609 rm styles
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-16 02:27:50 +10:00
Simple_Not
758f2abb96 new branch
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-16 02:26:25 +10:00
Simple_Not
4ec4263e08 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:20:33 +10:00
Simple_Not
a4c1a4cb7b check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:19:50 +10:00
Simple_Not
d83ccb48ec check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:19:01 +10:00
Simple_Not
d4bcfa7b8f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:16:32 +10:00
Simple_Not
db9279ea2a check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:16:05 +10:00
Simple_Not
f0ff983fc8 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:14:27 +10:00
Simple_Not
132028c649 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 13:13:21 +10:00
Simple_Not
e11888c930 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 12:45:46 +10:00
Simple_Not
79196c3c9f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 12:39:28 +10:00
Simple_Not
382e50391c check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 12:38:22 +10:00
Simple_Not
25725646cb check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 12:34:27 +10:00
Simple_Not
f670bc9b2c check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 12:31:18 +10:00
Simple_Not
f9c55713d4 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 12:29:19 +10:00
Simple_Not
eee63ed855 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:14:08 +10:00
Simple_Not
dfa38a20d3 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:13:10 +10:00
Simple_Not
7c4c3b4d25 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:12:10 +10:00
Simple_Not
0378e7e484 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:10:40 +10:00
Simple_Not
ad75b536f1 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:09:52 +10:00
Simple_Not
7c026e82bf check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:09:01 +10:00
Simple_Not
8e0ddee465 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:08:51 +10:00
Simple_Not
fd5cb4140a check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:06:24 +10:00
Simple_Not
4eb7bd8a50 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:05:33 +10:00
Simple_Not
ed9260ca66 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 02:04:38 +10:00
Simple_Not
b824370a43 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 01:52:36 +10:00
Simple_Not
39aa0a9687 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 01:52:00 +10:00
Simple_Not
bda72fc32d check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 01:43:56 +10:00
Simple_Not
6d9caa78f2 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 01:40:19 +10:00
Simple_Not
6add3fe85d check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 01:35:31 +10:00
Simple_Not
1d5369d73a check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-14 01:32:56 +10:00
Simple_Not
10b0643899 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 22:06:10 +10:00
Simple_Not
9492835187 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 22:03:03 +10:00
Simple_Not
12cfadab19 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 22:02:19 +10:00
Simple_Not
ec724d0c18 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 22:01:47 +10:00
Simple_Not
4024f8f032 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:56:36 +10:00
Simple_Not
1173482a57 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:45:11 +10:00
Simple_Not
8739ad9313 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:34:56 +10:00
Simple_Not
9b7fae2a62 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:34:06 +10:00
Simple_Not
5e9d093589 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:32:36 +10:00
Simple_Not
216a35734c check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:31:16 +10:00
Simple_Not
7e01cf90b5 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:27:39 +10:00
Simple_Not
3361533b62 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:26:04 +10:00
Simple_Not
9488d197dc check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:05:09 +10:00
Simple_Not
8aa2d0b0bf check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:03:33 +10:00
Simple_Not
012f55c18d check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:02:51 +10:00
Simple_Not
98388b2021 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 21:01:57 +10:00
Simple_Not
697d2f5703 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:54:44 +10:00
Simple_Not
694c0bc1a9 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:51:33 +10:00
Simple_Not
bf8581a560 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:50:19 +10:00
Simple_Not
be8202d2b0 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:48:47 +10:00
Simple_Not
7510c10e9f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:48:10 +10:00
Simple_Not
34bb443b0d check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:47:10 +10:00
Simple_Not
8c8fab8147 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:45:52 +10:00
Simple_Not
463d539ea4 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:45:23 +10:00
Simple_Not
c923785016 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:44:32 +10:00
Simple_Not
a2c552df47 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:42:35 +10:00
Simple_Not
329614ed3f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:41:22 +10:00
Simple_Not
33c7a8e59f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:38:48 +10:00
Simple_Not
f027a04c0f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:38:08 +10:00
Simple_Not
295381937c check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:36:52 +10:00
Simple_Not
2876a00bed check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:35:37 +10:00
Simple_Not
1222913234 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:35:11 +10:00
Simple_Not
8fde2c68ee check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:33:47 +10:00
Simple_Not
faf6296efd check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:33:42 +10:00
Simple_Not
c94424d110 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:32:42 +10:00
Simple_Not
fb336375c6 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:31:23 +10:00
Simple_Not
52769de237 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:29:29 +10:00
Simple_Not
da1a38971a check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:28:21 +10:00
Simple_Not
c9d0424926 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:27:31 +10:00
Simple_Not
9ad17b25d4 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:26:14 +10:00
Simple_Not
e7955b9585 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:23:59 +10:00
Simple_Not
11f1cada7e check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:23:27 +10:00
Simple_Not
1fef23b5a4 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:23:01 +10:00
Simple_Not
74233dd498 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:21:17 +10:00
Simple_Not
f3a0c82ef5 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:20:34 +10:00
Simple_Not
17d84638e3 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:19:57 +10:00
Simple_Not
7b1e40820f check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:18:12 +10:00
Simple_Not
3e935e4d1b check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:13:33 +10:00
Simple_Not
270b3f562b check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:12:11 +10:00
Simple_Not
e7e34ff9f6 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:09:26 +10:00
Simple_Not
f064c0aedd check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 20:03:01 +10:00
Simple_Not
974e1f52d6 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 19:59:56 +10:00
Simple_Not
b92b5c63b1 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 19:57:40 +10:00
Simple_Not
f1d5ef70ad check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 19:56:43 +10:00
Simple_Not
6094f277b5 check posts
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 19:50:45 +10:00
Simple_Not
a57a964c60 fix
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 15:12:58 +10:00
Simple_Not
9847f24432 fix bd
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 15:02:52 +10:00
Simple_Not
6c4235bed1 now we counting
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-13 01:05:54 +10:00
Simple_Not
0118b859d1 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:26:01 +10:00
Simple_Not
b69f359af9 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:24:36 +10:00
Simple_Not
74cf65b299 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:20:03 +10:00
Simple_Not
578e3eae3d annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:18:00 +10:00
Simple_Not
62c27f9729 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:17:01 +10:00
Simple_Not
742f32b5c5 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:16:34 +10:00
Simple_Not
d354cb1ab2 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:15:09 +10:00
Simple_Not
04ca092bae annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:14:07 +10:00
Simple_Not
b6b9e2426d annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:12:48 +10:00
Simple_Not
6fbb7b035c annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:10:59 +10:00
Simple_Not
52b73d89dc annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:10:22 +10:00
Simple_Not
685a53ffee annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:09:26 +10:00
Simple_Not
7579471b77 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:06:58 +10:00
Simple_Not
2b817b96c6 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:05:47 +10:00
Simple_Not
0ce9283cc7 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:04:44 +10:00
Simple_Not
8cdcab76d5 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:03:39 +10:00
Simple_Not
ddfb8f217a annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:02:56 +10:00
Simple_Not
4e583b6507 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:01:46 +10:00
Simple_Not
375994a607 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 02:00:29 +10:00
Simple_Not
3d13563437 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:59:04 +10:00
Simple_Not
88e1b7afdd annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:57:15 +10:00
Simple_Not
55f0db1a33 annother hexxo
Some checks failed
continuous-integration/drone/push Build is failing
2023-07-12 01:56:16 +10:00
Simple_Not
16a249c9d4 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:53:31 +10:00
Simple_Not
66cc98ecfc annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:50:29 +10:00
Simple_Not
1cde8d0d02 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:45:44 +10:00
Simple_Not
3adcc12242 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:45:29 +10:00
Simple_Not
1016d11ae2 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:43:59 +10:00
Simple_Not
38d9e1443f annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:39:13 +10:00
Simple_Not
77b3520b12 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:36:34 +10:00
Simple_Not
f952ef97c6 annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:31:15 +10:00
Simple_Not
22d5932d8d annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:30:05 +10:00
Simple_Not
e18923fe3a annother hexxo
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-12 01:23:49 +10:00
Simple_Not
ef65feaa71 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:59:01 +10:00
Simple_Not
fb8566ee90 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:54:20 +10:00
Simple_Not
32beec050b some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:52:17 +10:00
Simple_Not
9ccdd36935 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:51:36 +10:00
Simple_Not
d10f37e348 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:50:31 +10:00
Simple_Not
434b3379e7 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:49:41 +10:00
Simple_Not
5147a7482f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:48:38 +10:00
Simple_Not
d10908370f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:48:02 +10:00
Simple_Not
d04709cbae some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:45:51 +10:00
Simple_Not
59883c97f8 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:44:38 +10:00
Simple_Not
1c754df7c4 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:34:06 +10:00
Simple_Not
fbaa194414 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:33:59 +10:00
Simple_Not
01dccac45f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:30:45 +10:00
Simple_Not
6becf75405 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:29:11 +10:00
Simple_Not
e47ec1d58a some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:25:24 +10:00
Simple_Not
a1c26d80b0 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:22:52 +10:00
Simple_Not
05966b4f1f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:22:27 +10:00
Simple_Not
b4e6e12b1f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:21:13 +10:00
Simple_Not
225bbfd2e2 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:16:51 +10:00
Simple_Not
00fc6f0f3f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:16:11 +10:00
Simple_Not
1d9b88be59 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:11:02 +10:00
Simple_Not
c3dbdd83a7 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:03:23 +10:00
Simple_Not
3c8681c192 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 22:00:36 +10:00
Simple_Not
68972b334a some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:46:44 +10:00
Simple_Not
00d3a6993f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:44:33 +10:00
Simple_Not
51aa534366 some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:44:19 +10:00
Simple_Not
a9f28dd62f some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:43:30 +10:00
Simple_Not
8c6e91043d some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:41:59 +10:00
Simple_Not
ed25f5ec2b some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:38:49 +10:00
Simple_Not
9dcfde083b some styling
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-05 21:36:31 +10:00
Simple_Not
7fd351c3b1 favicon
All checks were successful
continuous-integration/drone/push Build is passing
2023-07-04 00:02:33 +10:00
28 changed files with 778 additions and 4264 deletions

View File

@@ -15,42 +15,93 @@ steps:
- name: pull into the folduh
commands:
- cd /usr/share/repos/$DRONE_REPO_NAME
- git checkout $DRONE_COMMIT_BRANCH
- git pull origin $DRONE_COMMIT_BRANCH
- name: build
environment:
DOCKER_TLS_VERIFY: 1
DOCKER_HOST: "tcp://192.168.49.2:2376"
DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
MINIKUBE_ACTIVE_DOCKERD: "minikube"
# - name: build
# environment:
# DOCKER_TLS_VERIFY: 1
# DOCKER_HOST: "tcp://192.168.49.2:2376"
# DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
# MINIKUBE_ACTIVE_DOCKERD: "minikube"
# commands:
# - cd /usr/share/repos/$DRONE_REPO_NAME
# - git checkout $DRONE_COMMIT_BRANCH
# - docker build . -t ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)"
# - docker tag ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)" ${DRONE_REPO_NAME}:latest
# - docker tag ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)" ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}
- name: build to harbor
commands:
- cd /usr/share/repos/$DRONE_REPO_NAME
- git checkout $DRONE_COMMIT_BRANCH
- docker build . -t ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)"
- docker tag ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)" ${DRONE_REPO_NAME}:latest
- docker tag ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)" ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}
#- docker build . -t ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)"
#- docker tag ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)" harbor.guaranteedstruggle.host/library/${DRONE_REPO_NAME}:latest
#- docker tag ${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}-"$(git rev-parse --short HEAD)" harbor.guaranteedstruggle.host/library/${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}
- docker build . -t harbor.guaranteedstruggle.host/library/${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}
- docker login harbor.guaranteedstruggle.host -u 'robot$drono' -p valgBwMgcB86azvmuezTOC3omjXZ1NZe
- docker push harbor.guaranteedstruggle.host/library/${DRONE_REPO_NAME}:${DRONE_COMMIT_BRANCH}
- name: restart deployment master
environment:
DOCKER_TLS_VERIFY: 1
DOCKER_HOST: "tcp://192.168.49.2:2376"
DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
MINIKUBE_ACTIVE_DOCKERD: "minikube"
KUBECONFIG: /etc/kubernetes/admin.conf
commands:
- su - hogweed1 -c "minikube kubectl -- rollout restart -n vdk2ch deployment flask-htmx-master"
- kubectl rollout restart -n vdk2ch deployment flask-htmx-master
when:
branch:
- master-of-slaves
- name: restart deployment dev
environment:
DOCKER_TLS_VERIFY: 1
DOCKER_HOST: "tcp://192.168.49.2:2376"
DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
MINIKUBE_ACTIVE_DOCKERD: "minikube"
KUBECONFIG: /etc/kubernetes/admin.conf
commands:
- su - hogweed1 -c "minikube kubectl -- rollout restart -n vdk2ch deployment flask-htmx-dev"
- kubectl rollout restart -n vdk2ch deployment flask-htmx-dev
when:
branch:
- dev
- name: restart deployment our-style
environment:
KUBECONFIG: /etc/kubernetes/admin.conf
commands:
- kubectl rollout restart -n vdk2ch deployment flask-htmx-our-style
when:
branch:
- our-style
# - name: restart deployment master
# environment:
# DOCKER_TLS_VERIFY: 1
# DOCKER_HOST: "tcp://192.168.49.2:2376"
# DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
# MINIKUBE_ACTIVE_DOCKERD: "minikube"
# commands:
# - su - hogweed1 -c "minikube kubectl -- rollout restart -n vdk2ch deployment flask-htmx-master"
# when:
# branch:
# - master-of-slaves
# - name: restart deployment dev
# environment:
# DOCKER_TLS_VERIFY: 1
# DOCKER_HOST: "tcp://192.168.49.2:2376"
# DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
# MINIKUBE_ACTIVE_DOCKERD: "minikube"
# commands:
# - su - hogweed1 -c "minikube kubectl -- rollout restart -n vdk2ch deployment flask-htmx-dev"
# when:
# branch:
# - dev
# - name: restart deployment our-style
# environment:
# DOCKER_TLS_VERIFY: 1
# DOCKER_HOST: "tcp://192.168.49.2:2376"
# DOCKER_CERT_PATH: "/home/hogweed1/.minikube/certs"
# MINIKUBE_ACTIVE_DOCKERD: "minikube"
# commands:
# - su - hogweed1 -c "minikube kubectl -- rollout restart -n vdk2ch deployment flask-htmx-our-style"
# when:
# branch:
# - our-style

View File

@@ -2,13 +2,13 @@
FROM python:3.11-alpine
# copy the requirements file into the image
COPY ./reqs.txt /app/reqs.txt
COPY ./reqs.txt /app/reqs0.txt
# switch working directory
WORKDIR /app
# install the dependencies and packages in the requirements file
RUN pip install -r reqs.txt
RUN pip install -r reqs0.txt
# copy every content from the local file to the image
COPY . /app

View File

@@ -213,3 +213,4 @@ stateDiagram-v2
dash_join --> User : дашборды
```

Binary file not shown.

269
app.py
View File

@@ -1,11 +1,12 @@
from flask import Flask, render_template, request
from flask_assets import Bundle, Environment
from todo import todos
from boards import board_list
from threads import threads_lists
from threads_with_posts import open_threads
from flask import Flask, render_template, request, jsonify, make_response
from flask_assets import Bundle, Environment
from arango import ArangoClient
from minio import Minio
import socket, os
import socket
app = Flask(__name__)
@@ -14,15 +15,33 @@ assets = Environment(app)
css = Bundle("src/*.css", output="dist/main.css")
# https://unpkg.com/htmx.org
js = Bundle("src/*.js", output="dist/main.js")
#js = Bundle("src/*.js", output="dist/main.js")
assets.register("css", css)
assets.register("js", js)
#assets.register("js", js)
css.build()
js.build()
#js.build()
docker_short_id = socket.gethostname()
arango_client = ArangoClient(hosts='https://arango.guaranteedstruggle.host')
db = arango_client.db('board1', username='root', password='123-very-unsafe-way-to-protect-yourself321')
# предполагается что меняться список будет весьма редко, поэтому подхватываем при лишь при перезапуске
# # boards0 = db.collection('boards')
# # print(boards0)
# # board_list = [ k['_key'] for k in boards0]
@app.route("/get_my_ip")
def get_my_ip():
return jsonify({'ip': request.remote_addr,
'real-ip': request.environ.get('HTTP_X_REAL_IP', request.remote_addr)}), 200
@app.route('/liveness')
def healthx():
@@ -30,6 +49,8 @@ def healthx():
@app.route('/readiness')
def healthz():
#### TODU return arango check
return "<h1><center>Readiness check completed</center><h1>"
@@ -37,38 +58,222 @@ def healthz():
@app.route("/")
def homepage():
docker_short_id = socket.gethostname()
boards0 = db.collection('boards')
board_list = [ k['_key'] for k in boards0]
return render_template("main-page.html", host_id=docker_short_id, boards=board_list)
### stolen
@app.route("/boards/<board_id>")
def page_board(board_id):
b_threads = [ open_threads[thread_id] for thread_id in open_threads if thread_id in threads_lists[board_id]]
return render_template("board.html", board_id=board_id, boards=board_list, board_threads=b_threads)
#### TODO если борды нет, то возвращать 404 мемную
#### TODO если треда нет, то возвращать 404 мемную
### stolen
@app.route("/todo")
def page_todo():
return render_template("page1.html")
#### DONE route :: /{board}/
@app.route('/<board>')
def board_posts(board=None):
postos = db.collection('posts')
postos = [ p for p in postos if p.get('root_post') == True and p.get('board') == board ]
postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False)
boards0 = db.collection('boards')
board_list = [ k['_key'] for k in boards0]
return render_template("board-posts.html", host_id=docker_short_id, postos=postos, board=board, target_post_id=None, boards=board_list)
@app.route("/search", methods=["POST"])
def search_todo():
search_term = request.form.get("search")
#### TODO route :: /{board}/{thread}/
#### TODO убрать отсюда чужие рут-потсы
@app.route("/<board>/<int:target_post_id>")
def thread_posts(board=None, target_post_id=None):
if not len(search_term):
return render_template("todo.html", todos=[])
## взять рут-пост
## взять всех его детей
res_todos = []
for todo in todos:
if search_term in todo["title"]:
res_todos.append(todo)
# postos = db.collection('posts')
# postos = [ p for p in postos]
# postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False)
return render_template("todo.html", todos=res_todos)
### /stolen
cursor = db.aql.execute(
f"""FOR ppp IN posts
FILTER ppp.root_post == True and ppp._key == "{target_post_id}"
FOR v IN 1..9999 OUTBOUND ppp post_parents RETURN v"""
)
postos = [ ]
while not cursor.empty(): # Pop until nothing is left on the cursor.
postos.append(cursor.pop())
cursor = db.aql.execute(
f'RETURN DOCUMENT("posts/{target_post_id}")'
)
while not cursor.empty(): # Pop until nothing is left on the cursor.
postos.append(cursor.pop())
postos = [ p for p in postos ]
postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False)
if not target_post_id:
target_post_id = postos[0]['_key']
boards0 = db.collection('boards')
board_list = [ k['_key'] for k in boards0]
return render_template("interactive-posts.html", board=board, host_id=docker_short_id, postos=postos, target_post_id=target_post_id, boards=board_list)
#### TODO route :: /{board}/create_thread/{target_post_id}
@app.route("/<board>/create-thread/<target_post_id>", methods=['POST'])
def create_thread(board=None, target_post_id=None):
postos = db.collection('posts')
data = request.form['send_this_text']
metadata = postos.insert({
'texto': data,
"root_post": True,
'board': board,
'images': [],
"children_num": 0,
"answers_num": 0,
"answers_list": [ [], [], [] ]
}, overwrite_mode='update')
response = make_response()
response.headers["HX-Redirect"] = f"/{board}/{metadata['_key']}"
response.status_code = 200
return response
#### TODO route :: /{board}/{thread}/answer_post/
#### TODO route :: /{board}/{thread}/post_to_another_post/
# @app.route('/db_posts')
# @app.route("/db_posts/<target_post_id>")
# def page_posts_from_db(target_post_id=None):
# postos = db.collection('posts')
# postos = [ p for p in postos]
# postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False)
# for p in postos:
# #if p['root_post']:
# print(p)
# if not target_post_id:
# target_post_id = postos[0]['_key']
# return render_template("interactive-posts.html", host_id=docker_short_id, postos=postos, target_post_id=target_post_id)
@app.route("/<board>/answer_post/<target_post_id>", methods=['POST'])
def answer_post(board, target_post_id):
postos = db.collection('posts')
postos = [ p for p in postos ]
postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False)
## ?? wut
if not target_post_id:
target_post_id = postos[0]['_key']
return render_template("answer-post.html", board=board, target_post_id=target_post_id)
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'gif', 'mp4', 'webm', 'webp'}
def allowed_file(filename):
return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS
@app.route('/<board>/post_to_another_post/<post_key>', methods=['POST'])
def post_to_post(board, post_key):
#### TODO resize pics https://stackoverflow.com/questions/53337318/how-can-i-resize-image-with-pil-on-upload-and-serve-them-with-flask-cloudy
#### TODO allow only imgs, videos, and gifs
if 'file' in request.files:
minioClient = Minio( "static.guaranteedstruggle.host" )
bucket_name = "thread-pics"
files = request.files.getlist("file")
for file in files:
size = os.fstat(file.fileno()).st_size
#### работает ли??
if allowed_file(file.filename):
minioClient.put_object(
bucket_name, file.filename, file, size
)
else:
print(f'somebody tried to put this inside minio: {file.filename} size: {size}')
postos = db.collection('posts')
data = request.form['send_this_text']
cursor = db.aql.execute(
f'RETURN DOCUMENT("posts/{post_key}")'
)
p = cursor.pop()
if p.get('root_post') == True:
thread = p.get('_key')
elif not p.get('root_post'):
thread = p.get('thread')
else:
thread = 'ERROR'
print(p)
metadata = postos.insert({
'texto': data,
'parent_post': f'{post_key}',
'images': [],
"thread": thread
}, overwrite_mode='update')
metadata = db.collection('post_parents').insert({
'_from': f'posts/{post_key}',
'_to': f'posts/{metadata["_key"]}'
}, overwrite_mode='update')
#### TODO оптимайз для только тредовых штук
cursor = db.aql.execute(
"""FOR ppp IN posts
LET children = (FOR v IN 1..9999 OUTBOUND ppp post_parents RETURN v)
UPDATE ppp WITH { children_num : COUNT_DISTINCT( children[*]._key ) } IN posts"""
)
cursor = db.aql.execute(
"""FOR ppp IN posts
LET children = (FOR v IN 1 OUTBOUND ppp post_parents RETURN v)
UPDATE ppp WITH { answers_num : COUNT_DISTINCT( children[*]._key ) } IN posts"""
)
cursor = db.aql.execute(
"""FOR ppp IN posts
LET children0 = (FOR v IN 1 OUTBOUND ppp post_parents RETURN v)
LET children = (FOR c IN children0
SORT c._key DESC
RETURN c)
UPDATE ppp WITH { answers_list : [ children[*]._key, children[*].answers_num, children[*].children_num ] } IN posts"""
)
postos = db.collection('posts')
postos = [ p for p in postos if (not p.get('root_post')) and p.get('thread') == thread ]
cursor = db.aql.execute(
f'RETURN DOCUMENT("posts/{thread}")'
)
postos.append(cursor.pop())
postos = sorted(postos, key=lambda posto: int(posto['_key']), reverse=False)
return render_template("i-posts.html", board=board, host_id=docker_short_id, postos=postos)
#### TODO websockets
#### TODO sse
#### TODO kafka
#### TODO shards
#### TODO grpc

View File

@@ -1,3 +0,0 @@
board_list = [
'b','a','d'
]

View File

@@ -1,2 +1,4 @@
flask
flask-assets
python-arango
minio

41
static/dist/main.css vendored Normal file
View File

@@ -0,0 +1,41 @@
/* украдено здесь https://css-tricks.com/hexagons-and-beyond-flexible-responsive-grid-patterns-sans-media-queries/ */
.hex-main {
display:flex;
--s: 100px; /* size */
--m: 4px; /* margin */
--f: calc(1.732 * var(--s) + 4 * var(--m) - 1px);
max-width: 440px;
margin: 15px;
}
.hex-container {
font-size: 0; /*disable white space between inline block element */
}
.hex-container img {
width: var(--s);
margin: var(--m);
height: calc(var(--s)*1.1547);
display: inline-block;
font-size:initial;
clip-path: polygon(0% 25%, 0% 75%, 50% 100%, 100% 75%, 100% 25%, 50% 0%);
background: transparent;
margin-bottom: calc(var(--m) - var(--s)*0.2885);
}
.hex-container img:nth-child(odd) {
background: transparent;
}
.hex-container::before {
content: "";
width: calc(var(--s)/2 + var(--m));
float: left;
height: 120%;
shape-outside: repeating-linear-gradient(
#0000 0 calc(var(--f) - 3px),
#000 0 var(--f));
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,41 @@
/* украдено здесь https://css-tricks.com/hexagons-and-beyond-flexible-responsive-grid-patterns-sans-media-queries/ */
.hex-main {
display:flex;
--s: 100px; /* size */
--m: 4px; /* margin */
--f: calc(1.732 * var(--s) + 4 * var(--m) - 1px);
max-width: 440px;
margin: 15px;
}
.hex-container {
font-size: 0; /*disable white space between inline block element */
}
.hex-container img {
width: var(--s);
margin: var(--m);
height: calc(var(--s)*1.1547);
display: inline-block;
font-size:initial;
clip-path: polygon(0% 25%, 0% 75%, 50% 100%, 100% 75%, 100% 25%, 50% 0%);
background: transparent;
margin-bottom: calc(var(--m) - var(--s)*0.2885);
}
.hex-container img:nth-child(odd) {
background: transparent;
}
.hex-container::before {
content: "";
width: calc(var(--s)/2 + var(--m));
float: left;
height: 120%;
shape-outside: repeating-linear-gradient(
#0000 0 calc(var(--f) - 3px),
#000 0 var(--f));
}

View File

@@ -0,0 +1,69 @@
<div class="card">
<form
hx-encoding='multipart/form-data'
_='on htmx:xhr:progress(loaded, total) set #progress.value to (loaded/total)*100'
hx-on::after-request="this.reset()"
>
<div class="card-content">
<div class="row">
<span class="card-title">Ты отвечаешь: <a href="#post-{{ target_post_id }}">>>{{ target_post_id }}</a></span>
</div>
<div class="row">
<a class="btn-floating halfway-fab waves-effect waves-light red" href="#post-{{ target_post_id }}"><i class="material-icons">>>{{ target_post_id }}</i></a>
</div>
<div class="row">
<div class="input-field col s6">
<input id="send_this_text" name="send_this_text" type="text" >
<label for="send_this_text">Печатать сюда</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<div class="file-field input-field">
<div class="btn">
<span>File</span>
<input id="file" name="file" type="file" multiple>
</div>
<div class="file-path-wrapper">
<input class="file-path validate" type="text" placeholder="Upload one or more files">
<progress id='progress' value='0' max='100'></progress>
</div>
<!-- <div class="file-progress">
</div> -->
</div>
</div>
</div>
</div>
<div class="card-action">
<a href="#answer-post">
<button class="btn waves-effect waves-light"
type="submit" name="action" hx-encoding='multipart/form-data'
_='on htmx:xhr:progress(loaded, total) set #progress.value to (loaded/total)*100'
hx-post="/{{board}}/post_to_another_post/{{ target_post_id }}"
hx-target="#neu-posts"
hx-include="[name='send_this_text'], [name='file']"
>
Отправить!!
<i class="material-icons right">send</i>
</button>
</a>
</div>
</form>
<!-- <div class="row">
<form hx-encoding='multipart/form-data' hx-post='/send_dudes'
_='on htmx:xhr:progress(loaded, total) set #progress.value to (loaded/total)*100'>
<input type='file' name='file'>
<button>
Upload
</button>
<progress id='progress' value='0' max='100'></progress>
</form>
</div> -->
<!-- <h1>Загрузить картинку:</h1>
<input type="file" #file placeholder="Загрузить картинку" (change)="sendPic($event)" style="display:none;">
<button type="button" class="btn btn-success" (click)="file.click()">Загрузить картинку</button>
<div *ngFor="let singlePic of inputImages" >Картинка: {{singlePic}}</div>
<p>
<button (click)="eraseData()" >Убрать картинку</button>
</p> -->
</div>

View File

@@ -5,7 +5,15 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/purecss@3.0.0/build/pure-min.css" integrity="sha384-X38yfunGUhNzHpBaEBsWLO+A0HDYOQi8ufWDkZ0k9e0eXz/tH3II7uKZ9msv++Ls" crossorigin="anonymous">
<!-- Compiled and minified CSS -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">
<!-- Compiled and minified JavaScript -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script>
<script src="https://unpkg.com/htmx.org@1.9.3" integrity="sha384-lVb3Rd/Ca0AxaoZg5sACe8FJKF0tnUgR2Kd7ehUOG5GCcROv5uBIZsOqovBAcWua" crossorigin="anonymous"></script>
<script src="https://unpkg.com/hyperscript.org@0.9.9"></script>
{% assets 'css' %}
<link rel="stylesheet" href="{{ ASSET_URL }}">
{% endassets %}
@@ -18,7 +26,29 @@
<title>Board++</title>
</head>
<body class="bg-blue-100">
<div id="multi-bg">
{% block content %}
{% endblock content %}
</div>
<style>
#multi-bg{
background-size: 100% 100%;
height: 100%;
background-repeat: repeat-y;
background-attachment: fixed;
/* height: 1080px;
background-position: bottom center, 50%, 50%;
*/
display: block;
background-color: #808;
background-image:
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1600 900'%3E%3Cpolygon fill='%23cc3f47' points='957 450 539 900 1396 900'/%3E%3Cpolygon fill='%23b3373e' points='957 450 872.9 900 1396 900'/%3E%3Cpolygon fill='%23c8364e' points='-60 900 398 662 816 900'/%3E%3Cpolygon fill='%23b02f44' points='337 900 398 662 816 900'/%3E%3Cpolygon fill='%23c22f55' points='1203 546 1552 900 876 900'/%3E%3Cpolygon fill='%23ab294b' points='1203 546 1552 900 1162 900'/%3E%3Cpolygon fill='%23bb285c' points='641 695 886 900 367 900'/%3E%3Cpolygon fill='%23a52351' points='587 900 641 695 886 900'/%3E%3Cpolygon fill='%23b32362' points='1710 900 1401 632 1096 900'/%3E%3Cpolygon fill='%239f1f57' points='1710 900 1401 632 1365 900'/%3E%3Cpolygon fill='%23aa2068' points='1210 900 971 687 725 900'/%3E%3Cpolygon fill='%23971c5d' points='943 900 1210 900 971 687'/%3E%3C/svg%3E"),
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='400' height='200' viewBox='0 0 160 80'%3E%3Cg fill='%23FFF' fill-opacity='0.2'%3E%3Cpolygon points='0 10 0 0 10 0'/%3E%3Cpolygon points='0 40 0 30 10 30'/%3E%3Cpolygon points='0 30 0 20 10 20'/%3E%3Cpolygon points='0 70 0 60 10 60'/%3E%3Cpolygon points='0 80 0 70 10 70'/%3E%3Cpolygon points='50 80 50 70 60 70'/%3E%3Cpolygon points='10 20 10 10 20 10'/%3E%3Cpolygon points='10 40 10 30 20 30'/%3E%3Cpolygon points='20 10 20 0 30 0'/%3E%3Cpolygon points='10 10 10 0 20 0'/%3E%3Cpolygon points='30 20 30 10 40 10'/%3E%3Cpolygon points='20 20 20 40 40 20'/%3E%3Cpolygon points='40 10 40 0 50 0'/%3E%3Cpolygon points='40 20 40 10 50 10'/%3E%3Cpolygon points='40 40 40 30 50 30'/%3E%3Cpolygon points='30 40 30 30 40 30'/%3E%3Cpolygon points='40 60 40 50 50 50'/%3E%3Cpolygon points='50 30 50 20 60 20'/%3E%3Cpolygon points='40 60 40 80 60 60'/%3E%3Cpolygon points='50 40 50 60 70 40'/%3E%3Cpolygon points='60 0 60 20 80 0'/%3E%3Cpolygon points='70 30 70 20 80 20'/%3E%3Cpolygon points='70 40 70 30 80 30'/%3E%3Cpolygon points='60 60 60 80 80 60'/%3E%3Cpolygon points='80 10 80 0 90 0'/%3E%3Cpolygon points='70 40 70 60 90 40'/%3E%3Cpolygon points='80 60 80 50 90 50'/%3E%3Cpolygon points='60 30 60 20 70 20'/%3E%3Cpolygon points='80 70 80 80 90 80 100 70'/%3E%3Cpolygon points='80 10 80 40 110 10'/%3E%3Cpolygon points='110 40 110 30 120 30'/%3E%3Cpolygon points='90 40 90 70 120 40'/%3E%3Cpolygon points='10 50 10 80 40 50'/%3E%3Cpolygon points='110 60 110 50 120 50'/%3E%3Cpolygon points='100 60 100 80 120 60'/%3E%3Cpolygon points='110 0 110 20 130 0'/%3E%3Cpolygon points='120 30 120 20 130 20'/%3E%3Cpolygon points='130 10 130 0 140 0'/%3E%3Cpolygon points='130 30 130 20 140 20'/%3E%3Cpolygon points='120 40 120 30 130 30'/%3E%3Cpolygon points='130 50 130 40 140 40'/%3E%3Cpolygon points='120 50 120 70 140 50'/%3E%3Cpolygon points='110 70 110 80 130 80 140 70'/%3E%3Cpolygon points='140 10 140 0 150 0'/%3E%3Cpolygon points='140 20 140 10 150 10'/%3E%3Cpolygon points='140 40 140 30 150 30'/%3E%3Cpolygon points='140 50 140 40 150 40'/%3E%3Cpolygon points='140 70 140 60 150 60'/%3E%3Cpolygon points='150 20 150 40 160 30 160 20'/%3E%3Cpolygon points='150 60 150 50 160 50'/%3E%3Cpolygon points='140 70 140 80 150 80 160 70'/%3E%3C/g%3E%3C/svg%3E"),
url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%25' height='100%25' viewBox='0 0 1600 800'%3E%3Cg %3E%3Cpolygon fill='%23740074' points='1600 160 0 460 0 350 1600 50'/%3E%3Cpolygon fill='%235f005f' points='1600 260 0 560 0 450 1600 150'/%3E%3Cpolygon fill='%234b004b' points='1600 360 0 660 0 550 1600 250'/%3E%3Cpolygon fill='%23360036' points='1600 460 0 760 0 650 1600 350'/%3E%3Cpolygon fill='%23220022' points='1600 800 0 800 0 750 1600 450'/%3E%3C/g%3E%3C/svg%3E");
background-size: cover;
}
</style>
</body>
</html>

View File

@@ -0,0 +1,23 @@
{% extends "base.html" %}
{% block content %}
{% include 'navbar.html' %}
<div class="row" >
{% include 'create-thread.html' %}
</div>
<div class="row" >
<div class="col s6 m5" id="op-posts">
{% include 'op-posts.html' %}
</div>
<!-- <div class="col s6 m5" id="thread-viz">
<iframe src="https://thread-visualizah-dev.board.vdk2ch.ru/" scrolling="no" frameborder="0" style="position: relative; height: 600px; width: 100%; margin:10px;"></iframe>
</div> -->
</div>
{% endblock content %}

View File

@@ -1,50 +0,0 @@
{% extends "base.html" %}
{% block content %}
<div class="content">
<p>Вы тут: /{{board_id}}</p>
</div>
<nav>
<a href="/">glavnaya</a>
<br>
Доски:
<div class="boards">
<ul>
{% for board in boards %}
<li><a href="/boards/{{board}}">/{{board}}</a></li>
{% endfor %}
</ul>
</div>
</nav>
<table class="pure-table-odd">
<thead>
<tr>
<th class="">номер треда</th>
<th class="">номер поста</th>
<th class="">автор(ка)</th>
<th class="">пикча эта ваша</th>
<th class="">текст</th>
</tr>
</thead>
<tbody id="thread-results">
{% for thread in board_threads %}
<tr class="">
<td class="">{{thread.thread_num}}</td>
<td class="">{{thread.post_num}}</td>
<td class="">{{thread.name}}</td>
<td class="">
<img src="https://static.vdk2ch.ru/thread-pics/{{thread.pic_link}}" alt="" width="200" height="200">
</td>
<td class="">{{thread.txt}}</td>
</tr>
{% endfor %}
</tbody>
</table>
{% endblock content %}

View File

@@ -0,0 +1,48 @@
<div class="card">
<form
hx-encoding='multipart/form-data'
_='on htmx:xhr:progress(loaded, total) set #progress.value to (loaded/total)*100'
hx-on::after-request="this.reset()"
>
<div class="card-content">
<div class="row">
<span class="card-title">Создавай тред уже!</span>
</div>
<div class="row">
<div class="input-field col s6">
<input id="send_this_text" name="send_this_text" type="text" >
<label for="send_this_text">Печатать сюда</label>
</div>
</div>
<div class="row">
<div class="input-field col s6">
<div class="file-field input-field">
<div class="btn">
<span>File</span>
<input id="file" name="file" type="file" multiple>
</div>
<div class="file-path-wrapper">
<input class="file-path validate" type="text" placeholder="Upload one or more files">
<progress id='progress' value='0' max='100'></progress>
</div>
<!-- <div class="file-progress">
</div> -->
</div>
</div>
</div>
</div>
<div class="card-action">
<a href="/{{board}}/create-thread/{{ target_post_id }}">
<button class="btn waves-effect waves-light"
type="submit" name="action" hx-encoding='multipart/form-data'
_='on htmx:xhr:progress(loaded, total) set #progress.value to (loaded/total)*100'
hx-post="/{{board}}/create-thread/{{ target_post_id }}"
hx-include="[name='send_this_text'], [name='file']"
>
Отправить!!
<i class="material-icons right">send</i>
</button>
</a>
</div>
</form>
</div>

96
templates/i-posts.html Normal file
View File

@@ -0,0 +1,96 @@
{% if postos | length > 0 %}
{% for posto in postos %}
<div class="row">
{% if posto.root_post %}
<div class="card s5 deep-orange accent-4 darken-1">
{% else %}
<div class="card s5 blue-grey darken-1">
{% endif %}
<div class="card-content white-text">
<span class="new badge yellow" data-badge-caption="">
<a class="purple-text" href="#post-{{ posto._key }}"> #{{ posto._key }} </a>
</span>
<span class="new badge blue" data-badge-caption="">Ответов: {{ posto.answers_num }}</span>
<span class="new badge red" data-badge-caption="">Длина треда: {{ posto.children_num }}</span>
</div>
<div class="row" id="post-{{ posto._key }}">
{% if posto.images | length > 0 %}
<div class="col s12">
<!-- <div class="hex-main">
<div class="hex-container">
<a href="https://loremflickr.com/g/320/240/paris" target="_blank" ">
<img src="https://loremflickr.com/g/320/240/paris">
</a>
</div>
</div> -->
<div class="nav-wrapper">
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li>
<a href="https://static.guaranteedstruggle.host/thread-pics/photo_2023-05-16_00-49-34.jpg" target="_blank" ">
<img src="https://static.guaranteedstruggle.host/thread-pics/photo_2023-05-16_00-49-34.jpg" width="300px">
</a>
<span class=" "><a class="" href="https://static.guaranteedstruggle.host/thread-pics/photo_2023-05-16_00-49-34.jpg" target="_blank"> photo_2023-05-16_00-49-34.jpg </a> </span>
</li>
<li>
<a href="https://static.guaranteedstruggle.host/thread-pics/109.png" target="_blank" ">
<img src="https://static.guaranteedstruggle.host/thread-pics/109.png" width="300px">
</a>
<span class=" "><a class="" href="https://static.guaranteedstruggle.host/thread-pics/109.png" target="_blank"> 109.png </a> </span>
</li>
</ul>
</div>
</div>
{% endif %}
<!-- <div class="col s8">
<div class="card-content white-text">
<span class="card-title">#{{ posto._key }}
<span class="new badge blue" data-badge-caption="">Ответов: {{ posto.answers_num }}</span>
<span class="new badge red" data-badge-caption="">Длина треда: {{ posto.children_num }}</span>
</span>
{% if posto.parent_post %}
<a class="link orange-text purple" href="#post-{{ posto.parent_post }}"> >>{{ posto.parent_post }} </a>
{% endif %}
<p>{{ posto.texto }}</p>
</div>
</div> -->
<div class="col s12 card-content white-text">
{% if posto.parent_post %}
<a class="link orange-text purple" href="#post-{{ posto.parent_post }}"> >>{{ posto.parent_post }} </a>
{% endif %}
<p>{{ posto.texto }}</p>
</div>
<div class="col s12 card-action white-text">
<div class="right">
<!-- <a href="#" hx-post="/post_my_post/{{ posto._key }}" hx-target="#neu-posts" >Answer me!</a> -->
<a href="#answer-post" hx-post="/{{board}}/answer_post/{{ posto._key }}" hx-target="#answer-post" >Ответить этому.</a>
</div>
</div>
<div class="col s12 card-content white-text">
<!-- TODO !подгрузка следующего поста в конец треда без перезагрузки всего треда! -->
<div class="left">
<!-- <a href="#" hx-post="/post_my_post/{{ posto._key }}" hx-target="#neu-posts" >Answer me!</a> -->
{% if posto.answers_list[0] | length > 0 %}
<p>Ответы:</p>
{% for ans in posto.answers_list[0] %}
{% if (posto.answers_list[1])[loop.index-1] > 0 %}
{% if (posto.answers_list[2])[loop.index-1] > 0 %}
<a href="#post-{{ (posto.answers_list[0])[loop.index-1] }}" class="lime-text red collection-item" style="padding: 2px 2px;">>>{{ (posto.answers_list[0])[loop.index-1] }} (ответов {{ (posto.answers_list[1])[loop.index-1] }}, длина {{ (posto.answers_list[2])[loop.index-1] }})</a>
{% else %}
<a href="#post-{{ (posto.answers_list[0])[loop.index-1] }}" class="lime-text red collection-item" style="padding: 2px 2px;">>>{{ (posto.answers_list[0])[loop.index-1] }} (ответов {{ (posto.answers_list[1])[loop.index-1] }})</a>
{% endif %}
{% else %}
<a href="#post-{{ (posto.answers_list[0])[loop.index-1] }}" class="lime-text red collection-item" style="padding: 2px 2px;">>>{{ (posto.answers_list[0])[loop.index-1] }}</a>
{% endif %}
{% endfor %}
{% endif %}
</div>
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}

View File

@@ -0,0 +1,25 @@
{% extends "base.html" %}
{% block content %}
{% include 'navbar.html' %}
<div class="row" >
<div class="col s6 m5" id="neu-posts">
{% include 'i-posts.html' %}
</div>
<div class="col s6 m5" id="thread-viz">
<iframe src="https://thread-visualizah-dev.board.vdk2ch.ru/" scrolling="no" frameborder="0" style="position: relative; height: 600px; width: 100%; margin:10px;"></iframe>
</div>
</div>
<div class="row">
<div class="col s3 m3 " id="aa"></div>
<div class="col s7 m6 " id="answer-post">
{% include 'answer-post.html' %}
</div>
</div>
{% endblock content %}

View File

@@ -2,27 +2,19 @@
{% block content %}
<div class="host-id">Вас закинуло сюда: {{host_id}}</div>
<div class="content">
Dobro pozhalovat. AGAIN.
</div>
<nav>
<a routerLink = "/">Напоминание </a>
<br>
<a routerLink = "/about">О нас </a>
<br>
Доски:
<div class="boards">
<ul>
{% for board in boards %}
<li><a href="/boards/{{board}}">/{{board}}</a></li>
{% endfor %}
</ul>
{% include 'navbar.html' %}
<div class="container">
<div class="row">
<div class="col s4 center">
<div class="card">
<div class="card-image">
<img class="img-responsive" src="https://static.guaranteedstruggle.host/test-public/sin.jpg" height="400px" width="320px">
</div>
<div class="card-content">
<p> Dobro pozhalovat. AGAIN. </p>
</div>
</div>
</div>
</div>
</nav>
<img src="https://static.vdk2ch.ru/test-public/sin.jpg">
</div>
{% endblock content %}

18
templates/navbar.html Normal file
View File

@@ -0,0 +1,18 @@
<nav>
<div class="nav-wrapper purple darken-3">
<ul id="nav-mobile" class="left ">
<li> <a href="/">glavnaya</a> </li>
{% if boards | length > 0 %}
{% for board in boards %}
<li><a href="/{{board}}"><span class="new badge red" data-badge-caption="">{{board}}</span></a> </li>
{% endfor %}
{% endif %}
<li>
<a href="#">Вас закинуло сюда: <span class="new badge blue" data-badge-caption="">{{host_id}}</span></a>
</li>
</ul>
</div>
</nav>

53
templates/op-posts.html Normal file
View File

@@ -0,0 +1,53 @@
{% if postos | length > 0 %}
{% for posto in postos %}
<div class="row">
{% if posto.root_post %}
<div class="card s5 deep-orange accent-4 darken-1">
{% else %}
<div class="card s5 blue-grey darken-1">
{% endif %}
<div class="card-content white-text">
<span class="new badge yellow" data-badge-caption="">
<a class="purple-text" href="/{{board}}/{{ posto._key }}"> #{{ posto._key }} </a>
</span>
<span class="new badge blue" data-badge-caption="">Ответов: {{ posto.answers_num }}</span>
<span class="new badge red" data-badge-caption="">Длина треда: {{ posto.children_num }}</span>
</div>
<div class="row" id="post-{{ posto._key }}">
{% if posto.images | length > 0 %}
<div class="col s12">
<!-- <div class="nav-wrapper">
<ul id="nav-mobile" class="right hide-on-med-and-down">
<li>
<a href="https://static.guaranteedstruggle.host/thread-pics/photo_2023-05-16_00-49-34.jpg" target="_blank" ">
<img src="https://static.guaranteedstruggle.host/thread-pics/photo_2023-05-16_00-49-34.jpg" width="300px">
</a>
<span class=" "><a class="" href="https://static.guaranteedstruggle.host/thread-pics/photo_2023-05-16_00-49-34.jpg" target="_blank"> photo_2023-05-16_00-49-34.jpg </a> </span>
</li>
<li>
<a href="https://static.guaranteedstruggle.host/thread-pics/109.png" target="_blank" ">
<img src="https://static.guaranteedstruggle.host/thread-pics/109.png" width="300px">
</a>
<span class=" "><a class="" href="https://static.guaranteedstruggle.host/thread-pics/109.png" target="_blank"> 109.png </a> </span>
</li>
</ul>
</div> -->
</div>
{% endif %}
<div class="col s12 card-content white-text">
<p>{{ posto.texto }}</p>
</div>
<div class="col s12 card-action white-text">
<div class="right">
<!-- <a href="#" hx-post="/post_my_post/{{ posto._key }}" hx-target="#neu-posts" >Answer me!</a> -->
<a href="/{{board}}/{{ posto._key }}" >В тред!</a>
</div>
</div>
</div>
</div>
</div>
{% endfor %}
{% endif %}

View File

@@ -1,36 +0,0 @@
{% extends "base.html" %}
{% block content %}
<div class="panel-block">
<div class="w-small w-2/3 mx-auto py-10 text-gray-600">
<input
type="text"
name="search"
hx-post="/search"
hx-trigger="keyup changed delay:250ms"
hx-indicator=".htmx-indicator"
hx-target="#todo-results"
placeholder="Search"
class="bg-white h-10 px-5 pr-10 rounded-full text-2xl focus:outline-none"
>
<span class="htmx-indicator">Searching...</span>
</div>
+dev 2
<table class="border-collapse w-small w-2/3 mx-auto">
<thead>
<tr>
<th class="p-3 font-bold uppercase bg-gray-200 text-gray-600 border border-gray-300 hidden lg:table-cell">#</th>
<th class="p-3 font-bold uppercase bg-gray-200 text-gray-600 border border-gray-300 hidden lg:table-cell">Title</th>
<th class="p-3 font-bold uppercase bg-gray-200 text-gray-600 border border-gray-300 hidden lg:table-cell">Completed</th>
</tr>
</thead>
<tbody id="todo-results">
{% include 'todo.html' %}
</tbody>
</table>
</div>
{% endblock content %}

View File

@@ -1,15 +0,0 @@
{% if todos|length>0 %}
{% for todo in todos %}
<tr class="bg-white lg:hover:bg-gray-100 flex lg:table-row flex-row lg:flex-row flex-wrap lg:flex-no-wrap mb-10 lg:mb-0">
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b block lg:table-cell relative lg:static">{{todo.id}}</td>
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b block lg:table-cell relative lg:static">{{todo.title}}</td>
<td class="w-full lg:w-auto p-3 text-gray-800 text-center border border-b block lg:table-cell relative lg:static">
{% if todo.completed %}
<span class="rounded bg-green-400 py-1 px-3 text-xs font-bold">Yes</span>
{% else %}
<span class="rounded bg-red-400 py-1 px-3 text-xs font-bold">No</span>
{% endif %}
</td>
</tr>
{% endfor %}
{% endif %}

View File

@@ -1,11 +0,0 @@
threads_lists = {
'b': {
'123','124'
},
'a': {
'1'
},
'd': {
'44','99','1230'
}
}

View File

@@ -1,45 +0,0 @@
# <id>: {<post_num>, <pic_link>, <texto>, <name>}
open_threads = {
'123': {
'thread_num': '123',
'post_num': '9999',
'pic_link': '16216445863900.jpg',
'txt': 'фыва',
'name': 'anonius'
},
'124': {
'thread_num': '124',
'post_num': '456',
'pic_link': '16672846165910.png',
'txt': 'Test',
'name': 'anonius'
},
'1': {
'thread_num': '123',
'post_num': '1',
'pic_link': '16211265989190.jpg',
'txt': 'фыва',
'name': 'anonius'
},
'44': {
'thread_num': '44',
'post_num': '12',
'pic_link': '15937598937440.png',
'txt': 'I hate my brother-nation..',
'name': 'Владимир Владимирович'
},
'99': {
'thread_num': '99',
'post_num': '55',
'pic_link': 'Экран-смерти.jpg',
'txt': 'фыва',
'name': 'anonius'
},
'1230': {
'thread_num': '1230',
'post_num': '1234',
'pic_link': '15906018690140.png',
'txt': '33333!',
'name': 'SIRNA'
}
}

457
todo.py
View File

@@ -1,457 +0,0 @@
todos = [
{"userId": 1, "id": 1, "title": "delectus aut autem", "completed": False},
{
"userId": 1,
"id": 2,
"title": "quis ut nam facilis et officia qui",
"completed": False,
},
{"userId": 1, "id": 3, "title": "fugiat veniam minus", "completed": False},
{"userId": 1, "id": 4, "title": "et porro tempora", "completed": True},
{
"userId": 1,
"id": 5,
"title": "laboriosam mollitia et enim quasi adipisci quia provident illum",
"completed": False,
},
{
"userId": 1,
"id": 6,
"title": "qui ullam ratione quibusdam voluptatem quia omnis",
"completed": False,
},
{
"userId": 1,
"id": 7,
"title": "illo expedita consequatur quia in",
"completed": False,
},
{"userId": 1, "id": 8, "title": "quo adipisci enim quam ut ab", "completed": True},
{"userId": 1, "id": 9, "title": "molestiae perspiciatis ipsa", "completed": False},
{
"userId": 1,
"id": 10,
"title": "illo est ratione doloremque quia maiores aut",
"completed": True,
},
{"userId": 1, "id": 11, "title": "vero rerum temporibus dolor", "completed": True},
{"userId": 1, "id": 12, "title": "ipsa repellendus fugit nisi", "completed": True},
{"userId": 1, "id": 13, "title": "et doloremque nulla", "completed": False},
{
"userId": 1,
"id": 14,
"title": "repellendus sunt dolores architecto voluptatum",
"completed": True,
},
{"userId": 1, "id": 15, "title": "ab voluptatum amet voluptas", "completed": True},
{
"userId": 1,
"id": 16,
"title": "accusamus eos facilis sint et aut voluptatem",
"completed": True,
},
{
"userId": 1,
"id": 17,
"title": "quo laboriosam deleniti aut qui",
"completed": True,
},
{
"userId": 1,
"id": 18,
"title": "dolorum est consequatur ea mollitia in culpa",
"completed": False,
},
{
"userId": 1,
"id": 19,
"title": "molestiae ipsa aut voluptatibus pariatur dolor nihil",
"completed": True,
},
{
"userId": 1,
"id": 20,
"title": "ullam nobis libero sapiente ad optio sint",
"completed": True,
},
{
"userId": 2,
"id": 21,
"title": "suscipit repellat esse quibusdam voluptatem incidunt",
"completed": False,
},
{
"userId": 2,
"id": 22,
"title": "distinctio vitae autem nihil ut molestias quo",
"completed": True,
},
{
"userId": 2,
"id": 23,
"title": "et itaque necessitatibus maxime molestiae qui quas velit",
"completed": False,
},
{
"userId": 2,
"id": 24,
"title": "adipisci non ad dicta qui amet quaerat doloribus ea",
"completed": False,
},
{
"userId": 2,
"id": 25,
"title": "voluptas quo tenetur perspiciatis explicabo natus",
"completed": True,
},
{"userId": 2, "id": 26, "title": "aliquam aut quasi", "completed": True},
{"userId": 2, "id": 27, "title": "veritatis pariatur delectus", "completed": True},
{
"userId": 2,
"id": 28,
"title": "nesciunt totam sit blanditiis sit",
"completed": False,
},
{"userId": 2, "id": 29, "title": "laborum aut in quam", "completed": False},
{
"userId": 2,
"id": 30,
"title": "nemo perspiciatis repellat ut dolor libero commodi blanditiis omnis",
"completed": True,
},
{
"userId": 2,
"id": 31,
"title": "repudiandae totam in est sint facere fuga",
"completed": False,
},
{
"userId": 2,
"id": 32,
"title": "earum doloribus ea doloremque quis",
"completed": False,
},
{"userId": 2, "id": 33, "title": "sint sit aut vero", "completed": False},
{
"userId": 2,
"id": 34,
"title": "porro aut necessitatibus eaque distinctio",
"completed": False,
},
{
"userId": 2,
"id": 35,
"title": "repellendus veritatis molestias dicta incidunt",
"completed": True,
},
{
"userId": 2,
"id": 36,
"title": "excepturi deleniti adipisci voluptatem et neque optio illum ad",
"completed": True,
},
{"userId": 2, "id": 37, "title": "sunt cum tempora", "completed": False},
{"userId": 2, "id": 38, "title": "totam quia non", "completed": False},
{
"userId": 2,
"id": 39,
"title": "doloremque quibusdam asperiores libero corrupti illum qui omnis",
"completed": False,
},
{"userId": 2, "id": 40, "title": "totam atque quo nesciunt", "completed": True},
{
"userId": 3,
"id": 41,
"title": "aliquid amet impedit consequatur aspernatur placeat eaque fugiat suscipit",
"completed": False,
},
{
"userId": 3,
"id": 42,
"title": "rerum perferendis error quia ut eveniet",
"completed": False,
},
{
"userId": 3,
"id": 43,
"title": "tempore ut sint quis recusandae",
"completed": True,
},
{
"userId": 3,
"id": 44,
"title": "cum debitis quis accusamus doloremque ipsa natus sapiente omnis",
"completed": True,
},
{
"userId": 3,
"id": 45,
"title": "velit soluta adipisci molestias reiciendis harum",
"completed": False,
},
{
"userId": 3,
"id": 46,
"title": "vel voluptatem repellat nihil placeat corporis",
"completed": False,
},
{
"userId": 3,
"id": 47,
"title": "nam qui rerum fugiat accusamus",
"completed": False,
},
{
"userId": 3,
"id": 48,
"title": "sit reprehenderit omnis quia",
"completed": False,
},
{
"userId": 3,
"id": 49,
"title": "ut necessitatibus aut maiores debitis officia blanditiis velit et",
"completed": False,
},
{
"userId": 3,
"id": 50,
"title": "cupiditate necessitatibus ullam aut quis dolor voluptate",
"completed": True,
},
{
"userId": 3,
"id": 51,
"title": "distinctio exercitationem ab doloribus",
"completed": False,
},
{
"userId": 3,
"id": 52,
"title": "nesciunt dolorum quis recusandae ad pariatur ratione",
"completed": False,
},
{
"userId": 3,
"id": 53,
"title": "qui labore est occaecati recusandae aliquid quam",
"completed": False,
},
{
"userId": 3,
"id": 54,
"title": "quis et est ut voluptate quam dolor",
"completed": True,
},
{
"userId": 3,
"id": 55,
"title": "voluptatum omnis minima qui occaecati provident nulla voluptatem ratione",
"completed": True,
},
{"userId": 3, "id": 56, "title": "deleniti ea temporibus enim", "completed": True},
{
"userId": 3,
"id": 57,
"title": "pariatur et magnam ea doloribus similique voluptatem rerum quia",
"completed": False,
},
{
"userId": 3,
"id": 58,
"title": "est dicta totam qui explicabo doloribus qui dignissimos",
"completed": False,
},
{
"userId": 3,
"id": 59,
"title": "perspiciatis velit id laborum placeat iusto et aliquam odio",
"completed": False,
},
{
"userId": 3,
"id": 60,
"title": "et sequi qui architecto ut adipisci",
"completed": True,
},
{"userId": 4, "id": 61, "title": "odit optio omnis qui sunt", "completed": True},
{
"userId": 4,
"id": 62,
"title": "et placeat et tempore aspernatur sint numquam",
"completed": False,
},
{
"userId": 4,
"id": 63,
"title": "doloremque aut dolores quidem fuga qui nulla",
"completed": True,
},
{
"userId": 4,
"id": 64,
"title": "voluptas consequatur qui ut quia magnam nemo esse",
"completed": False,
},
{
"userId": 4,
"id": 65,
"title": "fugiat pariatur ratione ut asperiores necessitatibus magni",
"completed": False,
},
{
"userId": 4,
"id": 66,
"title": "rerum eum molestias autem voluptatum sit optio",
"completed": False,
},
{
"userId": 4,
"id": 67,
"title": "quia voluptatibus voluptatem quos similique maiores repellat",
"completed": False,
},
{
"userId": 4,
"id": 68,
"title": "aut id perspiciatis voluptatem iusto",
"completed": False,
},
{
"userId": 4,
"id": 69,
"title": "doloribus sint dolorum ab adipisci itaque dignissimos aliquam suscipit",
"completed": False,
},
{
"userId": 4,
"id": 70,
"title": "ut sequi accusantium et mollitia delectus sunt",
"completed": False,
},
{"userId": 4, "id": 71, "title": "aut velit saepe ullam", "completed": False},
{
"userId": 4,
"id": 72,
"title": "praesentium facilis facere quis harum voluptatibus voluptatem eum",
"completed": False,
},
{
"userId": 4,
"id": 73,
"title": "sint amet quia totam corporis qui exercitationem commodi",
"completed": True,
},
{
"userId": 4,
"id": 74,
"title": "expedita tempore nobis eveniet laborum maiores",
"completed": False,
},
{
"userId": 4,
"id": 75,
"title": "occaecati adipisci est possimus totam",
"completed": False,
},
{"userId": 4, "id": 76, "title": "sequi dolorem sed", "completed": True},
{
"userId": 4,
"id": 77,
"title": "maiores aut nesciunt delectus exercitationem vel assumenda eligendi at",
"completed": False,
},
{
"userId": 4,
"id": 78,
"title": "reiciendis est magnam amet nemo iste recusandae impedit quaerat",
"completed": False,
},
{"userId": 4, "id": 79, "title": "eum ipsa maxime ut", "completed": True},
{
"userId": 4,
"id": 80,
"title": "tempore molestias dolores rerum sequi voluptates ipsum consequatur",
"completed": True,
},
{"userId": 5, "id": 81, "title": "suscipit qui totam", "completed": True},
{
"userId": 5,
"id": 82,
"title": "voluptates eum voluptas et dicta",
"completed": False,
},
{
"userId": 5,
"id": 83,
"title": "quidem at rerum quis ex aut sit quam",
"completed": True,
},
{"userId": 5, "id": 84, "title": "sunt veritatis ut voluptate", "completed": False},
{"userId": 5, "id": 85, "title": "et quia ad iste a", "completed": True},
{"userId": 5, "id": 86, "title": "incidunt ut saepe autem", "completed": True},
{
"userId": 5,
"id": 87,
"title": "laudantium quae eligendi consequatur quia et vero autem",
"completed": True,
},
{
"userId": 5,
"id": 88,
"title": "vitae aut excepturi laboriosam sint aliquam et et accusantium",
"completed": False,
},
{"userId": 5, "id": 89, "title": "sequi ut omnis et", "completed": True},
{
"userId": 5,
"id": 90,
"title": "molestiae nisi accusantium tenetur dolorem et",
"completed": True,
},
{
"userId": 5,
"id": 91,
"title": "nulla quis consequatur saepe qui id expedita",
"completed": True,
},
{"userId": 5, "id": 92, "title": "in omnis laboriosam", "completed": True},
{
"userId": 5,
"id": 93,
"title": "odio iure consequatur molestiae quibusdam necessitatibus quia sint",
"completed": True,
},
{"userId": 5, "id": 94, "title": "facilis modi saepe mollitia", "completed": False},
{
"userId": 5,
"id": 95,
"title": "vel nihil et molestiae iusto assumenda nemo quo ut",
"completed": True,
},
{
"userId": 5,
"id": 96,
"title": "nobis suscipit ducimus enim asperiores voluptas",
"completed": False,
},
{
"userId": 5,
"id": 97,
"title": "dolorum laboriosam eos qui iure aliquam",
"completed": False,
},
{
"userId": 5,
"id": 98,
"title": "debitis accusantium ut quo facilis nihil quis sapiente necessitatibus",
"completed": True,
},
{"userId": 5, "id": 99, "title": "neque voluptates ratione", "completed": False},
{
"userId": 5,
"id": 100,
"title": "excepturi a et neque qui expedita vel voluptate",
"completed": False,
},
]