82 lines
3.7 KiB
Python
82 lines
3.7 KiB
Python
from django.utils.translation import gettext_lazy
|
|
from rest_framework import serializers
|
|
|
|
from assets.models.assets import Asset
|
|
from dashboard.models import DashboardLayout
|
|
from incident.models import Incident, IncidentCategory
|
|
from networkmap.api import DANGER_STATUSES
|
|
|
|
|
|
class DashboardSerializer(serializers.ModelSerializer):
|
|
class Meta:
|
|
model = DashboardLayout
|
|
fields = '__all__'
|
|
|
|
|
|
class TopIdsEventsSerializer(serializers.Serializer):
|
|
top_ids_events = serializers.ListField(label=gettext_lazy("List of top 10 IDS events"))
|
|
|
|
|
|
class SystemInfoSerializer(serializers.Serializer):
|
|
""" System information widget data serializer """
|
|
machine_name = serializers.CharField(label=gettext_lazy('Machine name'))
|
|
operating_system = serializers.CharField(label=gettext_lazy('OS'))
|
|
cpu_model = serializers.CharField(label=gettext_lazy('CPU model name'))
|
|
total_cpu = serializers.FloatField(label=gettext_lazy('Total CPU usage'))
|
|
machine_uptime = serializers.CharField(label=gettext_lazy('Current machine work time'))
|
|
server_time = serializers.CharField(label=gettext_lazy('Server time'))
|
|
mem_total = serializers.IntegerField(label=gettext_lazy('Total memory (MB)'))
|
|
mem_used = serializers.IntegerField(label=gettext_lazy('Used memory (MB)'))
|
|
disk_total = serializers.IntegerField(label=gettext_lazy('Disk total space (GB)'))
|
|
disk_free = serializers.IntegerField(label=gettext_lazy('Disk free space (GB)'))
|
|
disk_used = serializers.IntegerField(label=gettext_lazy('Disk used space (GB)'))
|
|
console_version = serializers.CharField(label=gettext_lazy('Console version'))
|
|
description = serializers.CharField(label=gettext_lazy('Machine description'))
|
|
lc_info = serializers.CharField(label=gettext_lazy('License'))
|
|
|
|
|
|
class SerivcesWidgetSerializer(serializers.Serializer):
|
|
user = serializers.CharField(label=gettext_lazy('User'))
|
|
command = serializers.CharField(label=gettext_lazy('Command'))
|
|
cpu = serializers.CharField(label=gettext_lazy('CPU (%)'))
|
|
|
|
|
|
class OpenedIncidentsSerializer(serializers.Serializer):
|
|
inc_count = serializers.IntegerField()
|
|
|
|
|
|
class IncidentsByImportanceSerializer(serializers.Serializer):
|
|
importance_none = serializers.IntegerField(label=gettext_lazy('Incidents with None importance'))
|
|
importance_info = serializers.IntegerField(label=gettext_lazy('Incidents with Info importance'))
|
|
importance_low = serializers.IntegerField(label=gettext_lazy('Incidents with Low importance'))
|
|
importance_medium = serializers.IntegerField(label=gettext_lazy('Incidents with Medium importance'))
|
|
importance_high = serializers.IntegerField(label=gettext_lazy('Incidents with High importance'))
|
|
importance_critical = serializers.IntegerField(label=gettext_lazy('Incidents with Critical importance'))
|
|
|
|
|
|
class IncidentsByCategorySerializer(serializers.ModelSerializer):
|
|
inc_count = serializers.SerializerMethodField('get_inc_count')
|
|
|
|
def get_inc_count(self, obj):
|
|
return Incident.objects.filter(category=obj.pk).count()
|
|
|
|
class Meta:
|
|
model = IncidentCategory
|
|
fields = ['name', 'inc_count']
|
|
|
|
|
|
class AssetsByIncidentsSerializer(serializers.ModelSerializer):
|
|
""" Serializer for assets by incs widget """
|
|
inc_count = serializers.SerializerMethodField('get_inc_count')
|
|
|
|
def get_inc_count(self, obj):
|
|
""" Method for counting incidents of the asset, excluding incs with RESOLVED status
|
|
:param obj: asset object
|
|
:return: sum of asset incidents
|
|
"""
|
|
asset_incs = Asset.objects.get(pk=obj.pk).incidents
|
|
return asset_incs.filter(status__in=DANGER_STATUSES).count()
|
|
|
|
class Meta:
|
|
model = Asset
|
|
fields = ['name', 'inc_count']
|