sql alchemy

This commit is contained in:
Tenzing Kandang 2026-02-05 16:48:38 +01:00
parent 46e5337948
commit 8cf27163e4
3 changed files with 142 additions and 26 deletions

64
app.py
View File

@ -2,9 +2,10 @@ from fastapi import FastAPI, Request, HTTPException
from fastapi.responses import HTMLResponse from fastapi.responses import HTMLResponse
from fastapi.staticfiles import StaticFiles from fastapi.staticfiles import StaticFiles
from fastapi.templating import Jinja2Templates from fastapi.templating import Jinja2Templates
from sqlmodel import Field, Session, SQLModel, create_engine, select
import json import json
from ordinateur import ordinateur from models import ordinateur
app = FastAPI() app = FastAPI()
@ -15,6 +16,15 @@ app.mount("/static", StaticFiles(directory="static"), name="static")
templates = Jinja2Templates(directory="templates") templates = Jinja2Templates(directory="templates")
# Code above omitted
sqlite_file_name = "database.db"
sqlite_url = f"sqlite:///{sqlite_file_name}"
connect_args = {"check_same_thread": False}
engine = create_engine(sqlite_url, connect_args=connect_args)
# Code below omitted
@app.get("/ordi1", response_class=HTMLResponse) @app.get("/ordi1", response_class=HTMLResponse)
async def get_ordi1_info(request: Request): async def get_ordi1_info(request: Request):
@ -35,31 +45,37 @@ async def receive_info(request: Request):
except json.JSONDecodeError: except json.JSONDecodeError:
raise HTTPException(status_code=400, detail="Invalid JSON") raise HTTPException(status_code=400, detail="Invalid JSON")
# Debug # Debug
hardware = data.get('HARDWARE',{})
software = data.get('SOFTWARE',{})
print("Infos reçues :", data) print("Infos reçues :", data)
ordi1.mb_serial = data['HARDWARE']['mb_serial'] ordi1.mb_serial = hardware.get("mb_serial", "")
ordi1.hostname = data['HARDWARE']['hostname'] ordi1.hostname = hardware.get("hostname", "")
ordi1.cpu = data['HARDWARE']['cpu'] ordi1.cpu = hardware.get("cpu", "")
ordi1.cpu_id = data['HARDWARE']['cpu_id'] ordi1.cpu_id = hardware.get("cpu_id", "")
ordi1.memory_mb = data['HARDWARE']['memory_mb'] ordi1.memory_mb = hardware.get("memory_mb", "")
ordi1.ram_size = data['HARDWARE']['ram_size'] ordi1.ram_size = hardware.get("ram_size", "")
ordi1.ram_gen = data['HARDWARE']['ram_gen'] ordi1.ram_gen = hardware.get("ram_gen", "")
ordi1.sizes = data['HARDWARE']['sizes'] ordi1.sizes = hardware.get("sizes", "")
ordi1.cpu_freq_min = data['HARDWARE']['cpu_freq_min'] ordi1.cpu_freq_min = hardware.get("cpu_freq_min", "")
ordi1.cpu_freq_cur = data['HARDWARE']['cpu_freq_cur'] ordi1.cpu_freq_cur = hardware.get("cpu_freq_cur", "")
ordi1.cpu_freq_max = data['HARDWARE']['cpu_freq_max'] ordi1.cpu_freq_max = hardware.get("cpu_freq_max", "")
ordi1.gpu_model = data['HARDWARE']['gpu_model'] ordi1.gpu_model = hardware.get("gpu_model", "")
ordi1.chassis_serial = data['HARDWARE']['chassis_serial'] ordi1.chassis_serial = hardware.get("chassis_serial", "")
ordi1.cpu_cores_nb = data['HARDWARE']['cpu_cores_nb'] ordi1.cpu_cores_nb = hardware.get("cpu_cores_nb", "")
ordi1.cpu_threads_nb = data['HARDWARE']['cpu_threads_nb'] ordi1.cpu_threads_nb = hardware.get("cpu_threads_nb", "")
ordi1.ram_number = data['HARDWARE']['ram_number'] ordi1.ram_number = hardware.get("ram_number", "")
ordi1.ram_slots_nb = data['HARDWARE']['ram_slots_nb'] ordi1.ram_slots_nb = hardware.get("ram_slots_nb", "")
ordi1.os = data['SOFTWARE']['os'] ordi1.mac_adresse = hardware.get("mac_adress", "")
ordi1.arch = data['SOFTWARE']['arch']
ordi1.desktop = data['SOFTWARE']['desktop'] ordi1.os = software.get("os", "")
ordi1.wm = data['SOFTWARE']['wm'] ordi1.arch = software.get("arch", "")
ordi1.kernel = data['SOFTWARE']['kernel'] ordi1.desktop = software.get("desktop", "")
ordi1.mac_adresse = data['SOFTWARE']['mac_adresse'] ordi1.wm = software.get("wm", "")
ordi1.kernel = software.get("kernel", "")
#Test #Test
print(f"Le serial de la mb est {ordi1.mb_serial}") print(f"Le serial de la mb est {ordi1.mb_serial}")

