jumpserver/apps/accounts/serializers/automations/backup.py

59 lines
2.1 KiB
Python

# -*- coding: utf-8 -*-
#
from django.conf import settings
from django.utils.translation import gettext_lazy as _
from accounts.const import AutomationTypes, AccountBackupType
from accounts.models import BackupAccountAutomation
from common.serializers.fields import EncryptedField
from common.utils import get_logger
from .base import BaseAutomationSerializer
logger = get_logger(__file__)
__all__ = ['BackupAccountSerializer']
class BackupAccountSerializer(BaseAutomationSerializer):
zip_encrypt_password = EncryptedField(
label=_('Zip Encrypt Password'), required=False, max_length=40960, allow_blank=True,
allow_null=True, write_only=True,
)
class Meta:
model = BackupAccountAutomation
read_only_fields = BaseAutomationSerializer.Meta.read_only_fields
fields = BaseAutomationSerializer.Meta.fields + read_only_fields + [
'types', 'recipients_part_one', 'recipients_part_two', 'backup_type',
'is_password_divided_by_email', 'is_password_divided_by_obj_storage',
'obj_recipients_part_one', 'obj_recipients_part_two', 'zip_encrypt_password'
]
extra_kwargs = {
**BaseAutomationSerializer.Meta.extra_kwargs,
'name': {'required': True},
'obj_recipients_part_one': {
'label': _('Recipient part one'), 'help_text': _(
"Currently only mail sending is supported"
)},
'obj_recipients_part_two': {
'label': _('Recipient part two'), 'help_text': _(
"Currently only mail sending is supported"
)},
'types': {'label': _('Asset type')}
}
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.set_backup_type_choices()
def set_backup_type_choices(self):
field_backup_type = self.fields.get("backup_type")
if not field_backup_type:
return
if not settings.XPACK_LICENSE_IS_VALID:
field_backup_type._choices.pop(AccountBackupType.object_storage, None)
@property
def model_type(self):
return AutomationTypes.backup_account