prepare intranet for first Dokploy deployment
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
from playwright.sync_api import TimeoutError as PlaywrightTimeoutError
|
||||
from playwright.sync_api import sync_playwright
|
||||
|
||||
XLSX_DIR = Path(os.getenv('CKAL_XLSX_DIR', '/data/ckal-xlsx'))
|
||||
CKAL_USERNAME = os.getenv('CKAL_USERNAME')
|
||||
CKAL_PASSWORD = os.getenv('CKAL_PASSWORD')
|
||||
|
||||
|
||||
def upload_file(xlsx_file: Path) -> None:
|
||||
print(f'Verarbeite: {xlsx_file.name}', flush=True)
|
||||
with sync_playwright() as p:
|
||||
browser = p.chromium.launch(
|
||||
headless=True,
|
||||
chromium_sandbox=False,
|
||||
args=['--disable-dev-shm-usage'],
|
||||
)
|
||||
page = browser.new_page(viewport={'width': 1400, 'height': 800})
|
||||
page.on('dialog', lambda dialog: dialog.accept())
|
||||
try:
|
||||
page.goto(
|
||||
'https://v2.ckalender.de/index.php?content=Login',
|
||||
wait_until='domcontentloaded',
|
||||
timeout=30000,
|
||||
)
|
||||
page.locator('[name="username"]').fill(CKAL_USERNAME)
|
||||
page.locator('[name="password"]').fill(CKAL_PASSWORD)
|
||||
page.locator('[name="password"]').press('Enter')
|
||||
try:
|
||||
page.wait_for_url(
|
||||
lambda url: 'content=Login' not in str(url),
|
||||
timeout=15000,
|
||||
)
|
||||
except PlaywrightTimeoutError as exc:
|
||||
raise RuntimeError('CKalender-Login fehlgeschlagen.') from exc
|
||||
|
||||
page.goto(
|
||||
'https://v2.ckalender.de/index.php?content=Admin.EventImport',
|
||||
wait_until='domcontentloaded',
|
||||
timeout=30000,
|
||||
)
|
||||
page.locator('[value="Excel"]').click()
|
||||
upload = page.locator('input[type="file"]')
|
||||
upload.wait_for(state='attached', timeout=15000)
|
||||
upload.set_input_files(str(xlsx_file))
|
||||
page.locator('[value="Append"]').click()
|
||||
page.locator('[class="ui primary button"]').click()
|
||||
page.wait_for_timeout(1500)
|
||||
finally:
|
||||
browser.close()
|
||||
|
||||
|
||||
def main() -> int:
|
||||
if not CKAL_USERNAME or not CKAL_PASSWORD:
|
||||
print('FEHLER: CKAL_USERNAME/CKAL_PASSWORD fehlt.', file=sys.stderr)
|
||||
return 1
|
||||
|
||||
XLSX_DIR.mkdir(parents=True, exist_ok=True)
|
||||
files = sorted(XLSX_DIR.glob('*.xlsx'))
|
||||
if not files:
|
||||
print('Keine XLSX-Dateien vorhanden.', flush=True)
|
||||
return 0
|
||||
|
||||
for xlsx_file in files:
|
||||
try:
|
||||
upload_file(xlsx_file)
|
||||
xlsx_file.unlink()
|
||||
print(f'Upload erfolgreich: {xlsx_file.name}', flush=True)
|
||||
except Exception as exc:
|
||||
print(f'FEHLER bei {xlsx_file.name}: {exc}', file=sys.stderr, flush=True)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
sys.exit(main())
|
||||
Reference in New Issue
Block a user