Add centralized admin settings (company info, social links, quick calls, sidebar visibility toggles, theme, logo upload) with singleton pattern and full CRUD API. Add active/dedicated customer count endpoints for dashboard stats. Fix automatic assignment route to use PUT instead of GET. Refactor oil price endpoint to use schema serialization with null safety. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
60 lines
2.2 KiB
Python
Executable File
60 lines
2.2 KiB
Python
Executable File
from app import db, ma
|
|
from datetime import datetime
|
|
import json
|
|
|
|
|
|
class Admin_Company(db.Model):
|
|
__tablename__ = 'admin_company'
|
|
__table_args__ = {"schema": "public"}
|
|
|
|
id = db.Column(db.Integer,
|
|
primary_key=True,
|
|
autoincrement=True,
|
|
unique=False)
|
|
creation_date = db.Column(db.TIMESTAMP(), default=datetime.utcnow())
|
|
account_prefix = db.Column(db.VARCHAR(5))
|
|
company_name = db.Column(db.VARCHAR(250))
|
|
company_address = db.Column(db.VARCHAR(250))
|
|
company_town = db.Column(db.VARCHAR(100))
|
|
company_zip = db.Column(db.VARCHAR(25))
|
|
company_state = db.Column(db.INTEGER())
|
|
company_phone_number = db.Column(db.VARCHAR(50))
|
|
|
|
class Admin_Company_schema(ma.SQLAlchemyAutoSchema):
|
|
class Meta:
|
|
model = Admin_Company
|
|
|
|
# --- ADD THIS ENTIRE NEW MODEL ---
|
|
class Call(db.Model):
|
|
__tablename__ = "call_call"
|
|
__table_args__ = {"schema": "public"}
|
|
|
|
id = db.Column(db.Integer, primary_key=True, index=True)
|
|
current_phone = db.Column(db.String(500))
|
|
created_at = db.Column(db.DateTime, default=datetime.utcnow)
|
|
|
|
|
|
class Admin_Settings(db.Model):
|
|
__tablename__ = 'admin_settings'
|
|
__table_args__ = {"schema": "public"}
|
|
|
|
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
|
|
updated_at = db.Column(db.TIMESTAMP(), default=datetime.utcnow, onupdate=datetime.utcnow)
|
|
logo_base64 = db.Column(db.Text, nullable=True)
|
|
logo_mime_type = db.Column(db.VARCHAR(50), nullable=True)
|
|
company_name = db.Column(db.VARCHAR(250), default='Auburn Oil')
|
|
link_facebook = db.Column(db.VARCHAR(500), nullable=True)
|
|
link_google = db.Column(db.VARCHAR(500), nullable=True)
|
|
link_website = db.Column(db.VARCHAR(500), nullable=True)
|
|
link_google_review = db.Column(db.VARCHAR(500), nullable=True)
|
|
quick_calls = db.Column(db.Text, nullable=True)
|
|
show_automatics = db.Column(db.Boolean, default=True)
|
|
show_stats = db.Column(db.Boolean, default=True)
|
|
show_service = db.Column(db.Boolean, default=True)
|
|
show_ticker = db.Column(db.Boolean, default=True)
|
|
default_theme = db.Column(db.VARCHAR(50), default='ocean')
|
|
|
|
|
|
class Admin_Settings_schema(ma.SQLAlchemyAutoSchema):
|
|
class Meta:
|
|
model = Admin_Settings |