From c0237ef77fc9e4b53a88cc458e5d370c05d3fac5 Mon Sep 17 00:00:00 2001 From: grgr Date: Sat, 1 Oct 2022 20:32:49 +0200 Subject: [PATCH] edit, delete functions --- __pycache__/app.cpython-310.pyc | Bin 2231 -> 3832 bytes app.py | 71 +++++++++++++++++++++++++------- library.db | Bin 16384 -> 16384 bytes templates/create.html | 4 +- templates/edit.html | 41 ++++++++++++++++++ templates/home.html | 22 +++++++++- 6 files changed, 121 insertions(+), 17 deletions(-) create mode 100644 templates/edit.html diff --git a/__pycache__/app.cpython-310.pyc b/__pycache__/app.cpython-310.pyc index 4c2985cd98342ed694e74a4056cc828956803c1a..72177379eeb83b64e29da5f04a0ac1ac70b12f71 100644 GIT binary patch literal 3832 zcmbW4&rcl5700`(e@xFXz+mGaY`or16eXU-hE3v4Ha7n4@vf8gfBT% zr5|>}ezjBW*E+TSNN1#9@6^%mi{O>h8U4%=6%oF2L@3Ah-OjkI$i_bFOvrILv2jjR zMeQ}06Y)7Yad2LY95PWCqpuwFm_++|F($@EV~vZ6*Ib+v=WWXc+cGIG*tZwOCHwZG zeS29<*|#5v@7cGP1YdNTSN?^SIZb9NYbx8`T-j|ycGskC2F8DqcJmizT*-luD%P^U znRc}_m2H*AtC=ztCAYR^u1%<(<56PUnFzf);0|Y1%o}Df~F$ZfmxpASh2{!FqP1kt2Ojp%8bXVu8prw}u zEy09woD32j$CpvdiQ$0N*l_BsF4M>T-cgChSe3qnP{3JJ&Vf@n8*rM6%DRS%8*Cp+ z{)tc7KC`w5S~*DvE|$U%!B_#)2ycz;b7KF%J9O3<78bNkb^gK9=ke3_lQ}c8_-Ntj z{8HS0@T_Irn;+k7@?rf^HqdgQZ!GO@%3)2*mwE;SCWGM*m)4U!0)~;uWF8GN9j(YT z8>~e-i}bpT$j43J)Nq<3xG>!xWOU%{xnj-tUofOYGv&fjC>vOnTVA;mb*3jP^%`!bGAEspz{*iK2V z$MM#7H!WM#1$0$}*eM09D&%2Bq+G&nX$`?^-Lvn86Enxe&m0kt&k`eV*h~+PlPiQo zs9P`p9fEfDojvlK4b207=r?1dJ#?6(Ya#?o)z_4_YVF})7h7Mn9xX+^=|o&di9jY=Aa?b%PIM}x z@3@{U%soR-CGw~j{bufIn}*4?OeFvc;&%+4L*MD6-n(%kqC57J5at#hw-%y@zqfU( zLXWcF@kKI4`y%d~JWyaunJROi@oj(WZe%s4PdUDf>e;m0UlHBAzoOAJP3R0Su4jEY zJ)35LEWZn(>_R#Gh1?y6w7@9IZw)axqhZyKTi5;cD`slnuDm&7vmV0XrR;4Z z*N3Z8_trtYqAwaxB$VVgRWi^fK$Kx?FkYHq5Aczy`?>LZX@;=z(YqNc3XqPkGm+)0 zNfWRahOKpcYxs^w598wVXBX>{em5{6{}GCSBOi1AwdY-SJr<%y0XOD0Acd^K_&1?j zXX+Dl9r`m}A!dyGS!>C7^K*+!utlXW^?D}qw<3Tvq}xWo0faIFG~3{Uz2NE|Bv&A} z?J+C4ka)rJtJ)JD5vzS22#~#xYz9UvA}IJOJG6WgzkAr$@HRvqbXSoH!T1r$c-Ab@ zXJ@D$vV##so_ErtE^37*MlAF7wj$rFA5(D?#c*;n9Y#9}mXEs85&z$}c6f9BC^|sp z5$Y#&|L*hFLMtjGm9-5j-usS0Ehl%6pjjuU-VrG-&kC`wK0 zC)A?^FdIk{^s;_G(duW^_ERb>WWI&W8pTwBQfw7LZ-|Mo)Saa(D0TWR=E&(I0k0u> z*T7f^t^)3XsDOFj1e{9Z4Ycu)gRzI`J{+H!1^>4aad!si9zE0K>X)PsdFQQwr!~Ht zWm&-}%NCBMg)%L;!W$0nyQsO^+wg@82InCK!UId5m3&CZy7{yQZI;1MR|WE?Wsv3w z3;%dlQAO{-&J2c%0N-;hg{-6xEnp2CpPED0#Rz3;QGe|s%Z|2(e>Vyqw3q9sJJ@|YPSmey#4QxV_VfA250+X-=r6Xg zvy?ju&1`p-;|QP^|8;*TwJCKOR*4PEJx*{QKd?tLA)CI0F$ zhT(v5g1(Tc)N%#~jCZ)Fz2f8y`7tUsx4y+avLT~WhJAv1aOmOuz)O~!ZhLt3G4^-( z;}kZh?Q7FqGbodZHRiWQI>{l3O!94MsWS!%$_2badtO5k@G6tUKv{!UWmM27YDiaZP~A(%~Zi0g5^tM!70tq2H*6 TjfNY#HP-kLd*&4Gt7Ggx6AEzL delta 1000 zcmZWnL2nc{6!!DjGv3|V$!r3YKmtfeZH5LZQlJME5EVpRs;CuQGNM{-#!lF`l&w*(qJf3F>Is_Ad*RbK+@(NB7GSg5E-b}*h@pjReKC+ zq(T*KPe~yghg3z~DHR>XvN-|SlHmbCMhEk;Y|BVaZBZE?QrVHyb!J-9yCj+U*Xc;0 z3bwS!_jfn`T1&V+2UqMm7--qI@N1`yjKW7~f&d1(Z7m!YTY~jRIAMOh@)Dn}v@3z%Ibww!s&-441qNq>p@x{N=sG1TrY86o<~q#@dtd-PPY# zZ{4#uTc>Q^x@P}rowa}Xw=O!VXfc?tN`A{ulL4gjRCq8wLOg}U4v=>4IF+RFLq@Tm4Ub63k%XYopURuBcL&ju8 zN^%4eCU8V2WCXbKCIpCKl9nL7+8eg^#I80L@BfHJ39oOc-3B^AsCYKW3w3-AT3@5q z|E*3x)2e6G9V{sXf=?rq8d7}~7s-r0ADxU{yyBaKUhzrU3+z@f> L39kw9nF#&^EveE= diff --git a/app.py b/app.py index dcd5151..544031a 100644 --- a/app.py +++ b/app.py @@ -5,6 +5,7 @@ from itertools import groupby # to handle complex iterations import os import sqlite3 +from webbrowser import get from flask import Flask, render_template, url_for, request, redirect, flash @@ -44,27 +45,30 @@ app.wsgi_app = PrefixMiddleware(app.wsgi_app, prefix='/soupboat/library') @app.route("/") def home(): conn = get_db_connection() - todos = conn.execute('SELECT c.content, cat.title FROM cards c JOIN categories cat \ + todos = conn.execute('SELECT c.id, c.content, cat.title \ + FROM cards c JOIN categories cat \ ON c.category_id = cat.id ORDER BY cat.title').fetchall() categories = {} # for each category and group of cards for each cat in groupby() grouper object for k, g in groupby(todos, key=lambda t: t['title']): - categories[k] = list(g) - print(categories[k]) + cards = [] + + for card in g: + card = dict(card) + print('card is:', card) + cards.append(card) + # print(categories[k]) + + categories[k] = list(cards) + for cat, cards in categories.items(): # ♥ .items is a build in attribute of the dictionary(?) print(cat) for card in cards: print(' ', card['content']) - # if request.method == 'POST': - # title = request.form.get('title') - # author = request.form.get('author') - # description = request.form.get('description') - # add_book(author, title, description) - # return redirect(url_for('home')) - + conn.close() return render_template('home.html', categories=categories) @@ -80,20 +84,59 @@ def create(): flash('plz write a content!') return redirect(url_for('home')) - cat_id = conn.execute('SELECT id FROM categories WHERE title = (?);', - (cat_title,)).fetchone()['id'] + cat_id = conn.execute('SELECT id FROM categories WHERE title = (?);', + (cat_title,)).fetchone()['id'] conn.execute('INSERT INTO cards (content, category_id) VALUES (?,?)', - (content, cat_title)) + (content, cat_id)) conn.commit() conn.close() return redirect(url_for('home')) categories = conn.execute('SELECT title FROM categories;').fetchall() - + conn.close() return render_template('create.html', categories=categories) +@app.route('//edit/', methods=('GET', 'POST')) +def edit(id): + conn = get_db_connection() + + todo = conn.execute('SELECT c.id, c.category_id, c.content, cat.title \ + FROM cards c JOIN categories cat \ + ON c.category_id = cat.id WHERE c.id = ?', (id,)).fetchone() + + categories = conn.execute('SELECT title FROM categories;').fetchall() + + if request.method == 'POST': + content = request.form['content'] + cat_title = request.form['cat'] + + if not content: + flash('plz insert any content!') + return redirect(url_for('home')) + + cat_id = conn.execute('SELECT id FROM categories WHERE title = (?);', + (cat_title,)).fetchone()['id'] + + conn.execute('UPDATE cards SET content = ?, category_id = ? \ + WHERE id = ?', + (content, cat_id, id)) + conn.commit() + conn.close() + return redirect(url_for('home')) + + return render_template('edit.html', todo=todo, categories=categories) + + +@app.route('//delete/', methods=('POST',)) +def delete(id): + conn = get_db_connection() + conn.execute('DELETE FROM cards WHERE id = ?', (id,)) + conn.commit() + conn.close() + return redirect(url_for('home')) + # app.run(port=3148) diff --git a/library.db b/library.db index 9f911a2acb8759b1e38e73b5161c1d5dd9ec9e42..0c5c3f6e24ee3792160e0d49619ae51fe7bd9327 100644 GIT binary patch delta 78 zcmZo@U~Fh$oFL7}JyFJ)k$Ypp8h$4JzRiLHmHcY_w;9wJjg^^=42+C)4J>tyEES9l it&9w;j1B#BN{UhyT$A#1GB>Z4cM@P^-uyvdKmY&~?G%;( delta 36 scmZo@U~Fh$oFL7}K2gS*k$q#r8vf0K3Jdu+ua$QaU}W0-L0>=s0Lj4$)Bpeg diff --git a/templates/create.html b/templates/create.html index b20fe68..0b0c822 100644 --- a/templates/create.html +++ b/templates/create.html @@ -12,8 +12,8 @@
- - {% for cat in categories %} {% if cat['title'] == request.form['cat'] %}
    + {% for card in cards %} -
  • {{ card['content'] }}
  • +
  • {{ card['content'] }}
  • + +
    + +
    + Edit +
    + + +
    +
    + +
    +
    +
    + +
    {% endfor %}