issue-facade integration
This commit is contained in:
parent
c2b7cc64d6
commit
a907ed6f74
16 changed files with 642 additions and 95 deletions
|
|
@ -7,6 +7,7 @@ from vergabe_teilnahme.apps.ausschreibungen.models import Ausschreibung
|
|||
|
||||
from django.http import HttpResponse
|
||||
|
||||
from .issue_backends import gitea_configured as _gitea_configured
|
||||
from .models import Aufgabe, AufgabenVerknuepfung, Bieterfrage, ExternalIssue
|
||||
|
||||
AKTIVE_STATUS = [
|
||||
|
|
@ -413,6 +414,7 @@ def verknuepfung_loeschen(request, ausschreibung_id, pk, vk_pk):
|
|||
|
||||
def external_issue_bearbeiten(request, ausschreibung_id, pk):
|
||||
from .forms import ExternalIssueForm
|
||||
from .issue_facade import lokales_issue_erstellen
|
||||
|
||||
ausschreibung = get_object_or_404(Ausschreibung, pk=ausschreibung_id)
|
||||
aufgabe = get_object_or_404(Aufgabe, pk=pk, ausschreibung=ausschreibung)
|
||||
|
|
@ -423,11 +425,18 @@ def external_issue_bearbeiten(request, ausschreibung_id, pk):
|
|||
if form.is_valid():
|
||||
ei = form.save(commit=False)
|
||||
ei.aufgabe = aufgabe
|
||||
if not issue:
|
||||
daten = lokales_issue_erstellen(aufgabe)
|
||||
ei.issue_facade_backend = 'local'
|
||||
ei.issue_facade_id = daten['issue_facade_id']
|
||||
ei.issue_key = daten['issue_key']
|
||||
ei.sync_status = daten['sync_status']
|
||||
ei.save()
|
||||
if _is_htmx(request):
|
||||
return render(request, 'aufgaben/partials/external_issue_panel.html', {
|
||||
'aufgabe': aufgabe,
|
||||
'ausschreibung': ausschreibung,
|
||||
'gitea_configured': _gitea_configured(),
|
||||
})
|
||||
return redirect('ausschreibungen:aufgaben:detail',
|
||||
ausschreibung_id=ausschreibung_id, pk=pk)
|
||||
|
|
@ -443,12 +452,61 @@ def external_issue_bearbeiten(request, ausschreibung_id, pk):
|
|||
return redirect('ausschreibungen:aufgaben:detail', ausschreibung_id=ausschreibung_id, pk=pk)
|
||||
|
||||
|
||||
def external_issue_push_remote(request, ausschreibung_id, pk):
|
||||
"""Schiebt ein lokales Issue nach Gitea."""
|
||||
from .issue_facade import an_gitea_delegieren
|
||||
|
||||
ausschreibung = get_object_or_404(Ausschreibung, pk=ausschreibung_id)
|
||||
aufgabe = get_object_or_404(Aufgabe, pk=pk, ausschreibung=ausschreibung)
|
||||
ei = get_object_or_404(ExternalIssue, aufgabe=aufgabe)
|
||||
push_error = None
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
daten = an_gitea_delegieren(aufgabe, ei)
|
||||
for k, v in daten.items():
|
||||
setattr(ei, k, v)
|
||||
ei.save()
|
||||
except ValueError as exc:
|
||||
push_error = str(exc)
|
||||
if _is_htmx(request):
|
||||
return render(request, 'aufgaben/partials/external_issue_panel.html', {
|
||||
'aufgabe': aufgabe,
|
||||
'ausschreibung': ausschreibung,
|
||||
'gitea_configured': _gitea_configured(),
|
||||
'push_error': push_error,
|
||||
})
|
||||
return redirect('ausschreibungen:aufgaben:detail', ausschreibung_id=ausschreibung_id, pk=pk)
|
||||
|
||||
|
||||
def external_issue_sync(request, ausschreibung_id, pk):
|
||||
"""Aktualisiert sync_status aus dem Backend."""
|
||||
from .issue_facade import status_synchronisieren
|
||||
|
||||
ausschreibung = get_object_or_404(Ausschreibung, pk=ausschreibung_id)
|
||||
aufgabe = get_object_or_404(Aufgabe, pk=pk, ausschreibung=ausschreibung)
|
||||
ei = get_object_or_404(ExternalIssue, aufgabe=aufgabe)
|
||||
if request.method == 'POST':
|
||||
try:
|
||||
status_synchronisieren(ei)
|
||||
except Exception:
|
||||
ei.sync_status = 'error'
|
||||
ei.save(update_fields=['sync_status'])
|
||||
if _is_htmx(request):
|
||||
return render(request, 'aufgaben/partials/external_issue_panel.html', {
|
||||
'aufgabe': aufgabe,
|
||||
'ausschreibung': ausschreibung,
|
||||
'gitea_configured': _gitea_configured(),
|
||||
})
|
||||
return redirect('ausschreibungen:aufgaben:detail', ausschreibung_id=ausschreibung_id, pk=pk)
|
||||
|
||||
|
||||
def external_issue_panel(request, ausschreibung_id, pk):
|
||||
ausschreibung = get_object_or_404(Ausschreibung, pk=ausschreibung_id)
|
||||
aufgabe = get_object_or_404(Aufgabe, pk=pk, ausschreibung=ausschreibung)
|
||||
return render(request, 'aufgaben/partials/external_issue_panel.html', {
|
||||
'aufgabe': aufgabe,
|
||||
'ausschreibung': ausschreibung,
|
||||
'gitea_configured': _gitea_configured(),
|
||||
})
|
||||
|
||||
|
||||
|
|
@ -461,6 +519,7 @@ def external_issue_loeschen(request, ausschreibung_id, pk):
|
|||
return render(request, 'aufgaben/partials/external_issue_panel.html', {
|
||||
'aufgabe': aufgabe,
|
||||
'ausschreibung': ausschreibung,
|
||||
'gitea_configured': _gitea_configured(),
|
||||
})
|
||||
return redirect('ausschreibungen:aufgaben:detail',
|
||||
ausschreibung_id=ausschreibung_id, pk=pk)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue