73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			73 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from uuid import uuid4
 | |
| 
 | |
| from django.core.paginator import Paginator
 | |
| from django.http import (
 | |
|     HttpResponseRedirect,
 | |
|     HttpResponseServerError,
 | |
|     HttpResponseBadRequest,
 | |
| )
 | |
| from django.shortcuts import render, get_object_or_404
 | |
| 
 | |
| from deployment.forms import DeploymentForm
 | |
| from deployment.models import Deployment, Status
 | |
| from deployment.tasks import deploy as launch_deploy
 | |
| 
 | |
| 
 | |
| def index(request):
 | |
|     deployments = Deployment.objects.filter(user=request.user.id)
 | |
|     paginator = Paginator(deployments, 5)
 | |
| 
 | |
|     page_number = request.GET.get("page")
 | |
|     page_obj = paginator.get_page(page_number)
 | |
| 
 | |
|     return render(
 | |
|         request, "deployment/board.html", {"page_obj": page_obj, "url": "events/"}
 | |
|     )
 | |
| 
 | |
| 
 | |
| def deploy(request, deployment_id):
 | |
|     deployment = get_object_or_404(Deployment, id=deployment_id)
 | |
| 
 | |
|     if request.method == "POST":
 | |
|         deployment.status = Status.PENDING.name
 | |
|         deployment.save()
 | |
|         launch_deploy.delay(deployment_id)
 | |
| 
 | |
|     if page := request.GET.get("page", ""):
 | |
|         return HttpResponseRedirect(f"/deployment?page={page}")
 | |
| 
 | |
|     return HttpResponseRedirect("/deployment")
 | |
| 
 | |
| 
 | |
| def details(request, deployment_id):
 | |
|     deployment = get_object_or_404(Deployment, id=deployment_id)
 | |
| 
 | |
|     if request.method == "POST":
 | |
|         if deployment.status == Status.RUNNING:
 | |
|             return HttpResponseBadRequest("deployment is running")
 | |
|         try:
 | |
|             deployment.delete()
 | |
|         except Exception as e:
 | |
|             return HttpResponseServerError(e)
 | |
|         return HttpResponseRedirect("/deployment")
 | |
| 
 | |
|     deployment = get_object_or_404(Deployment, id=deployment_id)
 | |
|     return render(request, "deployment/details.html", {"deployment": deployment})
 | |
| 
 | |
| 
 | |
| def create(request):
 | |
|     if request.method == "POST":
 | |
|         form = DeploymentForm(request.POST)
 | |
|         if form.is_valid():
 | |
|             try:
 | |
|                 Deployment.objects.create(
 | |
|                     user=request.user, id=uuid4(), **form.cleaned_data
 | |
|                 )
 | |
|             except Exception as e:
 | |
|                 return HttpResponseServerError(e)
 | |
|             return HttpResponseRedirect("/deployment")
 | |
|     else:
 | |
|         form = DeploymentForm
 | |
| 
 | |
|     return render(request, "deployment/create.html", {"form": form})
 |