147 lines
5.4 KiB
Python
147 lines
5.4 KiB
Python
from datetime import datetime
|
|
|
|
from flask_login import UserMixin
|
|
from sqlalchemy import Numeric
|
|
from werkzeug.security import check_password_hash, generate_password_hash
|
|
|
|
from .extensions import db
|
|
|
|
class Uzytkownik(UserMixin, db.Model):
|
|
__tablename__ = "uzytkownik"
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
uzytkownik = db.Column(db.String(80), unique=True, nullable=False)
|
|
haslo_hash = db.Column(db.String(128), nullable=False)
|
|
czy_admin = db.Column(db.Boolean, default=False)
|
|
|
|
def set_password(self, password):
|
|
self.haslo_hash = generate_password_hash(password)
|
|
def check_password(self, password):
|
|
return check_password_hash(self.haslo_hash, password)
|
|
|
|
class Zbiorka(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
nazwa = db.Column(db.String(100), nullable=False)
|
|
opis = db.Column(db.Text, nullable=False)
|
|
numer_konta = db.Column(db.String(50), nullable=True)
|
|
numer_telefonu_blik = db.Column(db.String(50), nullable=True)
|
|
cel = db.Column(Numeric(12, 2), nullable=False, default=0)
|
|
stan = db.Column(Numeric(12, 2), default=0)
|
|
ukryta = db.Column(db.Boolean, default=False)
|
|
ukryj_kwote = db.Column(db.Boolean, default=False)
|
|
zrealizowana = db.Column(db.Boolean, default=False)
|
|
pokaz_postep_finanse = db.Column(db.Boolean, default=True, nullable=False)
|
|
pokaz_postep_pozycje = db.Column(db.Boolean, default=True, nullable=False)
|
|
pokaz_postep_kwotowo = db.Column(db.Boolean, default=True, nullable=False)
|
|
uzyj_konta = db.Column(db.Boolean, default=True, nullable=False)
|
|
uzyj_blik = db.Column(db.Boolean, default=True, nullable=False)
|
|
typ_zbiorki = db.Column(db.String(20), default="standardowa", nullable=False)
|
|
|
|
wplaty = db.relationship(
|
|
"Wplata",
|
|
back_populates="zbiorka",
|
|
lazy=True,
|
|
order_by="Wplata.data.desc()",
|
|
cascade="all, delete-orphan",
|
|
passive_deletes=True,
|
|
)
|
|
|
|
wydatki = db.relationship(
|
|
"Wydatek",
|
|
backref="zbiorka",
|
|
lazy=True,
|
|
order_by="Wydatek.data.desc()",
|
|
cascade="all, delete-orphan",
|
|
passive_deletes=True,
|
|
)
|
|
|
|
przedmioty = db.relationship(
|
|
"Przedmiot",
|
|
backref="zbiorka",
|
|
lazy=True,
|
|
order_by="Przedmiot.id.asc()",
|
|
cascade="all, delete-orphan",
|
|
passive_deletes=True,
|
|
)
|
|
|
|
class Przedmiot(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
zbiorka_id = db.Column(
|
|
db.Integer,
|
|
db.ForeignKey("zbiorka.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
)
|
|
nazwa = db.Column(db.String(120), nullable=False)
|
|
link = db.Column(db.String(255), nullable=True)
|
|
cena = db.Column(Numeric(12, 2), nullable=True)
|
|
kupione = db.Column(db.Boolean, default=False)
|
|
|
|
class Wplata(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
zbiorka_id = db.Column(
|
|
db.Integer,
|
|
db.ForeignKey("zbiorka.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
)
|
|
kwota = db.Column(Numeric(12, 2), nullable=False)
|
|
data = db.Column(db.DateTime, default=datetime.utcnow)
|
|
opis = db.Column(db.Text, nullable=True)
|
|
zbiorka = db.relationship("Zbiorka", back_populates="wplaty")
|
|
ukryta = db.Column(db.Boolean, nullable=False, default=False)
|
|
|
|
class Wydatek(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
zbiorka_id = db.Column(
|
|
db.Integer,
|
|
db.ForeignKey("zbiorka.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
)
|
|
kwota = db.Column(Numeric(12, 2), nullable=False)
|
|
data = db.Column(db.DateTime, default=datetime.utcnow)
|
|
opis = db.Column(db.Text, nullable=True)
|
|
ukryta = db.Column(db.Boolean, nullable=False, default=False)
|
|
|
|
class Przesuniecie(db.Model):
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
zbiorka_zrodlo_id = db.Column(
|
|
db.Integer,
|
|
db.ForeignKey("zbiorka.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
)
|
|
zbiorka_cel_id = db.Column(
|
|
db.Integer,
|
|
db.ForeignKey("zbiorka.id", ondelete="CASCADE"),
|
|
nullable=False,
|
|
)
|
|
kwota = db.Column(Numeric(12, 2), nullable=False)
|
|
data = db.Column(db.DateTime, default=datetime.utcnow)
|
|
opis = db.Column(db.Text, nullable=True)
|
|
ukryta = db.Column(db.Boolean, nullable=False, default=False)
|
|
|
|
wplata_id = db.Column(
|
|
db.Integer,
|
|
db.ForeignKey("wplata.id", ondelete="SET NULL"),
|
|
nullable=True,
|
|
)
|
|
|
|
zbiorka_zrodlo = db.relationship("Zbiorka", foreign_keys=[zbiorka_zrodlo_id], backref="przesuniecia_wychodzace")
|
|
zbiorka_cel = db.relationship("Zbiorka", foreign_keys=[zbiorka_cel_id], backref="przesuniecia_przychodzace")
|
|
wplata = db.relationship("Wplata", foreign_keys=[wplata_id], backref="przesuniecia")
|
|
|
|
class UstawieniaGlobalne(db.Model):
|
|
__tablename__ = "ustawienia_globalne"
|
|
|
|
id = db.Column(db.Integer, primary_key=True)
|
|
numer_konta = db.Column(db.String(50), nullable=False)
|
|
numer_telefonu_blik = db.Column(db.String(50), nullable=False)
|
|
dozwolone_hosty_logowania = db.Column(db.Text, nullable=True)
|
|
logo_url = db.Column(db.String(255), nullable=True)
|
|
tytul_strony = db.Column(db.String(120), nullable=True)
|
|
pokaz_logo_w_navbar = db.Column(db.Boolean, default=False)
|
|
typ_navbar = db.Column(db.String(10), default="text")
|
|
typ_stopka = db.Column(db.String(10), default="text")
|
|
stopka_text = db.Column(db.String(200), nullable=True)
|
|
kolejnosc_rezerwowych = db.Column(db.String(20), default="id", nullable=False)
|
|
|
|
|