mirror of https://github.com/jumpserver/jumpserver
				
				
				
			perf: 修改 session 字段,添加 Comment
							parent
							
								
									615a1ddc96
								
							
						
					
					
						commit
						d040162d86
					
				| 
						 | 
				
			
			@ -7,14 +7,19 @@ def migrate_del_macos(apps, schema_editor):
 | 
			
		|||
    db_alias = schema_editor.connection.alias
 | 
			
		||||
    asset_model = apps.get_model('assets', 'Asset')
 | 
			
		||||
    platform_model = apps.get_model('assets', 'Platform')
 | 
			
		||||
    old_macos = platform_model.objects.using(db_alias).get(
 | 
			
		||||
    old_macos = platform_model.objects.using(db_alias).filter(
 | 
			
		||||
        name='MacOS', type='macos'
 | 
			
		||||
    )
 | 
			
		||||
    new_macos = platform_model.objects.using(db_alias).get(
 | 
			
		||||
    ).first()
 | 
			
		||||
    new_macos = platform_model.objects.using(db_alias).filter(
 | 
			
		||||
        name='macOS', type='unix'
 | 
			
		||||
    )
 | 
			
		||||
    ).first()
 | 
			
		||||
 | 
			
		||||
    if not old_macos or not new_macos:
 | 
			
		||||
        return
 | 
			
		||||
 | 
			
		||||
    asset_model.objects.using(db_alias).filter(
 | 
			
		||||
        platform=old_macos).update(platform=new_macos)
 | 
			
		||||
        platform=old_macos
 | 
			
		||||
    ).update(platform=new_macos)
 | 
			
		||||
 | 
			
		||||
    platform_model.objects.using(db_alias).filter(id=old_macos.id).delete()
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -4,25 +4,24 @@ from urllib.parse import parse_qsl
 | 
			
		|||
from django.conf import settings
 | 
			
		||||
from django.db.models import F, Value, CharField
 | 
			
		||||
from rest_framework.generics import ListAPIView
 | 
			
		||||
from rest_framework.generics import get_object_or_404
 | 
			
		||||
from rest_framework.request import Request
 | 
			
		||||
from rest_framework.response import Response
 | 
			
		||||
from rest_framework.generics import get_object_or_404
 | 
			
		||||
 | 
			
		||||
from assets.api import SerializeToTreeNodeMixin
 | 
			
		||||
from assets.models import Asset, Account
 | 
			
		||||
from assets.utils import KubernetesTree
 | 
			
		||||
from assets.api import SerializeToTreeNodeMixin
 | 
			
		||||
from common.utils import get_object_or_none, lazyproperty
 | 
			
		||||
from common.utils.common import timeit
 | 
			
		||||
from perms.hands import Node
 | 
			
		||||
from perms.models import PermNode
 | 
			
		||||
from perms.utils import PermAccountUtil
 | 
			
		||||
from perms.utils.permission import AssetPermissionUtil
 | 
			
		||||
from perms.utils.user_permission import (
 | 
			
		||||
    UserGrantedNodesQueryUtils, UserGrantedAssetsQueryUtils,
 | 
			
		||||
)
 | 
			
		||||
from perms.utils import PermAccountUtil
 | 
			
		||||
from perms.utils.permission import AssetPermissionUtil
 | 
			
		||||
from common.utils import get_object_or_none, lazyproperty
 | 
			
		||||
from common.utils.common import timeit
 | 
			
		||||
 | 
			
		||||
from ..mixin import SelfOrPKUserMixin
 | 
			
		||||
from .mixin import RebuildTreeMixin
 | 
			
		||||
from ..mixin import SelfOrPKUserMixin
 | 
			
		||||
 | 
			
		||||
