diff --git a/__pycache__/app.cpython-310.pyc b/__pycache__/app.cpython-310.pyc index 880b872..6833017 100644 Binary files a/__pycache__/app.cpython-310.pyc and b/__pycache__/app.cpython-310.pyc differ diff --git a/app.py b/app.py index e328949..7f2438c 100644 --- a/app.py +++ b/app.py @@ -3,6 +3,7 @@ from itertools import groupby # to handle complex iterations import os +from pydoc_data.topics import topics import sqlite3 from webbrowser import get @@ -37,48 +38,44 @@ class PrefixMiddleware(object): app = Flask(__name__) -app.config['SECRET KEY']='this should be a secret random string' +app.config['SECRET KEY'] = 'this should be a secret random string' # register the middleware to prefix all the requests with our base_url -app.wsgi_app=PrefixMiddleware(app.wsgi_app, prefix='/soupboat/library') +app.wsgi_app = PrefixMiddleware(app.wsgi_app, prefix='/soupboat/library') @ app.route("/") def home(): - conn=get_db_connection() - todos=conn.execute('SELECT c.id, c.content, cat.category_name \ + conn = get_db_connection() + todos = conn.execute('SELECT c.id, c.content, cat.category_name \ FROM cards c JOIN categories cat \ ON c.category_id = cat.id ORDER BY cat.category_name').fetchall() - categories={} - topics={} #hint for later to fetch all the topics ehhe + categories = {} + topics = {} # hint for later to fetch all the topics ehhe # for each category and group of cards for each cat in groupby() grouper object for k, g in groupby(todos, key=lambda t: t['category_name']): - cards=[] + cards = [] for card in g: topics = conn.execute('SELECT t.id, t.content FROM topics t \ JOIN topic_cards t_c \ ON t.id = t_c.topic_id \ WHERE t_c.card_id = ?', - (card['id'],)).fetchall() + (card['id'],)).fetchall() - card=dict(card) + card = dict(card) card['topics'] = topics print('card is:', card) cards.append(card) - categories[k]=list(cards) - - - - + 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: - topicss=[t['content'] for t in card['topics']] + topicss = [t['content'] for t in card['topics']] print(' ', card['content']) print(' ', list(topicss)) @@ -88,60 +85,78 @@ def home(): @ app.route("/add/", methods=['GET', 'POST']) def create(): - conn=get_db_connection() + conn = get_db_connection() if request.method == 'POST': - content=request.form['content'] - category_name=request.form['cat'] + content = request.form['content'] + category_name = request.form['cat'] + # can this be a category? o be general? + topic_tag = request.form['topic_tag'] - #create a new category: + # create a new category and topic: new_category = request.form['new_category'] + new_topic = request.form['new_topic'] # if a new category_category_name is created add it to the table of categories if category_name == 'New category' and new_category: conn.execute('INSERT INTO categories (category_name) VALUES (?)', - (new_category,)) + (new_category,)) conn.commit() # update category_name to refer to the newly added category category_name = new_category + if topic_tag == 'New topic' and new_topic: + conn.execute('INSERT INTO topics (content) VALUES (?)', + (new_topic,)) + conn.commit() + topic_tag = new_topic + + topic_id = conn.execute('SELECT id FROM topics WHERE content = (?);', + (topic_tag,)).fetchone()['id'] + conn.execute('INSERT INTO topic_cards (topic_id, card_id) VALUES (?,?)', + (topic_id, cat_id)) if not content: flash('plz write a content!') return redirect(url_for('home')) - cat_id=conn.execute('SELECT id FROM categories WHERE category_name = (?);', + cat_id = conn.execute('SELECT id FROM categories WHERE category_name = (?);', (category_name,)).fetchone()['id'] + conn.execute('INSERT INTO cards (content, category_id) VALUES (?,?)', (content, cat_id)) + conn.commit() conn.close() return redirect(url_for('home')) - categories=conn.execute('SELECT category_name FROM categories;').fetchall() + categories = conn.execute( + 'SELECT category_name FROM categories;').fetchall() + topics = conn.execute('SELECT content FROM topics;').fetchall() conn.close() - return render_template('create.html', categories=categories) + return render_template('create.html', categories=categories, topics=topics) @ app.route('//edit/', methods=('GET', 'POST')) def edit(id): - conn=get_db_connection() + conn = get_db_connection() - todo=conn.execute('SELECT c.id, c.category_id, c.content, cat.category_name \ + todo = conn.execute('SELECT c.id, c.category_id, c.content, cat.category_name \ FROM cards c JOIN categories cat \ ON c.category_id = cat.id WHERE c.id = ?', (id,)).fetchone() - categories=conn.execute('SELECT category_name FROM categories;').fetchall() + categories = conn.execute( + 'SELECT category_name FROM categories;').fetchall() if request.method == 'POST': - content=request.form['content'] - category_name=request.form['cat'] + content = request.form['content'] + category_name = 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 category_name = (?);', + cat_id = conn.execute('SELECT id FROM categories WHERE category_name = (?);', (category_name,)).fetchone()['id'] conn.execute('UPDATE cards SET content = ?, category_id = ? \ @@ -156,7 +171,7 @@ def edit(id): @ app.route('//delete/', methods=('POST',)) def delete(id): - conn=get_db_connection() + conn = get_db_connection() conn.execute('DELETE FROM cards WHERE id = ?', (id,)) conn.commit() conn.close() diff --git a/library.db b/library.db index 9aeb6f9..43fb888 100644 Binary files a/library.db and b/library.db differ diff --git a/templates/create.html b/templates/create.html index 7b56ea4..d2192a0 100644 --- a/templates/create.html +++ b/templates/create.html @@ -4,6 +4,8 @@

{% block category_name %} Create a New Item {% endblock %}

+ +
+ +
+ + + {% for topic in topics %} + {% if topic['content'] == request.form['topic_tag'] %} + + {% else %} + + {% endif %} + {% endfor %} + +
+
+ + +
+ + +
diff --git a/templates/home.html b/templates/home.html index 2f417c5..398263c 100644 --- a/templates/home.html +++ b/templates/home.html @@ -10,17 +10,17 @@ {% for card in cards %}
-
{{ category }}
+
{{ category }}
- + {% if card['topics'] %} {% for topic in card['topics'] %} -
+
{{ topic['content'] }}
{% endfor %} {% endif %} - +