68 lines
2.1 KiB
Python
68 lines
2.1 KiB
Python
import logging
|
|
import re
|
|
|
|
from django.contrib.auth.models import Group, Permission
|
|
from django.utils.translation import gettext
|
|
from rest_framework import serializers
|
|
|
|
from assets.models.assets import Asset
|
|
from console.models import (Connection)
|
|
from core.serializers import ModelLocalizedSerializer, DateTimeLocalizedField
|
|
|
|
RE_GROUPNAME = re.compile('[@+!#$%^&*()<>?/|}{~:]')
|
|
logger_info = logging.getLogger('console.user.info')
|
|
_log = logging.getLogger()
|
|
|
|
|
|
class AllPermsSerializer(ModelLocalizedSerializer):
|
|
name = serializers.SerializerMethodField('get_name')
|
|
|
|
class Meta:
|
|
model = Permission
|
|
fields = ['codename', 'name', 'content_type']
|
|
|
|
def get_name(self, obj):
|
|
return gettext(obj.name)
|
|
|
|
|
|
class GroupNameSerializer(ModelLocalizedSerializer):
|
|
class Meta:
|
|
model = Group
|
|
fields = ['name']
|
|
|
|
def validate_name(self, value):
|
|
""" Method for validating the name, which was passed to the serializer
|
|
@param value: name from the serializer (pass through: serializer.data)
|
|
@return: name of the group
|
|
"""
|
|
# Check for special symbols in group name
|
|
if RE_GROUPNAME.search(value) is not None:
|
|
raise serializers.ValidationError(gettext('Incorrect group name format. Try another'))
|
|
|
|
return value
|
|
|
|
|
|
class CelerySerializer(serializers.Serializer):
|
|
task_id = serializers.UUIDField()
|
|
finished = serializers.BooleanField(required=False)
|
|
result = serializers.IntegerField(required=False)
|
|
|
|
|
|
# Network map serializers for ConnectionInfoSerializer
|
|
# Asset connection info serializer
|
|
class ConnectionAssetInfoSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = Asset
|
|
fields = ['pk', 'name', 'ip']
|
|
|
|
|
|
# Connection serializer
|
|
class ConnectionSerializer(serializers.ModelSerializer):
|
|
src_asset = ConnectionAssetInfoSerializer()
|
|
dst_asset = ConnectionAssetInfoSerializer()
|
|
updated = DateTimeLocalizedField()
|
|
created = DateTimeLocalizedField()
|
|
|
|
class Meta:
|
|
model = Connection
|
|
fields = ['src_asset', 'dst_asset', 'connection_protocol', 'created', 'updated']
|