View File

@ -82,15 +82,16 @@ json_data=$(jq -n \
cpu_cores_nb:$cpu_cores_nb, cpu_cores_nb:$cpu_cores_nb,
cpu_threads_nb:$cpu_threads_nb, cpu_threads_nb:$cpu_threads_nb,
ram_number:$ram_number, ram_number:$ram_number,
ram_slots_nb:$ram_slots_nb ram_slots_nb:$ram_slots_nb,
mac_adresse:$mac_adresse,
}, },
SOFTWARE: { SOFTWARE: {
os:$os, os:$os,
arch:$arch, arch:$arch,
desktop:$desktop, desktop:$desktop,
wm:$wm, wm:$wm,
kernel:$kernel, kernel:$kernel,
mac_adresse:$mac_adresse
} }
}') }')
@ -200,6 +201,7 @@ hardware() {
echo "CPU_THREADS_NUMBER=$CPU_THREADS_NUMBER" echo "CPU_THREADS_NUMBER=$CPU_THREADS_NUMBER"
echo "RAM_NUMBER=$RAM_NUMBER" echo "RAM_NUMBER=$RAM_NUMBER"
echo "RAM_SLOTS_NUMBER=$RAM_SLOTS_NUMBER" echo "RAM_SLOTS_NUMBER=$RAM_SLOTS_NUMBER"
echo "MAC_ADRESSE=$MAC_ADRESSE"
sizes=$(lsblk -dnb |grep -v loop |grep -v boot |tr -s " " |cut -d \ -f4) sizes=$(lsblk -dnb |grep -v loop |grep -v boot |tr -s " " |cut -d \ -f4)
STOCKAGE_TOTAL=0 STOCKAGE_TOTAL=0

98
models.py Normal file
View File

@ -0,0 +1,98 @@
#!/usr/bin/python3
import configparser
import requests
from sqlmodel import Field, Session, SQLModel, create_engine, select
class ordinateur(SQLModel, table=True):
id: int | None = Field(default=None, primary_key=True)
hostname: str = Field(index=True)
cpu: str = Field(index=True)
cpu_freq_min: str = Field(index=True)
cpu_freq_cur: str = Field(index=True)
cpu_freq_max: str = Field(index=True)
cpu_id: str = Field(index=True)
mb_serial: str = Field(index=True)
ram_size: str = Field(index=True)
ram_gen: str = Field(index=True)
sizes: str = Field(index=True)
memory_mb: str = Field(index=True)
gpu_model: str = Field(index=True)
chassis_serial: str = Field(index=True)
cpu_cores_nb: str = Field(index=True)
cpu_threads_nb: str = Field(index=True)
ram_number: str = Field(index=True)
ram_slots_nb: str = Field(index=True)
stockage_total: str = Field(index=True)
mac_adresse: str = Field(index=True)
os: str = Field(index=True)
arch: str = Field(index=True)
desktop: str = Field(index=True)
wm: str = Field(index=True)
kernel: str = Field(index=True)
'''
def reload(self):
r = requests.get("http://localhost:8000/summary.txt")
r.raise_for_status()
print(type(r.content.decode("utf-8")))
sum=configparser.ConfigParser()
sum.read_string(r.content.decode("utf-8"))
#sum.read("/opt/grabber/summary.txt")
if "CPU" in sum['HARDWARE']:
self.cpu = sum['HARDWARE']['CPU']
if "CPU_SERIAL" in sum['HARDWARE']:
self.cpu_serial = sum['HARDWARE']['CPU_SERIAL']
if "CPU_FREQ" in sum['HARDWARE']:
self.cpu_freq = sum['HARDWARE']['CPU_FREQ']
if "CPU_ID" in sum['HARDWARE']:
self.cpu_id = sum['HARDWARE']['CPU_ID']
if "RAM" in sum['HARDWARE']:
self.ram = sum['HARDWARE']['RAM']
if "RAM_GEN" in sum['HARDWARE']:
self.ram_gen = sum['HARDWARE']['RAM_GEN']
if "STOCKAGE_TOTAL" in sum['HARDWARE']:
self.stockage_total = sum['HARDWARE']['STOCKAGE_TOTAL']
if "OS" in sum['SOFTWARE']:
self.os = sum['SOFTWARE']['OS']
if "ARCH" in sum['SOFTWARE']:
self.arch = sum['SOFTWARE']['ARCH']
if "DESKTOP" in sum['SOFTWARE']:
self.desktop = sum['SOFTWARE']['DESKTOP']
if "WM" in sum['SOFTWARE']:
self.wm = sum['SOFTWARE']['WM']
if "KERNEL" in sum['SOFTWARE']:
self.kernel = sum['SOFTWARE']['KERNEL']
def __init__(self):
self.reload()
'''
def shutdown():
return
def status(self):
return
def link_to_user(self,user):
return
def remove_user_access(self):
return
def show_users(self):
return
#sum=configparser.ConfigParser()
#sum.read("/opt/grabber/summary.txt")
#sum.sections