__all__ = [
 | 
			
		||||
    'UserGrantedK8sAsTreeApi',
 | 
			
		||||
| 
						 | 
				
			
			@ -31,8 +30,10 @@ __all__ = [
 | 
			
		|||
]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class BaseUserNodeWithAssetAsTreeApi(SelfOrPKUserMixin, RebuildTreeMixin, SerializeToTreeNodeMixin,
 | 
			
		||||
                                     ListAPIView):
 | 
			
		||||
class BaseUserNodeWithAssetAsTreeApi(
 | 
			
		||||
    SelfOrPKUserMixin, RebuildTreeMixin,
 | 
			
		||||
    SerializeToTreeNodeMixin, ListAPIView
 | 
			
		||||
):
 | 
			
		||||
 | 
			
		||||
    def list(self, request, *args, **kwargs):
 | 
			
		||||
        nodes, assets = self.get_nodes_assets()
 | 
			
		||||
| 
						 | 
				
			
			@ -129,10 +130,7 @@ class UserPermedNodeChildrenWithAssetsAsTreeApi(BaseUserNodeWithAssetAsTreeApi):
 | 
			
		|||
        return self.query_node_key
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class UserGrantedK8sAsTreeApi(
 | 
			
		||||
    SelfOrPKUserMixin,
 | 
			
		||||
    ListAPIView
 | 
			
		||||
):
 | 
			
		||||
class UserGrantedK8sAsTreeApi(SelfOrPKUserMixin, ListAPIView):
 | 
			
		||||
    """ 用户授权的K8s树 """
 | 
			
		||||
 | 
			
		||||
    @staticmethod
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,23 @@
 | 
			
		|||
# Generated by Django 3.2.14 on 2022-12-16 07:29
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
 | 
			
		||||
    dependencies = [
 | 
			
		||||
        ('terminal', '0061_rename_system_user_command_account'),
 | 
			
		||||
    ]
 | 
			
		||||
 | 
			
		||||
    operations = [
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='session',
 | 
			
		||||
            name='comment',
 | 
			
		||||
            field=models.TextField(blank=True, null=True, verbose_name='Comment'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='session',
 | 
			
		||||
            name='type',
 | 
			
		||||
            field=models.CharField(db_index=True, default='normal', max_length=16),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
| 
						 | 
				
			
			@ -3,24 +3,23 @@ from __future__ import unicode_literals
 | 
			
		|||
import os
 | 
			
		||||
import uuid
 | 
			
		||||
 | 
			
		||||
from django.db import models
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
from django.utils import timezone
 | 
			
		||||
from django.conf import settings
 | 
			
		||||
from django.core.files.storage import default_storage
 | 
			
		||||
from django.core.cache import cache
 | 
			
		||||
from django.core.files.storage import default_storage
 | 
			
		||||
from django.db import models
 | 
			
		||||
from django.utils import timezone
 | 
			
		||||
from django.utils.translation import ugettext_lazy as _
 | 
			
		||||
 | 
			
		||||
from assets.models import Asset
 | 
			
		||||
from assets.const import Protocol
 | 
			
		||||
from users.models import User
 | 
			
		||||
from orgs.mixins.models import OrgModelMixin
 | 
			
		||||
from django.db.models import TextChoices
 | 
			
		||||
from assets.models import Asset
 | 
			
		||||
from common.utils import get_object_or_none, lazyproperty
 | 
			
		||||
from orgs.mixins.models import OrgModelMixin
 | 
			
		||||
from terminal.backends import get_multi_command_storage
 | 
			
		||||
from users.models import User
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Session(OrgModelMixin):
 | 
			
		||||
    class LOGIN_FROM(TextChoices):
 | 
			
		||||
    class LOGIN_FROM(models.TextChoices):
 | 
			
		||||
        ST = 'ST', 'SSH Terminal'
 | 
			
		||||
        RT = 'RT', 'RDP Terminal'
 | 
			
		||||
        WT = 'WT', 'Web Terminal'
 | 
			
		||||
| 
						 | 
				
			
			@ -34,6 +33,7 @@ class Session(OrgModelMixin):
 | 
			
		|||
    account = models.CharField(max_length=128, verbose_name=_("Account"), db_index=True)
 | 
			
		||||
    protocol = models.CharField(default='ssh', max_length=16, db_index=True)
 | 
			
		||||
    login_from = models.CharField(max_length=2, choices=LOGIN_FROM.choices, default="ST", verbose_name=_("Login from"))
 | 
			
		||||
    type = models.CharField(max_length=16, default='normal', db_index=True)
 | 
			
		||||
    remote_addr = models.CharField(max_length=128, verbose_name=_("Remote addr"), blank=True, null=True)
 | 
			
		||||
    is_success = models.BooleanField(default=True, db_index=True)
 | 
			
		||||
    is_finished = models.BooleanField(default=False, db_index=True)
 | 
			
		||||
| 
						 | 
				
			
			@ -42,6 +42,7 @@ class Session(OrgModelMixin):
 | 
			
		|||
    terminal = models.ForeignKey('terminal.Terminal', null=True, on_delete=models.DO_NOTHING, db_constraint=False)
 | 
			
		||||
    date_start = models.DateTimeField(verbose_name=_("Date start"), db_index=True, default=timezone.now)
 | 
			
		||||
    date_end = models.DateTimeField(verbose_name=_("Date end"), null=True)
 | 
			
		||||
    comment = models.TextField(blank=True, null=True, verbose_name=_("Comment"))
 | 
			
		||||
 | 
			
		||||
    upload_to = 'replay'
 | 
			
		||||
    ACTIVE_CACHE_KEY_PREFIX = 'SESSION_ACTIVE_{}'
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue