add sse server

This commit is contained in:
2023-09-17 14:06:23 +02:00
parent bf365b1204
commit bd11ddbd60
9 changed files with 165 additions and 15 deletions
@@ -0,0 +1,22 @@
# Generated by Django 4.2.5 on 2023-09-16 17:21
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
("deployment", "0006_alter_deployment_id_alter_deployment_status_and_more"),
]
operations = [
migrations.AlterField(
model_name="deployment",
name="id",
field=models.UUIDField(
default=uuid.UUID("0cc4ae03-f52e-4f3a-9fe1-fecda707b20e"),
primary_key=True,
serialize=False,
),
),
]
+9
View File
@@ -4,6 +4,9 @@ from uuid import uuid4
from django.contrib.auth.models import User
from django.db import models
from django.db.models.signals import pre_save, pre_delete
from django.dispatch import receiver
from django_eventstream import send_event
class Type(Enum):
@@ -41,3 +44,9 @@ class Deployment(models.Model):
def __str__(self):
return f"{self.name} | {self.type} | {self.status}"
@receiver(pre_save, sender=Deployment)
@receiver(pre_delete, sender=Deployment)
def deployment_update_handler(sender, instance, **kwargs):
send_event("deployment", "update", {"id": instance.id, "status": instance.status})
+5 -3
View File
@@ -9,7 +9,7 @@ from django.http import (
from django.shortcuts import render, get_object_or_404
from deployment.forms import DeploymentForm
from deployment.models import Deployment
from deployment.models import Deployment, Status
def index(request):
@@ -19,14 +19,16 @@ def index(request):
page_number = request.GET.get("page")
page_obj = paginator.get_page(page_number)
return render(request, "deployment/board.html", {"page_obj": page_obj})
return render(
request, "deployment/board.html", {"page_obj": page_obj, "url": "/events/"}
)
def details(request, deployment_id):
deployment = get_object_or_404(Deployment, id=deployment_id)
if request.method == "POST":
if deployment.status == deployment.RUNNING:
if deployment.status == Status.RUNNING:
return HttpResponseBadRequest("deployment is running")
try:
deployment.delete()