diff --git a/apps/perms/api/user_permission/accounts.py b/apps/perms/api/user_permission/accounts.py index eb20086e7..3b264f102 100644 --- a/apps/perms/api/user_permission/accounts.py +++ b/apps/perms/api/user_permission/accounts.py @@ -1,7 +1,12 @@ from django.shortcuts import get_object_or_404 from rest_framework.generics import ListAPIView, get_object_or_404 +<<<<<<< HEAD from common.utils import get_logger, lazyproperty +======= +from common.exceptions import JMSObjectDoesNotExist +from common.utils import get_logger, lazyproperty, is_uuid +>>>>>>> 0d3c5dddf9c838c5dcd28c20b6a8498088e45ce2 from perms import serializers from perms.hands import Asset from perms.utils import PermAccountUtil @@ -17,10 +22,25 @@ __all__ = [ class UserGrantedAssetAccountsApi(SelfOrPKUserMixin, ListAPIView): serializer_class = serializers.AccountsGrantedSerializer rbac_perms = ( + ('GET', 'perms.view_userassets'), ('list', 'perms.view_userassets'), ) @lazyproperty +<<<<<<< HEAD +======= + def user(self) -> User: + query_user = self.kwargs.get('user') + if is_uuid(query_user): + user = User.objects.get(id=query_user) + elif query_user == 'my': + user = self.request.user + else: + raise JMSObjectDoesNotExist(object_name=_('User')) + return user + + @lazyproperty +>>>>>>> 0d3c5dddf9c838c5dcd28c20b6a8498088e45ce2 def asset(self): asset_id = self.kwargs.get('asset_id') kwargs = {'id': asset_id, 'is_active': True} diff --git a/apps/terminal/api/applet/host.py b/apps/terminal/api/applet/host.py index 72321cc37..4542f3b8d 100644 --- a/apps/terminal/api/applet/host.py +++ b/apps/terminal/api/applet/host.py @@ -49,6 +49,7 @@ class AppletHostDeploymentViewSet(viewsets.ModelViewSet): serializer.is_valid(raise_exception=True) instance = serializer.save() task = run_applet_host_deployment.delay(instance.id) + instance.save_task(task.id) return Response({'task': str(task.id)}, status=201) @action(methods=['post'], detail=False, serializer_class=AppletHostDeployAppletSerializer) @@ -58,4 +59,5 @@ class AppletHostDeploymentViewSet(viewsets.ModelViewSet): applet_id = serializer.validated_data.get('applet_id') instance = serializer.save() task = run_applet_host_deployment_install_applet.delay(instance.id, applet_id) + instance.save_task(task.id) return Response({'task': str(task.id)}, status=201) diff --git a/apps/terminal/migrations/0059_applethostdeployment_task.py b/apps/terminal/migrations/0059_applethostdeployment_task.py new file mode 100644 index 000000000..5f455c9c6 --- /dev/null +++ b/apps/terminal/migrations/0059_applethostdeployment_task.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.14 on 2022-11-15 05:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('terminal', '0058_auto_20221103_1624'), + ] + + operations = [ + migrations.AddField( + model_name='applethostdeployment', + name='task', + field=models.UUIDField(null=True, verbose_name='Task'), + ), + ] diff --git a/apps/terminal/models/applet/host.py b/apps/terminal/models/applet/host.py index 3e510a3e3..83d9e3a41 100644 --- a/apps/terminal/models/applet/host.py +++ b/apps/terminal/models/applet/host.py @@ -105,6 +105,7 @@ class AppletHostDeployment(JMSBaseModel): date_start = models.DateTimeField(null=True, verbose_name=_('Date start'), db_index=True) date_finished = models.DateTimeField(null=True, verbose_name=_("Date finished")) comment = models.TextField(default='', blank=True, verbose_name=_('Comment')) + task = models.UUIDField(null=True, verbose_name=_('Task')) def start(self, **kwargs): from ...automations.deploy_applet_host import DeployAppletHostManager @@ -120,3 +121,7 @@ class AppletHostDeployment(JMSBaseModel): applet = None manager = DeployAppletHostManager(self, applet=applet) manager.install_applet(**kwargs) + + def save_task(self, task): + self.task = task + self.save(update_fields=['task']) diff --git a/apps/terminal/serializers/applet_host.py b/apps/terminal/serializers/applet_host.py index 2a291da73..c81258892 100644 --- a/apps/terminal/serializers/applet_host.py +++ b/apps/terminal/serializers/applet_host.py @@ -86,7 +86,7 @@ class HostAppletSerializer(AppletSerializer): class AppletHostDeploymentSerializer(serializers.ModelSerializer): class Meta: model = AppletHostDeployment - fields_mini = ['id', 'host', 'status'] + fields_mini = ['id', 'host', 'status', 'task'] read_only_fields = [ 'status', 'date_created', 'date_updated', 'date_start', 'date_finished'