From e084f90c19e779592f6e3f14eb8f70a7287f0dad Mon Sep 17 00:00:00 2001 From: Marius Peter Date: Sun, 15 May 2022 13:17:35 +0200 Subject: Modularization. --- app/models.py | 260 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 260 insertions(+) create mode 100644 app/models.py (limited to 'app/models.py') diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..507d135 --- /dev/null +++ b/app/models.py @@ -0,0 +1,260 @@ +# -*- mode: python; -*- + + +from flask_sqlalchemy import SQLAlchemy + +from datetime import datetime +from flask_login import UserMixin +from . import db + + +def date_time_now(): + return datetime.now().strftime("%Y-%m-%d %H:%M:%S") + + +class User(UserMixin, db.Model): + __tablename__ = "User" + + def get_id(self): + return self.primary_key + + primary_key = db.Column("UserId", db.Integer, primary_key=True) + username = db.Column("Username", db.String(20), nullable=False) + hashed_password = db.Column("HashedPassword", db.String(100), nullable=False) + name_first = db.Column("NameFirst", db.String(20), nullable=False) + name_last = db.Column("NameLast", db.String(20), nullable=False) + email = db.Column("Email", db.String(20), nullable=False) + phone_mobile = db.Column("PhoneMobile", db.Integer) + phone_alternative = db.Column("PhoneAlternative", db.Integer) + date_time_created = db.Column( + "DateTimeCreated", db.String, server_default=date_time_now() + ) + date_time_updated = db.Column( + "DateTimeUpdated", db.String, server_onupdate=date_time_now() + ) + + def __repr__(self): + return f"" + + +class Module(db.Model): + __tablename__ = "Module" + name = db.Column( + "Name", db.String(20), unique=True, nullable=False, primary_key=True + ) + description = db.Column("Description", db.String(50), nullable=False) + + def __repr__(self): + return f"" + + +class Customer(db.Model): + __tablename__ = "Customer" + primary_key = db.Column("CustomerId", db.Integer, nullable=False, primary_key=True) + name = db.Column("Name", db.String(20), nullable=False) + name_alternative = db.Column("NameAlternative", db.String(20)) + code_customer = db.Column("CodeCustomer", db.String(20), unique=True) + code_accounting = db.Column("CodeAccounting", db.String(20), unique=True) + address = db.Column("Address", db.String(20)) + postal_code = db.Column("PostalCode", db.Integer) + city = db.Column("City", db.String(20)) + country = db.Column("Country", db.String(20)) + phone = db.Column("Phone", db.String(20)) + website = db.Column("Website", db.String(20)) + email = db.Column("Email", db.String(20)) + professional_id_1 = db.Column("ProfessionalId1", db.String(20), unique=True) + professional_id_2 = db.Column("ProfessionalId2", db.String(20), unique=True) + tax_id = db.Column("TaxId", db.String(20), unique=True) + payment_terms = db.Column("PaymentTerms", db.String(20), unique=True) + date_time_created = db.Column("DateTimeCreated", db.String(20), nullable=False) + date_time_updated = db.Column("DateTimeUpdated", db.String(20), nullable=False) + invoices = db.relationship("Invoice", back_populates="customer") + + def __init__( + self, + name, + name_alternative, + code_customer, + code_accounting, + address, + postal_code, + city, + country, + phone, + website, + email, + professional_id_1, + professional_id_2, + tax_id, + payment_terms, + ): + self.name = name + self.name_alternative = name_alternative + self.code_customer = code_customer + self.code_accounting = code_accounting + self.address = address + self.postal_code = postal_code + self.city = city + self.country = country + self.phone = phone + self.website = website + self.email = email + self.professional_id_1 = professional_id_1 + self.professional_id_2 = professional_id_2 + self.tax_id = tax_id + self.payment_terms = payment_terms + + def __repr__(self): + return f"" + + +class Invoice(db.Model): + __tablename__ = "Invoice" + primary_key = db.Column("InvoiceId", db.Integer, primary_key=True) + invoice_id_alt = db.Column("InvoiceIdAlt", db.String) + customer_reference = db.Column("CustomerReference", db.String) + date_billed = db.Column("DateBilled", db.String) + date_due = db.Column("DateDue", db.String) + amount_net = db.Column("AmountNet", db.String) + amount_gross = db.Column("AmountGross", db.String) + amount_tax = db.Column("AmountTax", db.String) + date_time_created = db.Column( + "DateTimeCreated", db.String, default=date_time_now() + ) + customer_id = db.Column( + "CustomerId", db.Integer, db.ForeignKey("Customer.CustomerId") + ) + customer = db.relationship("Customer", back_populates="invoices") + + def __init__( + self, + invoice_id_alt, + customer_id, + customer_reference, + date_billed, + date_due, + amount_net, + amount_gross, + amount_tax, + ): + self.invoice_id_alt = invoice_id_alt + self.customer_id = customer_id + self.customer_reference = customer_reference + self.date_billed = date_billed + self.date_due = date_due + self.amount_net = amount_net + self.amount_gross = amount_gross + self.amount_tax = amount_tax + + def __repr__(self): + return f"" + + +class Product(db.Model): + __tablename__ = "Product" + primary_key = db.Column("ProductId", db.Integer, primary_key=True) + name = db.Column("Name", db.String(20), nullable=False, unique=True) + code_accounting = db.Column("CodeAccounting", db.String(20)) + unit_weight = db.Column("UnitWeight", db.Float) + price_net = db.Column("PriceNet", db.Float) + price_gross = db.Column("PriceGross", db.Float) + tax_rate = db.Column("TaxRate", db.Float) + date_time_created = db.Column( + "DateTimeCreated", db.String, server_default=date_time_now() + ) + date_time_updated = db.Column( + "DateTimeUpdated", db.String, server_onupdate=date_time_now() + ) + + def __init__( + self, + name, + code_accounting, + unit_weight, + price_net, + price_gross, + tax_rate, + ): + self.name = name + self.code_accounting = code_accounting + self.unit_weight = unit_weight + self.price_net = price_net + self.price_gross = price_gross + self.tax_rate = tax_rate + + def __repr__(self): + return f"" + + +class FertiLog(db.Model): + __tablename__ = "Fertilog" + primary_key = db.Column("FertiLogId", db.Integer, primary_key=True) + nno3 = db.Column("NNO3", db.Float, default=0) + p = db.Column("P", db.Float, default=0) + k = db.Column("K", db.Float, default=0) + ca = db.Column("Ca", db.Float, default=0) + mg = db.Column("Mg", db.Float, default=0) + s = db.Column("S", db.Float, default=0) + na = db.Column("Na", db.Float, default=0) + cl = db.Column("Cl", db.Float, default=0) + fe = db.Column("Fe", db.Float, default=0) + zn = db.Column("Zn", db.Float, default=0) + b = db.Column("B", db.Float, default=0) + mn = db.Column("Mn", db.Float, default=0) + cu = db.Column("Cu", db.Float, default=0) + mo = db.Column("Mo", db.Float, default=0) + si = db.Column("Si", db.Float, default=0) + nnh4 = db.Column("NNH4", db.Float, default=0) + date_time_created = db.Column( + "DateTimeCreated", db.String, server_default=date_time_now() + ) + date_time_updated = db.Column( + "DateTimeUpdated", db.String, server_onupdate=date_time_now() + ) + + def __init__(self, nno3, p, k, ca, mg, s, na, cl, fe, zn, b, mn, cu, mo, si, nnh4): + self.nno3 = nno3 + self.p = p + self.k = k + self.ca = ca + self.mg = mg + self.s = s + self.na = na + self.cl = cl + self.fe = fe + self.zn = zn + self.b = b + self.mn = mn + self.cu = cu + self.mo = mo + self.si = si + self.nnh4 = nnh4 + self.date_time_created = date_time_now + + def __repr__(self): + return f"" + + +class FertiTarget(FertiLog): + __tablename__ = "Fertitarget" + primary_key = db.Column("FertiTargetId", db.Integer, primary_key=True) + targeted_log = db.Column( + "FertiLogId", db.Integer, db.ForeignKey("Fertilog.FertiLogId") + ) + + def __repr__(self): + return f"" + + +# Everything after here is garbage + + +class Order(db.Model): # TODO + id = db.Column(db.Integer, primary_key=True) + date = db.Column(db.String(20), nullable=False) + customer = db.Column(db.String(20), nullable=False) + content = db.Column(db.String(10), nullable=False) + updated = db.Column(db.String) + + def __repr__(self): + return f"" -- cgit v1.2.3