diff --git a/api/data/config.ini b/api/data/config.ini
index f726a5c..7086d3d 100644
--- a/api/data/config.ini
+++ b/api/data/config.ini
@@ -5,3 +5,5 @@ user = tam3
password = tam3
database = tam3
+[tickets]
+default_pref = TEXT
diff --git a/api/repos/tickets.py b/api/repos/tickets.py
index 6ae9825..919e35b 100644
--- a/api/repos/tickets.py
+++ b/api/repos/tickets.py
@@ -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):
@@ -37,4 +38,4 @@ class TicketRepo(Repo):
for t in tickets:
self.cur.execute("REPLACE INTO tickets VALUES (%s, %s, %s, %s, %s, %s)", (t.prefix, t.t_id, t.first_name, t.last_name, t.phone_number, t.preference))
self.conn.commit()
- return {"detail": "Tickets posted successfully."}
\ No newline at end of file
+ return {"detail": "Tickets posted successfully."}
diff --git a/api/settings.py b/api/settings.py
index a8d7055..b0d5c8b 100644
--- a/api/settings.py
+++ b/api/settings.py
@@ -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
diff --git a/webapp/src/lib/server/settings.js b/webapp/src/lib/server/settings.js
index a98a411..ce69b8d 100644
--- a/webapp/src/lib/server/settings.js
+++ b/webapp/src/lib/server/settings.js
@@ -2,18 +2,22 @@ import { env } from "$env/dynamic/private";
import fs from "fs";
export function readSettings() {
- if (fs.existsSync(env.SETTINGS_PATH)) {
- 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 || ""};
- fs.writeFileSync(env.SETTINGS_PATH, JSON.stringify(fileData, null, 2));
- return fileData;
- }
+ if (fs.existsSync(env.SETTINGS_PATH)) {
+ 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 || "",
+ TAM3_DEFAULT_PREF: env.TAM3_DEFAULT_PREF || "CALL",
+ };
+ fs.writeFileSync(env.SETTINGS_PATH, JSON.stringify(fileData, null, 2));
+ return fileData;
+ }
}
export function writeSettings(settingsObj) {
- fs.writeFileSync(env.SETTINGS_PATH, JSON.stringify(settingsObj, null, 2));
- return "File written successfully."
-}
\ No newline at end of file
+ fs.writeFileSync(env.SETTINGS_PATH, JSON.stringify(settingsObj, null, 2));
+ return "File written successfully.";
+}
diff --git a/webapp/src/routes/api/tickets/[prefix]/[t_from]/[t_to]/+server.js b/webapp/src/routes/api/tickets/[prefix]/[t_from]/[t_to]/+server.js
index 6f27379..da58bca 100644
--- a/webapp/src/routes/api/tickets/[prefix]/[t_from]/[t_to]/+server.js
+++ b/webapp/src/routes/api/tickets/[prefix]/[t_from]/[t_to]/+server.js
@@ -4,33 +4,51 @@ import { tickets } from "$lib/server/db/schema";
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);
- 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}`);
- if (!res.ok) {
- 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'},
- status: 200,
- statusText: "Tickets fetched successfully."
- })
- } else {
- 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)));
- if (data[0]) {
- 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};
- }
- };
- return new Response(JSON.stringify(Object.values(r_dict)), {
- headers: {'Content-Type': 'application/json'},
- status: 200,
- statusText: "Tickets loaded successfully."
- })
+ const env = readSettings();
+ 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}`,
+ );
+ if (!res.ok) {
+ return new Response(
+ JSON.stringify({ details: "Unable to fetch tickets." }),
+ { status: res.status, statusText: res.statusText },
+ );
}
-}
\ No newline at end of file
+ const data = await res.json();
+ return new Response(JSON.stringify(data), {
+ headers: { "Content-Type": "application/json" },
+ status: 200,
+ 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)));
+ if (data[0]) {
+ r_dict[i] = { ...data[0], changed: false };
+ } else {
+ 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" },
+ status: 200,
+ statusText: "Tickets loaded successfully.",
+ });
+ }
+}
diff --git a/webapp/src/routes/settings/+page.svelte b/webapp/src/routes/settings/+page.svelte
index bec1f86..47ca1f9 100644
--- a/webapp/src/routes/settings/+page.svelte
+++ b/webapp/src/routes/settings/+page.svelte
@@ -58,6 +58,24 @@
+
These settings will only apply if you're operating in local mode.
+