33 lines
1007 B
Python
33 lines
1007 B
Python
|
import json
|
||
|
|
||
|
from rest_framework import serializers
|
||
|
|
||
|
from bgpdata.models import CrawlRun, ASLastSeen
|
||
|
|
||
|
|
||
|
class CrawlRunSerializer(serializers.ModelSerializer):
|
||
|
graph = serializers.ReadOnlyField()
|
||
|
|
||
|
class Meta:
|
||
|
model = CrawlRun
|
||
|
fields = ('id', 'startTime', 'endTime', 'asCount', 'asOnlineCount', 'asOfflineCount', 'peeringCount', 'graph')
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
if "with_graph" not in self.context['request'].query_params:
|
||
|
self.fields.pop("graph")
|
||
|
|
||
|
def to_representation(self, instance):
|
||
|
data = super().to_representation(instance)
|
||
|
for elem in data:
|
||
|
if "graph" in data and isinstance(data['graph'], str):
|
||
|
data['graph'] = json.loads(data['graph'])
|
||
|
return data
|
||
|
|
||
|
|
||
|
class ASLastSeenSerializer(serializers.ModelSerializer):
|
||
|
class Meta:
|
||
|
model = ASLastSeen
|
||
|
fields = ('id', 'asn', 'directlyCrawled', 'online', 'lastSeen', 'crawlLastSeen')
|