index.community/scraper/models.py

36 lines
1.3 KiB
Python
Raw Normal View History

2018-08-26 00:32:55 +00:00
from django.db import models
class Instance(models.Model):
"""
The main model that saves details of an instance and links between them in the peers
property.
Don't change the schema without verifying that the gephi script can still read the data.
"""
2018-08-29 17:58:06 +00:00
# Primary key
2018-08-26 01:17:10 +00:00
name = models.CharField(max_length=200, primary_key=True)
2018-08-26 00:32:55 +00:00
2018-08-29 17:58:06 +00:00
# Details
2018-08-29 18:04:03 +00:00
description = models.TextField(blank=True)
2018-08-28 22:22:29 +00:00
domain_count = models.IntegerField(blank=True, null=True)
status_count = models.IntegerField(blank=True, null=True)
user_count = models.IntegerField(blank=True, null=True)
version = models.CharField(max_length=1000, blank=True) # In Django CharField is never stored as NULL in the db
2018-08-26 00:32:55 +00:00
status = models.CharField(max_length=100)
2018-08-29 17:58:06 +00:00
# Foreign keys
2018-09-01 17:24:05 +00:00
peers = models.ManyToManyField('self', symmetrical=False, through='PeerRelationship')
2018-08-29 17:58:06 +00:00
# Automatic fields
first_seen = models.DateTimeField(auto_now_add=True)
last_updated = models.DateTimeField(auto_now=True)
class PeerRelationship(models.Model):
source = models.ForeignKey(Instance, related_name="following_relationship", on_delete=models.CASCADE)
target = models.ForeignKey(Instance, related_name="follower_relationships", on_delete=models.CASCADE)
# Metadata
first_seen = models.DateTimeField(auto_now_add=True)