academon/core/models/replication.py
2022-09-26 14:27:52 +00:00

49 lines
1.5 KiB
Python

from django.db import models
from contentmonster.classes.directory import Directory
from contentmonster.classes.vessel import Vessel
from ..validators import validate_directory
from getpass import getuser
import uuid
class ReplicationSource(models.Model):
"""Represents Directory objects in ContentMonster"""
name = models.CharField(max_length=128)
location = models.CharField(max_length=2048, validators=[validate_directory])
def to_directory(self) -> Directory:
return Directory(name, location)
class ReplicationTarget(models.Model):
"""Represents Vessel objects in ContentMonster"""
name = models.CharField(max_length=128)
address = models.CharField(max_length=256)
username = models.CharField(max_length=64, default=getuser(), null=True, blank=True)
monitor = models.BooleanField(default=True)
def to_vessel(self, dbclass=None) -> Vessel:
return Vessel(name, address, username, dbclass=ContentMonsterDatabase)
class ReplicationFile(models.Model):
"""Represents File objects in ContentMonster"""
uuid = models.UUIDField(primary_key=True, default=uuid.uuid4)
directory = models.ForeignKey(ReplicationSource, models.CASCADE)
name = models.CharField(max_length=128)
checksum = models.CharField(max_length=64)
class ReplicationFileLog(models.Model):
"""Represents File completion in ContentMonster"""
file = models.ForeignKey(ReplicationFile, models.CASCADE)
vessel = models.ForeignKey(ReplicationTarget, models.CASCADE)
timestamp = models.DateTimeField(auto_now_add=True)