Webview: add form handling for create clan

This commit is contained in:
Johannes Kirschbauer
2024-06-11 19:20:28 +02:00
parent b0845c050c
commit 74538f69a9
7 changed files with 202 additions and 9 deletions

View File

@@ -33,7 +33,7 @@ class ClanMetaInfo:
@dataclass
class CreateOptions:
directory: Path
directory: Path | str
# Metadata for the clan
# Metadata can be shown with `clan show`
meta: ClanMetaInfo | None = None
@@ -43,7 +43,7 @@ class CreateOptions:
@API.register
def create_clan(options: CreateOptions) -> CreateClanResponse:
directory = options.directory
directory = Path(options.directory)
template_url = options.template_url
if not directory.exists():
directory.mkdir()

View File

@@ -0,0 +1,35 @@
import json
from dataclasses import dataclass
from pathlib import Path
from clan_cli.api import API
from clan_cli.clan.create import ClanMetaInfo
from clan_cli.errors import ClanError
@dataclass
class UpdateOptions:
directory: str
meta: ClanMetaInfo | None = None
@API.register
def update_clan_meta(options: UpdateOptions) -> ClanMetaInfo:
meta_file = Path(options.directory) / Path("clan/meta.json")
if not meta_file.exists():
raise ClanError(
"File not found",
description=f"Could not find {meta_file} to update.",
location="update_clan_meta",
)
meta_content: dict[str, str] = {}
with open(meta_file) as f:
meta_content = json.load(f)
meta_content = {**meta_content, **options.meta.__dict__}
with open(meta_file) as f:
json.dump(meta_content, f)
return ClanMetaInfo(**meta_content)