db now in models; modules.

Commit
eba4c1a3113d24319bccc5c52d4d93838334bd31
Author
Marius Peter <marius.peter@tutanota.com>
Author date
Committer
Marius Peter <marius.peter@tutanota.com>
Committer date
Changed files
app/__init__.py
index 04c4c994..54c3f690 100644..100644
@@ -4,8 +4,7 @@
4 4 from flask_sqlalchemy import SQLAlchemy
5 5 from flask_login import LoginManager
6 6
7 Removed:
8 Removed: db = SQLAlchemy()
7 Added: from .models import db
9 8
10 9
11 10 def create_app():
app/models.py
index 5155ee5a..009e507b 100644..100644
@@ -7,8 +7,8 @@
7 7
8 8 from datetime import datetime
9 9 from flask_login import UserMixin
10 Removed: from . import db
11 10
11 Added: db = SQLAlchemy()
12 12 # Base = declarative_base()
13 13
14 14
@@ -196,7 +196,7 @@
196 196 self.amount_tax = amount_tax
197 197
198 198 def __repr__(self):
199 Removed: return f"<Invoice for {self.customer.name} at {self.updated}>"
199 Added: return f"<Invoice for {self.customer.name} billed {self.date_billed}>"
200 200
201 201
202 202 class Order(db.Model): # TODO
@@ -212,36 +212,30 @@
212 212 date_time_updated = db.Column(
213 213 "DateTimeUpdated", db.String, server_onupdate=date_time_now()
214 214 )
215 Removed: product_id = db.Column(
216 Removed: "ProductId",
217 Removed: db.Integer,
218 Removed: db.ForeignKey("Product.ProductId"),
219 Removed: nullable=False,
220 Removed: )
221 215 customer_id = db.Column(
222 216 "CustomerId",
223 217 db.Integer,
224 218 db.ForeignKey("Customer.CustomerId"),
225 219 nullable=False,
226 220 )
221 Added: product_id = db.Column(
222 Added: "ProductId",
223 Added: db.Integer,
224 Added: db.ForeignKey("Product.ProductId"),
225 Added: nullable=False,
226 Added: )
227 227 invoice_id = db.Column(
228 228 "InvoiceId",
229 229 db.Integer,
230 230 db.ForeignKey("Invoice.InvoiceId"),
231 231 nullable=True,
232 232 )
233 Removed: customer = db.relationship(
234 Removed: "Customer", back_populates="orders"
235 Removed: )
236 Removed: product = db.relationship(
237 Removed: "Product", back_populates="orders"
238 Removed: )
239 Removed: invoice = db.relationship(
240 Removed: "Invoice", back_populates="orders"
241 Removed: )
233 Added: customer = db.relationship("Customer", back_populates="orders")
234 Added: product = db.relationship("Product", back_populates="orders")
235 Added: invoice = db.relationship("Invoice", back_populates="orders")
242 236
243 237 def __repr__(self):
244 Removed: return f"<Order {self.name} at {self.updated}>"
238 Added: return f"<Order {self.name} at {self.date_time_created}>"
245 239
246 240
247 241 class Product(db.Model):
@@ -283,7 +277,7 @@
283 277
284 278
285 279 class FertiLog(db.Model):
286 Removed: __tablename__ = "Fertilog"
280 Added: __tablename__ = "FertiLog"
287 281 primary_key = db.Column("FertiLogId", db.Integer, primary_key=True)
288 282 nno3 = db.Column("NNO3", db.Float, default=0)
289 283 p = db.Column("P", db.Float, default=0)
@@ -307,7 +301,9 @@
307 301 date_time_updated = db.Column(
308 302 "DateTimeUpdated", db.String, server_onupdate=date_time_now()
309 303 )
304 Added: targets = db.relationship("FertiTarget", back_populates="ferti_log")
310 305
306 Added:
311 307 def __init__(self, nno3, p, k, ca, mg, s, na, cl, fe, zn, b, mn, cu, mo, si, nnh4):
312 308 self.nno3 = nno3
313 309 self.p = p
@@ -325,18 +321,21 @@
325 321 self.mo = mo
326 322 self.si = si
327 323 self.nnh4 = nnh4
328 Removed: self.date_time_created = date_time_now
329 324
330 325 def __repr__(self):
331 326 return f"<Log ID {self.primary_key}>"
332 327
333 328
334 329 class FertiTarget(FertiLog):
335 Removed: __tablename__ = "Fertitarget"
330 Added: __tablename__ = "FertiTarget"
336 331 primary_key = db.Column("FertiTargetId", db.Integer, primary_key=True)
337 Removed: targeted_log = db.Column(
338 Removed: "FertiLogId", db.Integer, db.ForeignKey("Fertilog.FertiLogId")
332 Added: ferti_log_id = db.Column(
333 Added: "FertiLogId", db.Integer, db.ForeignKey("FertiLog.FertiLogId")
339 334 )
335 Added: ferti_log = db.relationship("FertiLog", back_populates="targets")
336 Added:
337 Added: # def __init__(self):
338 Added: # super(*args).__init__()
340 339
341 340 def __repr__(self):
342 341 return f"<Target ID {self.primary_key}>"
app/modules/common.py
index f9ccba61..ff0aec7a 100644..100644
@@ -25,8 +25,8 @@
25 25 if form.validate_on_submit():
26 26 model = getattr(models, table)
27 27 table_fields = inspect.signature(model).parameters
28 Removed: form_values = {key: request.form[key] for key in table_fields}
29 Removed: print(f"Ready to insert {form_values}")
28 Added: form_values = {key: request.form.get(key) for key in table_fields}
29 Added: print(f"Ready to insert in {table} from {module} {form_values}")
30 30 record = model(**form_values)
31 31 db.session.add(record)
32 32 db.session.commit()
app/modules/ferti/forms.py
index d926931d..1e25ec33 100644..100644
@@ -12,13 +12,10 @@
12 12 )
13 13 from wtforms.validators import InputRequired, Length, NumberRange
14 14
15 Added: from ...models import FertiLog
15 16
17 Added:
16 18 class AddFertiLog(FlaskForm):
17 Removed: target = SelectField(
18 Removed: "Type",
19 Removed: choices=[("False", "Log"), ("True", "Target")],
20 Removed: validators=[InputRequired()],
21 Removed: )
22 19 nno3 = FloatField("NNO3", default=0)
23 20 p = FloatField("P", default=0)
24 21 k = FloatField("K", default=0)
@@ -39,9 +36,15 @@
39 36
40 37
41 38 class AddFertiTarget(AddFertiLog):
42 Removed: targeted_log = SelectField(
43 Removed: "Log to target",
44 Removed: choices=[("value1", "Last"), ("value2", "Named")],
39 Added: target_id = SelectField(
40 Added: "Target log",
41 Added: choices=[],
45 42 validators=[InputRequired()],
46 43 )
47 Removed: submit = SubmitField("Add/Update Log")
44 Added: submit = SubmitField("Add target")
45 Added:
46 Added: def __init__(self, **kwargs):
47 Added: super().__init__()
48 Added: self.target_id.choices = [
49 Added: (target.primary_key, target.date_time_created) for target in FertiLog.query.all()
50 Added: ]
app/modules/ferti/routes.py
index b3bb03f2..c0f3ab59 100644..100644
@@ -21,7 +21,7 @@
21 21
22 22
23 23
24 Removed: from ... import db
24 Added: # from ... import db
25 25 from ...models import *
26 26 from .forms import *
27 27
@@ -34,11 +34,10 @@
34 34 @login_required
35 35 def view():
36 36 modules = Module.query.all()
37 Removed: logs = Fertilog.query.order_by(Fertilog.primary_key.desc()).all()
38 Removed: targets = Fertitarget.query.all()
37 Added: logs = FertiLog.query.order_by(FertiLog.primary_key.desc()).all()
38 Added: targets = FertiTarget.query.all()
39 39 module = "ferti"
40 40 flash(f"Latest target is {targets}.", "info")
41 Removed: flash(f"Still fighting against styling in {module}.", "error")
42 41 return render_template(
43 42 f"modules/{module}.html",
44 43 modules=modules,
app/modules/forms.py
index 7e4acde6..001557ad 100644..100644
@@ -9,3 +9,22 @@
9 9 from .ferti.forms import AddFertiLog, AddFertiTarget
10 10 from .invoices.forms import AddInvoice
11 11 from .products.forms import AddProduct
12 Added:
13 Added:
14 Added: # class AddUser(FlaskForm):
15 Added: # customer_id = SelectField("Customer", choices=[])
16 Added: # invoice_id_alt = StringField("Alternative invoice ID")
17 Added: # customer_reference = StringField("Customer reference")
18 Added: # date_billed = DateField('Date billed', format='%Y-%m-%d')
19 Added: # date_due = DateField('Date due', format='%Y-%m-%d')
20 Added: # amount_net = FloatField("Amount without tax", default=0)
21 Added: # amount_gross = FloatField("Amount with tax", default=0)
22 Added: # amount_tax = FloatField("Amount of tax", default=0)
23 Added: # submit = SubmitField("Add Invoice")
24 Added:
25 Added: # def __init__(self, **kwargs):
26 Added: # super().__init__()
27 Added: # self.customer_id.choices = [
28 Added: # (cus.primary_key, cus.name) for cus in Customer.query.all()
29 Added: # ]
30 Added:
app/modules/invoices/forms.py
index 74df40e2..7e2bc502 100644..100644
@@ -8,7 +8,7 @@
8 8 IntegerField,
9 9 FloatField,
10 10 BooleanField,
11 Removed: DateTimeField,
11 Added: DateField,
12 12 )
13 13 from wtforms.validators import InputRequired, Length, NumberRange
14 14
@@ -19,14 +19,14 @@
19 19 customer_id = SelectField("Customer", choices=[])
20 20 invoice_id_alt = StringField("Alternative invoice ID")
21 21 customer_reference = StringField("Customer reference")
22 Removed: date_billed = StringField("Date billed")
23 Removed: date_due = StringField("Date due")
22 Added: date_billed = DateField('Date billed', format='%Y-%m-%d')
23 Added: date_due = DateField('Date due', format='%Y-%m-%d')
24 24 amount_net = FloatField("Amount without tax", default=0)
25 25 amount_gross = FloatField("Amount with tax", default=0)
26 26 amount_tax = FloatField("Amount of tax", default=0)
27 Removed: submit = SubmitField("Add new Invoice")
27 Added: submit = SubmitField("Add Invoice")
28 28
29 Removed: def __init__(self):
29 Added: def __init__(self, **kwargs):
30 30 super().__init__()
31 31 self.customer_id.choices = [
32 32 (cus.primary_key, cus.name) for cus in Customer.query.all()
app/modules/invoices/routes.py
index b8a0a684..b6a4fd96 100644..100644
@@ -15,7 +15,7 @@
15 15 from flask_login import login_required, current_user
16 16
17 17
18 Removed: from ... import db
18 Added: # from ... import db
19 19 from ...models import *
20 20 from .forms import *
21 21
@@ -31,8 +31,6 @@
31 31 page = request.args.get('page', 1, type=int)
32 32 invoices = Invoice.query.order_by(Invoice.primary_key.desc()).paginate(page=page, per_page=5)
33 33 module = "invoices"
34 Removed: flash(f"Successfully accessed module {module}.", "info")
35 Removed: flash(f"Still fighting against styling in {module}.", "error")
36 34 return render_template(
37 35 f"modules/{module}.html",
38 36 modules=modules,
app/modules/orders/routes.py
index 0d2e66a4..cf4e70ab 100644..100644
@@ -15,13 +15,9 @@
15 15 from flask_login import login_required, current_user
16 16
17 17
18 Removed: # from datetime import datetime
19 Removed: import inspect
20 18
21 19
22 Removed:
23 Removed: from ... import db
24 Removed: from ...models import Module, Order
20 Added: from ...models import db, Module, Order, Invoice
25 21 from .forms import *
26 22
27 23
@@ -34,6 +30,7 @@
34 30 modules = Module.query.all()
35 31 page = request.args.get('page', 1, type=int)
36 32 orders = Order.query.order_by(Order.primary_key.desc()).paginate(page=page, per_page=5)
33 Added: invoices = Invoice.query.order_by(Invoice.primary_key.desc()).paginate(page=page, per_page=5)
37 34 module = "orders"
38 35 flash(f"Successfully accessed module {module}.", "info")
39 36 flash(f"Still fighting against styling in {module}.", "error")