(change): framework for setting default pref

This commit is contained in:
2026-02-15 17:02:31 -05:00
parent 16c422bacf
commit 2a4ea9f777
6 changed files with 89 additions and 43 deletions

View File

@@ -5,3 +5,5 @@ user = tam3
password = tam3
database = tam3
[tickets]
default_pref = TEXT

View File

@@ -1,5 +1,6 @@
from dataclasses import dataclass
from .template import Repo
from settings import read_config
@dataclass
class Ticket:
@@ -8,7 +9,7 @@ class Ticket:
first_name: str = ""
last_name: str = ""
phone_number: str = ""
preference: str = "CALL"
preference: str = read_config()["tickets"]["default_pref"] or "CALL"
changed: bool = False
class TicketRepo(Repo):

View File

@@ -20,6 +20,9 @@ def read_config():
"password": os.getenv("TAM3_DB_PASSWD", "tam3"),
"database": os.getenv("TAM3_DB_DATABASE", "tam3"),
}
config["tickets"] = {
"default_pref": os.getenv("TAM3_DEFAULT_PREF", "CALL")
}
with open(config_path, "w") as f:
config.write(f)
return config

View File

@@ -3,11 +3,15 @@ import fs from "fs";
export function readSettings() {
if (fs.existsSync(env.SETTINGS_PATH)) {
const rawFileData = fs.readFileSync(env.SETTINGS_PATH, 'utf-8');
const rawFileData = fs.readFileSync(env.SETTINGS_PATH, "utf-8");
const fileData = JSON.parse(rawFileData);
return fileData;
} else {
const fileData = {TAM3_REMOTE: env.TAM3_REMOTE || "", TAM3_REMOTE_KEY: env.TAM3_REMOTE_KEY || ""};
const fileData = {
TAM3_REMOTE: env.TAM3_REMOTE || "",
TAM3_REMOTE_KEY: env.TAM3_REMOTE_KEY || "",
TAM3_DEFAULT_PREF: env.TAM3_DEFAULT_PREF || "CALL",
};
fs.writeFileSync(env.SETTINGS_PATH, JSON.stringify(fileData, null, 2));
return fileData;
}
@@ -15,5 +19,5 @@ export function readSettings() {
export function writeSettings(settingsObj) {
fs.writeFileSync(env.SETTINGS_PATH, JSON.stringify(settingsObj, null, 2));
return "File written successfully."
return "File written successfully.";
}

View File

@@ -5,32 +5,50 @@ import { eq, and } from "drizzle-orm";
export async function GET({ params }) {
const env = readSettings();
let n_t_from = parseInt(params.t_from), n_t_to = parseInt(params.t_to);
let n_t_from = parseInt(params.t_from),
n_t_to = parseInt(params.t_to);
if (env.TAM3_REMOTE) {
const res = await fetch(`${env.TAM3_REMOTE}/api/tickets/${params.prefix}/${n_t_from}/${n_t_to}/?api_key=${env.TAM3_REMOTE_KEY}`);
const res = await fetch(
`${env.TAM3_REMOTE}/api/tickets/${params.prefix}/${n_t_from}/${n_t_to}/?api_key=${env.TAM3_REMOTE_KEY}`,
);
if (!res.ok) {
return new Response(JSON.stringify({details: "Unable to fetch tickets."}), {status: res.status, statusText: res.statusText})
};
return new Response(
JSON.stringify({ details: "Unable to fetch tickets." }),
{ status: res.status, statusText: res.statusText },
);
}
const data = await res.json();
return new Response(JSON.stringify(data), {
headers: {'Content-Type': 'application/json'},
headers: { "Content-Type": "application/json" },
status: 200,
statusText: "Tickets fetched successfully."
})
statusText: "Tickets fetched successfully.",
});
} else {
const ticket_pref = env.TAM3_DEFAULT_PREF || "CALL";
let r_dict = {};
for (let i=n_t_from; i <= n_t_to; i++) {
let data = await db.select().from(tickets).where(and(eq(tickets.prefix, params.prefix), eq(tickets.t_id, i)));
for (let i = n_t_from; i <= n_t_to; i++) {
let data = await db
.select()
.from(tickets)
.where(and(eq(tickets.prefix, params.prefix), eq(tickets.t_id, i)));
if (data[0]) {
r_dict[i] = {...data[0], changed: false};
r_dict[i] = { ...data[0], changed: false };
} else {
r_dict[i] = {prefix: params.prefix, t_id: i, first_name: "", last_name: "", phone_number: "", preference: "CALL", changed: false};
}
r_dict[i] = {
prefix: params.prefix,
t_id: i,
first_name: "",
last_name: "",
phone_number: "",
preference: ticket_pref,
changed: false,
};
}
}
return new Response(JSON.stringify(Object.values(r_dict)), {
headers: {'Content-Type': 'application/json'},
headers: { "Content-Type": "application/json" },
status: 200,
statusText: "Tickets loaded successfully."
})
statusText: "Tickets loaded successfully.",
});
}
}

View File

@@ -58,6 +58,24 @@
<br />
<hr />
<div>
<h2>Local Settings</h2>
<p>These settings will only apply if you're operating in local mode.</p>
<div>
<div>Default Ticket Contact Preference:</div>
<div>
<select bind:value={stagingSettings.TAM3_DEFAULT_PREF}>
<option value="CALL">CALL</option>
<option value="TEXT">TEXT</option>
</select>
</div>
</div>
</div>
<br />
<div class="flex-row">
<button class="styled" onclick={saveChanges}>Save</button>
<button class="styled" onclick={cancelChanges}>Cancel</button>