rename channel module + update user creation + fix read channel permission
This commit is contained in:
parent
861d18484f
commit
33ac6f9ad6
@ -4,3 +4,8 @@ from django.apps import AppConfig
|
|||||||
class DeploymentConfig(AppConfig):
|
class DeploymentConfig(AppConfig):
|
||||||
default_auto_field = "django.db.models.BigAutoField"
|
default_auto_field = "django.db.models.BigAutoField"
|
||||||
name = "deployment"
|
name = "deployment"
|
||||||
|
|
||||||
|
def ready(self) -> None:
|
||||||
|
import deployment.signals # noqa
|
||||||
|
|
||||||
|
return super().ready()
|
||||||
|
|||||||
@ -1,48 +0,0 @@
|
|||||||
from django.contrib.auth.models import User
|
|
||||||
from django_eventstream import send_event
|
|
||||||
from django_eventstream.channelmanager import DefaultChannelManager
|
|
||||||
|
|
||||||
from deployment.models import Deployment
|
|
||||||
|
|
||||||
|
|
||||||
def parse_channel(channel: str) -> tuple[str] | None:
|
|
||||||
parts = channel.lstrip("deployment_").split("_")
|
|
||||||
if len_part := len(parts):
|
|
||||||
if len_part == 1:
|
|
||||||
return (int(parts[0]), "")
|
|
||||||
if len_part == 2:
|
|
||||||
return (int(parts[0]), parts[1])
|
|
||||||
return
|
|
||||||
|
|
||||||
|
|
||||||
class DeploymentChannelManager(DefaultChannelManager):
|
|
||||||
def can_read_channel(self, user: User, channel: str):
|
|
||||||
match parse_channel(channel):
|
|
||||||
case (user_id, ""):
|
|
||||||
return user_id == user.id or user.is_superuser
|
|
||||||
case (user_id, _):
|
|
||||||
# TODO(rmanach): check if the deployment belongs to the user
|
|
||||||
return user_id == user.id or user.is_superuser
|
|
||||||
return False
|
|
||||||
|
|
||||||
|
|
||||||
class Event:
|
|
||||||
@staticmethod
|
|
||||||
def send_details(deployment: Deployment, progress: int):
|
|
||||||
send_event(
|
|
||||||
f"deployment_{deployment.user.id}_{deployment.id}",
|
|
||||||
"message",
|
|
||||||
{
|
|
||||||
"id": deployment.id,
|
|
||||||
"status": deployment.status,
|
|
||||||
"progress": progress,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
@staticmethod
|
|
||||||
def send(deployment: Deployment):
|
|
||||||
send_event(
|
|
||||||
f"deployment_{deployment.user.id}",
|
|
||||||
"message",
|
|
||||||
{"id": deployment.id, "status": deployment.status},
|
|
||||||
)
|
|
||||||
@ -5,7 +5,7 @@ from uuid import UUID
|
|||||||
from celery import shared_task
|
from celery import shared_task
|
||||||
from celery.contrib.abortable import AbortableTask
|
from celery.contrib.abortable import AbortableTask
|
||||||
|
|
||||||
from deployment.channel import Event
|
from deployment.channels import Event
|
||||||
from deployment.models import Deployment, Type, Status
|
from deployment.models import Deployment, Type, Status
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from django.http import (
|
|||||||
)
|
)
|
||||||
from django.shortcuts import render, get_object_or_404
|
from django.shortcuts import render, get_object_or_404
|
||||||
|
|
||||||
from deployment.channel import Event
|
from deployment.channels import Event
|
||||||
from deployment.forms import DeploymentForm
|
from deployment.forms import DeploymentForm
|
||||||
from deployment.models import Deployment, Status
|
from deployment.models import Deployment, Status
|
||||||
from deployment.tasks import deploy as launch_deploy
|
from deployment.tasks import deploy as launch_deploy
|
||||||
@ -30,7 +30,7 @@ def check_user_credits(user: User) -> bool:
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
deployments = Deployment.objects.filter(user=user)
|
deployments = Deployment.objects.filter(user=user)
|
||||||
return not len(deployments) >= dep_user.credits
|
return dep_user.credits > len(deployments)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
@ -135,7 +135,9 @@ def create(request):
|
|||||||
|
|
||||||
form = DeploymentForm(request.POST)
|
form = DeploymentForm(request.POST)
|
||||||
if not form.is_valid():
|
if not form.is_valid():
|
||||||
return HttpResponseBadRequest(f"deployment creation inputs are invalid: {form.errors}")
|
return HttpResponseBadRequest(
|
||||||
|
f"deployment creation inputs are invalid: {form.errors}"
|
||||||
|
)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
Deployment.objects.create(
|
Deployment.objects.create(
|
||||||
|
|||||||
@ -137,6 +137,6 @@ LOGIN_REDIRECT_URL = "home"
|
|||||||
LOGOUT_REDIRECT_URL = "home"
|
LOGOUT_REDIRECT_URL = "home"
|
||||||
|
|
||||||
GRIP_URL = "http://pushpin:5561"
|
GRIP_URL = "http://pushpin:5561"
|
||||||
EVENTSTREAM_CHANNELMANAGER_CLASS = "deployment.channel.DeploymentChannelManager"
|
EVENTSTREAM_CHANNELMANAGER_CLASS = "deployment.channels.DeploymentChannelManager"
|
||||||
|
|
||||||
CSRF_TRUSTED_ORIGINS = [HOST] if IS_PROD else ["http://localhost:8080"]
|
CSRF_TRUSTED_ORIGINS = [HOST] if IS_PROD else ["http://localhost:8080"]
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user