Files
eamco_office_api/app/classes/admin.py
Edwin Eames 3066754821 feat: add admin settings system and improve customer/pricing endpoints
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>
2026-02-27 18:45:06 -05:00

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