diff options
| author | Marius Peter <marius.peter@tutanota.com> | 2022-05-15 13:17:35 +0200 | 
|---|---|---|
| committer | Marius Peter <marius.peter@tutanota.com> | 2022-05-15 13:17:35 +0200 | 
| commit | e084f90c19e779592f6e3f14eb8f70a7287f0dad (patch) | |
| tree | 1215177356105452c39a916fd050f79c9721f523 /app/models.py | |
| parent | 1dad22d3e45d6506c8624e3a7111240fcc4ab786 (diff) | |
Modularization.
Diffstat (limited to 'app/models.py')
| -rw-r--r-- | app/models.py | 260 | 
1 files changed, 260 insertions, 0 deletions
| 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"<User {self.name_first} {self.name_last}>" + + +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"<Module {self.name}>" + + +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"<Customer {self.name}>" + + +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"<Invoice for {self.customer.name} at {self.updated}>" + + +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"<Product {self.name}>" + + +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"<Log ID {self.primary_key}>" + + +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"<Target ID {self.primary_key}>" + + +# 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"<Order {self.name} at {self.updated}>" | 
