summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/__init__.py2
-rw-r--r--app/modules/auth/routes.py2
-rw-r--r--app/modules/common.py2
-rw-r--r--app/modules/forms.py5
-rw-r--r--app/modules/invoices/forms.py2
-rw-r--r--app/templates/modules/add-invoice.html48
-rw-r--r--app/templates/modules/add-item.html2
-rw-r--r--app/templates/modules/invoices.html39
8 files changed, 32 insertions, 70 deletions
diff --git a/app/__init__.py b/app/__init__.py
index 0e553b3..04c4c99 100644
--- a/app/__init__.py
+++ b/app/__init__.py
@@ -38,5 +38,7 @@ def create_app():
app.register_blueprint(invoices)
app.register_blueprint(orders)
+ # with app.app_context():
+ # db.create_all()
return app
diff --git a/app/modules/auth/routes.py b/app/modules/auth/routes.py
index dd9e396..d0aee0c 100644
--- a/app/modules/auth/routes.py
+++ b/app/modules/auth/routes.py
@@ -62,7 +62,7 @@ def register():
db.session.commit()
flash(f"Created user {req['name_first']} {req['name_last']} successfully.")
return redirect(url_for("main.home"))
- return render_template("register.html", form=form)
+ return render_template("modules/register.html", form=form)
@auth.route("/logout")
diff --git a/app/modules/common.py b/app/modules/common.py
index 9e96f41..f9ccba6 100644
--- a/app/modules/common.py
+++ b/app/modules/common.py
@@ -48,7 +48,7 @@ def edit_item(module, table, pk):
form = getattr(forms, f"Add{table}")(**item.__dict__)
if form.validate_on_submit():
table_fields = inspect.signature(model).parameters
- form_values = {key: request.form[key] for key in table_fields}
+ form_values = {key: request.form.get(key) for key in table_fields}
print(f"Ready to update {form_values}")
model.query.filter_by(primary_key=pk).update(form_values)
db.session.commit()
diff --git a/app/modules/forms.py b/app/modules/forms.py
index f98995d..7e4acde 100644
--- a/app/modules/forms.py
+++ b/app/modules/forms.py
@@ -1,5 +1,10 @@
# -*- mode: python; -*-
+"""Form class attribute names must match model class attribute names
+for proper request.form dictionary splatting.
+
+"""
+
from .customers.forms import AddCustomer
from .ferti.forms import AddFertiLog, AddFertiTarget
from .invoices.forms import AddInvoice
diff --git a/app/modules/invoices/forms.py b/app/modules/invoices/forms.py
index 8ef7bd0..74df40e 100644
--- a/app/modules/invoices/forms.py
+++ b/app/modules/invoices/forms.py
@@ -26,7 +26,7 @@ class AddInvoice(FlaskForm):
amount_tax = FloatField("Amount of tax", default=0)
submit = SubmitField("Add new Invoice")
- def __init__(self, **kwargs):
+ def __init__(self):
super().__init__()
self.customer_id.choices = [
(cus.primary_key, cus.name) for cus in Customer.query.all()
diff --git a/app/templates/modules/add-invoice.html b/app/templates/modules/add-invoice.html
deleted file mode 100644
index 92748be..0000000
--- a/app/templates/modules/add-invoice.html
+++ /dev/null
@@ -1,48 +0,0 @@
-{# -*- mode: web; -*- #}
-
-{% extends "base.html" %}
-
-
-{% block title %}Add a new invoice{% endblock %}
-{% block content %}
-
-{% if message %}
-{# the form was submitted and message exists #}
-<p><strong>{{ item }}</strong></p>
-{# links #}
-<p><a href="{{ url_for('add_item', item=item) }}" class="button">Submit another {{ item }}</a></p>
-<p><a href="/fapg/home">Return to the index</a></p>
-
-{% else %}
-{# the form is displayed when template opens via GET not POST #}
-
-{# show flash - based on WTForms validators see
-https://pythonprogramming.net/flash-flask-tutorial/
-get_flashed_messages() exists here because of flash() in the route
-function #}
-
-{% with errors = get_flashed_messages() %} {% if errors %}
-{% for err in errors %}
-<div class="alert alert-danger alert-dismissible" role="alert">
- <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">×</span></button>
- {{ err }}
-</div>
-{% endfor %}
-{% endif %}
-{% endwith %}
-{# end of flash #}
-
-
-{# the form #}
-<form action="{{ url_for('add_item', item=item) }}" method="POST">
- <fieldset>
- <legend>Add a new {{ item }} to our database.</legend>
- {% for field in form %}
- {{ field.label() }}
- {{ field() }}<br/>
- {% endfor %}
- </fieldset>
-</form>
-
-{% endif %}
-{% endblock %}
diff --git a/app/templates/modules/add-item.html b/app/templates/modules/add-item.html
index 356ce9f..4eaee3d 100644
--- a/app/templates/modules/add-item.html
+++ b/app/templates/modules/add-item.html
@@ -10,7 +10,7 @@
<fieldset>
<legend>Add a new item to our {{ table }} table.</legend>
{% for field in form %}
- {{ field.label() }}
+ {{ field.label() }}<br/>
{{ field() }}<br/>
{% endfor %}
</fieldset>
diff --git a/app/templates/modules/invoices.html b/app/templates/modules/invoices.html
index 55a4b87..293a45b 100644
--- a/app/templates/modules/invoices.html
+++ b/app/templates/modules/invoices.html
@@ -13,25 +13,28 @@ Invoices
{% block content %}
<i>Track your invoices and create new ones here.</i><br/>
+{# Pagination Links #}
+{# gotten from https://betterprogramming.pub/simple-flask-pagination-example-4190b12c2e2e #}
<center>
-{% for page_num in invoices.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
-{% if page_num %}
-<!-- Check for the active page and set the link to "Active"-->
-{% if invoices.page == page_num %}
-<a href="{{ url_for('invoices.view', page=page_num) }}"
- class="button">
- {{ page_num }}
-</a>
-{% else %}
-<a href="{{ url_for('invoices.view', page=page_num) }}"
- class="button button-light">
- {{ page_num }}
-</a>
-{% endif %}
-{% else %}
-...
-{% endif %}
-{% endfor %}
+ {# Loop through the number of pages to display a link for each #}
+ {% for page_num in invoices.iter_pages(left_edge=1, right_edge=1, left_current=1, right_current=2) %}
+ {% if page_num %}
+ {# Check for the active page and set the link to "Active" #}
+ {% if invoices.page == page_num %}
+ <a href="{{ url_for('invoices.view', page=page_num) }}"
+ class="button">
+ {{ page_num }}
+ </a>
+ {% else %}
+ <a href="{{ url_for('invoices.view', page=page_num) }}"
+ class="button button-light">
+ {{ page_num }}
+ </a>
+ {% endif %}
+ {% else %}
+ ...
+ {% endif %}
+ {% endfor %}
</center>
<table>
<thead>
Copyright 2019--2024 Marius PETER