Initial commit: Queensway Europe Telco Portal (Flask + SQLite, Docker deploy)

This commit is contained in:
Martin Belan
2026-09-11 07:23:40 +00:00
commit 919df2220e
42 changed files with 2206 additions and 0 deletions
+74
View File
@@ -0,0 +1,74 @@
from datetime import datetime
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Phone(db.Model):
__tablename__ = "phones"
id = db.Column(db.Integer, primary_key=True)
phone_number = db.Column(db.String(32), unique=True, nullable=False, index=True)
plan = db.Column(db.String(120), nullable=True)
contract_expiration = db.Column(db.Date, nullable=True)
eligible_for_replacement = db.Column(db.Date, nullable=True)
current_owner = db.Column(db.String(200), nullable=True)
venue = db.Column(db.String(200), nullable=True)
verified = db.Column(db.String(8), nullable=True)
comment = db.Column(db.Text, nullable=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
def to_dict(self):
return {
"id": self.id,
"phone_number": self.phone_number,
"plan": self.plan,
"contract_expiration": self.contract_expiration.isoformat() if self.contract_expiration else None,
"eligible_for_replacement": self.eligible_for_replacement.isoformat() if self.eligible_for_replacement else None,
"current_owner": self.current_owner,
"venue": self.venue,
"verified": self.verified,
"comment": self.comment,
}
class User(db.Model):
__tablename__ = "users"
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False, index=True)
password_hash = db.Column(db.String(255), nullable=False)
role = db.Column(db.String(20), nullable=False, default="viewer") # "admin" or "viewer"
created_at = db.Column(db.DateTime, default=datetime.utcnow)
def to_dict(self):
return {
"id": self.id,
"username": self.username,
"role": self.role,
}
class InternetConnection(db.Model):
__tablename__ = "internet_connections"
id = db.Column(db.Integer, primary_key=True)
venue = db.Column(db.String(200), nullable=False)
isp_provider = db.Column(db.String(200), nullable=True)
plan = db.Column(db.String(200), nullable=True)
contract_expiration = db.Column(db.Date, nullable=True)
notes = db.Column(db.Text, nullable=True)
created_at = db.Column(db.DateTime, default=datetime.utcnow)
updated_at = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
def to_dict(self):
return {
"id": self.id,
"venue": self.venue,
"isp_provider": self.isp_provider,
"plan": self.plan,
"contract_expiration": self.contract_expiration.isoformat() if self.contract_expiration else None,
"notes": self.notes,
}