63 lines
4.2 KiB
HTML
63 lines
4.2 KiB
HTML
{% extends "base.html" %}
|
|
{% block title %}{{ source.name }} bearbeiten{% endblock %}
|
|
{% block content %}
|
|
<h1>{{ source.name }} bearbeiten</h1>
|
|
<div class="card"><div class="card-body">
|
|
<form method="post" action="/sources/{{ source.id }}" class="stack">
|
|
<input type="hidden" name="_csrf" value="{{ p.csrf }}">
|
|
<div class="form-group">
|
|
<label for="name">Name</label>
|
|
<input id="name" name="name" required maxlength="200" value="{{ source.name }}">
|
|
</div>
|
|
<div class="form-group">
|
|
<label>URL</label>
|
|
<p class="text-sm aiw-break">{{ source.config.url }}</p>
|
|
<p class="form-hint">Eine andere URL ist eine neue Quelle und braucht eine neue Bestätigung.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="branch">Ziel-Branch</label>
|
|
<input id="branch" name="branch" value="{{ source.config.branch }}">
|
|
<p class="form-hint">Standard für alles, was die KI liest, wovon ihre Chat-Branches abzweigen und wohin Pull Requests gehen, meist <code>main</code> oder <code>develop</code>. Andere Branches bleiben nutzbar: unter <em>Repository</em> ansehen oder einen Chat auf einem bestehenden Branch starten.</p>
|
|
<p class="form-hint">Nach einer Änderung wird die Quelle neu getestet; offene Chat-Branches behalten ihr bisheriges Ziel.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="pr_provider">Pull Requests</label>
|
|
<select id="pr_provider" name="pr_provider">
|
|
{% for key, label in providers.items() %}<option value="{{ key }}" {% if source.config.get('pr_provider', 'none') == key %}selected{% endif %}>{{ label }}</option>{% endfor %}
|
|
</select>
|
|
<p class="form-hint">Den Branch des Chats (<code>ai/…</code>) pusht und den Pull Request erstellt ein Mitglied per Klick in der Ansicht „Änderungen“. Das Token braucht dafür Schreibrechte, die per Branch Permission auf <code>ai/*</code> beschränkt sein sollten.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<input type="hidden" name="delete_branches" value="0">
|
|
<label class="cluster"><input type="checkbox" name="delete_branches" value="1" {% if source.config.get('delete_branches', True) %}checked{% endif %}> Branch nach Merge oder Ablehnung im Git-Server löschen</label>
|
|
<p class="form-hint">Nur wenn dort noch der zuletzt übertragene Stand liegt; Commits von außen bleiben erhalten. In der Plattform bleiben Commits und Diff sichtbar. Der technische Account braucht dafür das Recht, <code>ai/*</code>-Branches zu löschen.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="token">Token ersetzen</label>
|
|
<input id="token" name="token" type="password" autocomplete="off" placeholder="{{ 'aktuell …' ~ source.secret_hint if source.secret else 'kein Token hinterlegt' }}">
|
|
<p class="form-hint">Leer lassen, um das bisherige zu behalten.</p>
|
|
</div>
|
|
<div class="form-group">
|
|
<label for="username">Nutzername (optional)</label>
|
|
<input id="username" name="username" autocomplete="off" value="{{ source.config.get('username', '') }}">
|
|
<p class="form-hint">Leer lassen für Bitbucket Data Center (Token als Bearer). Für Gitea, Forgejo und klassische HTTPS-Server den Nutzernamen des technischen Accounts eintragen; GitLab: <code>oauth2</code>; GitHub: <code>x-access-token</code>. Das Token gilt dann als Passwort.</p>
|
|
</div>
|
|
{% if source.secret %}
|
|
<label class="cluster"><input type="checkbox" name="remove_token" value="1"> Token entfernen (öffentliches Repository)</label>
|
|
{% endif %}
|
|
{% if error %}<p class="form-error">{{ error }}</p>{% endif %}
|
|
<div class="cluster">
|
|
<button class="btn btn-primary" type="submit">Speichern und testen</button>
|
|
<a class="btn btn-ghost" href="/workspaces/{{ workspace.id }}/data">Abbrechen</a>
|
|
</div>
|
|
</form>
|
|
</div></div>
|
|
|
|
<div class="card"><div class="card-body cluster">
|
|
<p class="flex-1 text-sm text-muted">Die Quelle wird aus dem Workspace entfernt. Das Repository selbst bleibt unberührt.</p>
|
|
<form method="post" action="/sources/{{ source.id }}/delete" data-confirm="Quelle {{ source.name }} wirklich entfernen?">
|
|
<input type="hidden" name="_csrf" value="{{ p.csrf }}">
|
|
<button class="btn btn-secondary btn-sm" type="submit">Quelle entfernen</button>
|
|
</form>
|
|
</div></div>
|
|
{% endblock %}
|