feat: 添加远程应用

This commit is contained in:
ibuler
2022-10-22 11:17:02 +08:00
parent 3e7004d784
commit 943b130035
24 changed files with 213 additions and 27 deletions

View File

@@ -1,9 +1,3 @@
from .command import *
from .session import *
from .status import *
from .storage import *
from .task import *
from .terminal import *
from .sharing import *
from .replay import *
from .endpoint import *
from .component import *
from .applet import *

View File

@@ -0,0 +1,2 @@
from .applet import *
from .provider import *

View File

@@ -0,0 +1,33 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from common.db.models import JMSBaseModel
__all__ = ['Applet', 'AppletPublication']
class Applet(JMSBaseModel):
class Type(models.TextChoices):
app = 'app', _('App')
web = 'web', _('Web')
name = models.CharField(max_length=128, verbose_name=_('Name'), unique=True)
version = models.CharField(max_length=16, verbose_name=_('Version'))
type = models.CharField(max_length=16, choices=Type.choices, verbose_name=_('Type'))
icon = models.ImageField(upload_to='applet/icon', verbose_name=_('Icon'))
author = models.CharField(max_length=128, verbose_name=_('Author'))
protocols = models.JSONField(default=list, verbose_name=_('Protocol'))
comment = models.TextField(default='', blank=True, verbose_name=_('Comment'))
def __str__(self):
return self.name
class AppletPublication(JMSBaseModel):
applet = models.ForeignKey('Applet', on_delete=models.PROTECT, verbose_name=_('Applet'))
provider = models.ForeignKey('AppletProvider', on_delete=models.PROTECT, verbose_name=_('Provider'))
status = models.CharField(max_length=16, verbose_name=_('Status'))
comment = models.TextField(default='', blank=True, verbose_name=_('Comment'))
class Meta:
unique_together = ('applet', 'provider')

View File

@@ -0,0 +1,31 @@
from django.db import models
from django.utils.translation import gettext_lazy as _
from celery import current_app
from common.db.models import JMSBaseModel
__all__ = ['AppletProvider', 'ProviderDeployment']
class AppletProvider(JMSBaseModel):
name = models.CharField(max_length=128, verbose_name=_('Name'), unique=True)
asset = models.ForeignKey('assets.Asset', on_delete=models.PROTECT, verbose_name=_('Asset'))
comment = models.TextField(default='', blank=True, verbose_name=_('Comment'))
account_automation = models.BooleanField(default=False, verbose_name=_('Account automation'))
date_synced = models.DateTimeField(null=True, blank=True, verbose_name=_('Date synced'))
status = models.CharField(max_length=16, verbose_name=_('Status'))
applets = models.ManyToManyField(
'Applet', verbose_name=_('Applet'),
through='AppletPublication', through_fields=('provider', 'applet'),
)
class ProviderDeployment(JMSBaseModel):
provider = models.ForeignKey('AppletProvider', on_delete=models.CASCADE, verbose_name=_('Provider'))
status = models.CharField(max_length=16, verbose_name=_('Status'))
comment = models.TextField(default='', blank=True, verbose_name=_('Comment'))
def install(self):
pass

View File

@@ -0,0 +1,5 @@
from .terminal import *
from .task import *
from .endpoint import *
from .status import *
from .storage import *

View File

@@ -1,6 +1,7 @@
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.core.validators import MinValueValidator, MaxValueValidator
from common.db.models import JMSBaseModel
from common.db.fields import PortField
from common.utils.ip import contains_ip

View File

@@ -1,22 +1,21 @@
from __future__ import unicode_literals
import copy
import os
from importlib import import_module
import jms_storage
from django.db import models
from django.utils.translation import ugettext_lazy as _
from django.conf import settings
from common.mixins import CommonModelMixin
from common.utils import get_logger
from common.db.fields import EncryptJsonDictTextField
from common.utils.timezone import local_now_date_display
from terminal.backends import TYPE_ENGINE_MAPPING
from .terminal import Terminal
from .command import Command
from .. import const
from ..session.command import Command
from terminal import const
logger = get_logger(__file__)

View File

@@ -9,9 +9,9 @@ from common.utils import get_logger
from users.models import User
from orgs.utils import tmp_to_root_org
from .status import Status
from .. import const
from ..const import ComponentStatusChoices as StatusChoice
from .session import Session
from terminal import const
from terminal.const import ComponentStatusChoices as StatusChoice
from ..session import Session
logger = get_logger(__file__)

View File

@@ -0,0 +1,4 @@
from .command import *
from .session import *
from .replay import *
from .sharing import *

View File

@@ -4,7 +4,7 @@ from django.db import models
from django.db.models.signals import post_save
from django.utils.translation import ugettext_lazy as _
from ..backends.command.models import AbstractSessionCommand
from terminal.backends.command.models import AbstractSessionCommand
class CommandManager(models.Manager):

View File

@@ -16,7 +16,7 @@ from users.models import User
from orgs.mixins.models import OrgModelMixin
from django.db.models import TextChoices
from common.utils import get_object_or_none, lazyproperty
from ..backends import get_multi_command_storage
from terminal.backends import get_multi_command_storage
class Session(OrgModelMixin):