ConfigModel -> AdminConfigModel
This commit is contained in:
parent
600ee99520
commit
0bc31529bc
3 changed files with 38 additions and 35 deletions
|
@ -27,7 +27,7 @@ async def is_admin(
|
||||||
return is_admin
|
return is_admin
|
||||||
|
|
||||||
|
|
||||||
class ConfigModel(BaseModel):
|
class AdminConfigModel(BaseModel):
|
||||||
class __Solution(BaseModel):
|
class __Solution(BaseModel):
|
||||||
value: str
|
value: str
|
||||||
whitespace: str
|
whitespace: str
|
||||||
|
@ -71,12 +71,12 @@ async def get_config_model(
|
||||||
cal_cfg: CalendarConfig = Depends(get_calendar_config),
|
cal_cfg: CalendarConfig = Depends(get_calendar_config),
|
||||||
event_dates: EventDates = Depends(get_all_event_dates),
|
event_dates: EventDates = Depends(get_all_event_dates),
|
||||||
ttfonts: list[TTFont] = Depends(get_all_ttfonts),
|
ttfonts: list[TTFont] = Depends(get_all_ttfonts),
|
||||||
) -> ConfigModel:
|
) -> AdminConfigModel:
|
||||||
"""
|
"""
|
||||||
Kombiniert aus privaten `settings`, `config` und `calendar_config`
|
Kombiniert aus privaten `settings`, `config` und `calendar_config`
|
||||||
"""
|
"""
|
||||||
|
|
||||||
return ConfigModel.model_validate(
|
return AdminConfigModel.model_validate(
|
||||||
{
|
{
|
||||||
"solution": {
|
"solution": {
|
||||||
"value": cfg.solution.value,
|
"value": cfg.solution.value,
|
||||||
|
|
|
@ -10,13 +10,13 @@
|
||||||
<dd>
|
<dd>
|
||||||
Eingabe:
|
Eingabe:
|
||||||
<span class="is-family-monospace">
|
<span class="is-family-monospace">
|
||||||
"{{ config_model.solution.value }}"
|
"{{ admin_config_model.solution.value }}"
|
||||||
</span>
|
</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dd>
|
<dd>
|
||||||
Ausgabe:
|
Ausgabe:
|
||||||
<span class="is-family-monospace">
|
<span class="is-family-monospace">
|
||||||
"{{ config_model.solution.clean }}"
|
"{{ admin_config_model.solution.clean }}"
|
||||||
</span>
|
</span>
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
|
@ -24,13 +24,13 @@
|
||||||
<dd>
|
<dd>
|
||||||
Whitespace:
|
Whitespace:
|
||||||
<span class="is-uppercase is-family-monospace">
|
<span class="is-uppercase is-family-monospace">
|
||||||
{{ config_model.solution.whitespace }}
|
{{ admin_config_model.solution.whitespace }}
|
||||||
</span>
|
</span>
|
||||||
</dd>
|
</dd>
|
||||||
<dd>
|
<dd>
|
||||||
Buchstaben:
|
Buchstaben:
|
||||||
<span class="is-uppercase is-family-monospace">
|
<span class="is-uppercase is-family-monospace">
|
||||||
{{ config_model.solution.case }}
|
{{ admin_config_model.solution.case }}
|
||||||
</span>
|
</span>
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
@ -64,7 +64,7 @@
|
||||||
|
|
||||||
<dt>Zufalls-Seed</dt>
|
<dt>Zufalls-Seed</dt>
|
||||||
<dd class="is-family-monospace">
|
<dd class="is-family-monospace">
|
||||||
"{{ config_model.puzzle.seed }}"
|
"{{ admin_config_model.puzzle.seed }}"
|
||||||
</dd>
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
@ -74,10 +74,10 @@
|
||||||
<h3>Kalender</h3>
|
<h3>Kalender</h3>
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Definition</dt>
|
<dt>Definition</dt>
|
||||||
<dd>{{ config_model.calendar.config_file }}</dd>
|
<dd>{{ admin_config_model.calendar.config_file }}</dd>
|
||||||
|
|
||||||
<dt>Hintergrundbild</dt>
|
<dt>Hintergrundbild</dt>
|
||||||
<dd>{{ config_model.calendar.background }}</dd>
|
<dd>{{ admin_config_model.calendar.background }}</dd>
|
||||||
|
|
||||||
<dt>Favicon</dt>
|
<dt>Favicon</dt>
|
||||||
<dd>{{ admin_config_model.calendar.favicon }}</dd>
|
<dd>{{ admin_config_model.calendar.favicon }}</dd>
|
||||||
|
@ -96,14 +96,14 @@
|
||||||
<h3>Bilder</h3>
|
<h3>Bilder</h3>
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Größe</dt>
|
<dt>Größe</dt>
|
||||||
<dd>{{ config_model.image.size }} px</dd>
|
<dd>{{ admin_config_model.image.size }} px</dd>
|
||||||
|
|
||||||
<dt>Rand</dt>
|
<dt>Rand</dt>
|
||||||
<dd>{{ config_model.image.border }} px</dd>
|
<dd>{{ admin_config_model.image.border }} px</dd>
|
||||||
|
|
||||||
<dt>Schriftarten</dt>
|
<dt>Schriftarten</dt>
|
||||||
<dd
|
<dd
|
||||||
v-for="(font, index) in config_model.fonts"
|
v-for="(font, index) in admin_config_model.fonts"
|
||||||
:key="`font-${index}`"
|
:key="`font-${index}`"
|
||||||
>
|
>
|
||||||
{{ font.file }} ({{ font.size }} pt)
|
{{ font.file }} ({{ font.size }} pt)
|
||||||
|
@ -116,7 +116,7 @@
|
||||||
<h3>WebDAV</h3>
|
<h3>WebDAV</h3>
|
||||||
<dl>
|
<dl>
|
||||||
<dt>URL</dt>
|
<dt>URL</dt>
|
||||||
<dd>{{ config_model.webdav.url }}</dd>
|
<dd>{{ admin_config_model.webdav.url }}</dd>
|
||||||
|
|
||||||
<dt>Zugangsdaten</dt>
|
<dt>Zugangsdaten</dt>
|
||||||
<dd class="is-family-monospace">
|
<dd class="is-family-monospace">
|
||||||
|
@ -130,10 +130,10 @@
|
||||||
</dd>
|
</dd>
|
||||||
|
|
||||||
<dt>Cache-Dauer</dt>
|
<dt>Cache-Dauer</dt>
|
||||||
<dd>{{ config_model.webdav.cache_ttl }} s</dd>
|
<dd>{{ admin_config_model.webdav.cache_ttl }} s</dd>
|
||||||
|
|
||||||
<dt>Konfigurationsdatei</dt>
|
<dt>Konfigurationsdatei</dt>
|
||||||
<dd>{{ config_model.webdav.config_file }}</dd>
|
<dd>{{ admin_config_model.webdav.config_file }}</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -141,10 +141,10 @@
|
||||||
<h3>Sonstige</h3>
|
<h3>Sonstige</h3>
|
||||||
<dl>
|
<dl>
|
||||||
<dt>Redis</dt>
|
<dt>Redis</dt>
|
||||||
<dd>Host: {{ config_model.redis.host }}</dd>
|
<dd>Host: {{ admin_config_model.redis.host }}</dd>
|
||||||
<dd>Port: {{ config_model.redis.port }}</dd>
|
<dd>Port: {{ admin_config_model.redis.port }}</dd>
|
||||||
<dd>Datenbank: {{ config_model.redis.db }}</dd>
|
<dd>Datenbank: {{ admin_config_model.redis.db }}</dd>
|
||||||
<dd>Protokoll: {{ config_model.redis.protocol }}</dd>
|
<dd>Protokoll: {{ admin_config_model.redis.protocol }}</dd>
|
||||||
|
|
||||||
<dt>UI-Admin</dt>
|
<dt>UI-Admin</dt>
|
||||||
<dd class="is-family-monospace">
|
<dd class="is-family-monospace">
|
||||||
|
@ -165,7 +165,7 @@
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { ConfigModel, Credentials, DoorsSaved } from "@/lib/api";
|
import { AdminConfigModel, Credentials, DoorsSaved } from "@/lib/api";
|
||||||
import { DateTime } from "luxon";
|
import { DateTime } from "luxon";
|
||||||
import { Options, Vue } from "vue-class-component";
|
import { Options, Vue } from "vue-class-component";
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ import CountDown from "../CountDown.vue";
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
export default class extends Vue {
|
export default class extends Vue {
|
||||||
public config_model: ConfigModel = {
|
public admin_config_model: AdminConfigModel = {
|
||||||
solution: {
|
solution: {
|
||||||
value: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
value: "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
|
||||||
whitespace: "KEEP",
|
whitespace: "KEEP",
|
||||||
|
@ -225,8 +225,8 @@ export default class extends Vue {
|
||||||
public dav_credentials: Credentials = ["", ""];
|
public dav_credentials: Credentials = ["", ""];
|
||||||
public ui_credentials: Credentials = ["", ""];
|
public ui_credentials: Credentials = ["", ""];
|
||||||
|
|
||||||
public fmt_puzzle_date(name: keyof ConfigModel["puzzle"]): string {
|
public fmt_puzzle_date(name: keyof AdminConfigModel["puzzle"]): string {
|
||||||
const iso_date = this.config_model.puzzle[name];
|
const iso_date = this.admin_config_model.puzzle[name];
|
||||||
if (iso_date === null) return "-";
|
if (iso_date === null) return "-";
|
||||||
|
|
||||||
return DateTime.fromISO(iso_date).toLocaleString(DateTime.DATE_SHORT);
|
return DateTime.fromISO(iso_date).toLocaleString(DateTime.DATE_SHORT);
|
||||||
|
@ -234,23 +234,25 @@ export default class extends Vue {
|
||||||
|
|
||||||
public on_open(ready: () => void, fail: () => void): void {
|
public on_open(ready: () => void, fail: () => void): void {
|
||||||
Promise.all([
|
Promise.all([
|
||||||
this.$advent22.api_get<ConfigModel>("admin/config_model"),
|
this.$advent22.api_get<AdminConfigModel>("admin/config_model"),
|
||||||
this.$advent22.api_get<DoorsSaved>("admin/doors"),
|
this.$advent22.api_get<DoorsSaved>("admin/doors"),
|
||||||
this.$advent22.api_get<DoorsSaved>("user/doors"),
|
this.$advent22.api_get<DoorsSaved>("user/doors"),
|
||||||
this.$advent22.api_get<string>("user/title"),
|
this.$advent22.api_get<string>("user/title"),
|
||||||
this.$advent22.api_get<string>("user/footer"),
|
this.$advent22.api_get<string>("user/footer"),
|
||||||
this.$advent22.api_get<number | null>("user/next_door"),
|
this.$advent22.api_get<number | null>("user/next_door"),
|
||||||
])
|
])
|
||||||
.then(([config_model, doors, user_doors, title, footer, next_door]) => {
|
.then(
|
||||||
this.config_model = config_model;
|
([admin_config_model, doors, user_doors, title, footer, next_door]) => {
|
||||||
this.doors = doors;
|
this.admin_config_model = admin_config_model;
|
||||||
this.num_user_doors = user_doors.length;
|
this.doors = doors;
|
||||||
this.title = title;
|
this.num_user_doors = user_doors.length;
|
||||||
this.footer = footer;
|
this.title = title;
|
||||||
this.next_door = next_door;
|
this.footer = footer;
|
||||||
|
this.next_door = next_door;
|
||||||
|
|
||||||
ready();
|
ready();
|
||||||
})
|
},
|
||||||
|
)
|
||||||
.catch(fail);
|
.catch(fail);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
export interface ConfigModel {
|
export interface AdminConfigModel {
|
||||||
solution: {
|
solution: {
|
||||||
value: string;
|
value: string;
|
||||||
whitespace: string;
|
whitespace: string;
|
||||||
|
@ -15,6 +15,7 @@ export interface ConfigModel {
|
||||||
calendar: {
|
calendar: {
|
||||||
config_file: string;
|
config_file: string;
|
||||||
background: string;
|
background: string;
|
||||||
|
favicon: string;
|
||||||
};
|
};
|
||||||
image: {
|
image: {
|
||||||
size: number;
|
size: number;
|
||||||
|
|
Loading…
Reference in a new issue