Files
CyberPanel/websiteFunctions/models.py

64 lines
2.4 KiB
Python
Raw Normal View History

# Add FTP quota models to existing models.py
# Add these models to the existing file
class FTPQuota(models.Model):
"""
FTP User Quota Management
"""
user = models.ForeignKey('loginSystem.Administrator', on_delete=models.CASCADE)
ftp_user = models.CharField(max_length=255, unique=True)
domain = models.ForeignKey(Websites, on_delete=models.CASCADE, null=True, blank=True)
quota_size_mb = models.IntegerField(default=0) # 0 = unlimited
quota_used_mb = models.IntegerField(default=0)
quota_files = models.IntegerField(default=0) # 0 = unlimited
quota_files_used = models.IntegerField(default=0)
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
db_table = 'ftp_quotas'
verbose_name = 'FTP Quota'
verbose_name_plural = 'FTP Quotas'
def __str__(self):
return f"{self.ftp_user} - {self.quota_size_mb}MB"
def get_quota_percentage(self):
"""Calculate quota usage percentage"""
if self.quota_size_mb == 0:
return 0
return (self.quota_used_mb / self.quota_size_mb) * 100
def is_quota_exceeded(self):
"""Check if quota is exceeded"""
if self.quota_size_mb == 0:
return False
return self.quota_used_mb >= self.quota_size_mb
class BandwidthResetLog(models.Model):
"""
Bandwidth Reset Log
"""
RESET_TYPES = [
('manual', 'Manual Reset'),
('scheduled', 'Scheduled Reset'),
('individual', 'Individual Domain Reset'),
]
reset_type = models.CharField(max_length=20, choices=RESET_TYPES)
domain = models.ForeignKey(Websites, on_delete=models.CASCADE, null=True, blank=True)
reset_by = models.ForeignKey('loginSystem.Administrator', on_delete=models.CASCADE)
reset_at = models.DateTimeField(auto_now_add=True)
domains_affected = models.IntegerField(default=0)
bandwidth_reset_mb = models.BigIntegerField(default=0)
notes = models.TextField(blank=True, null=True)
class Meta:
db_table = 'bandwidth_reset_logs'
verbose_name = 'Bandwidth Reset Log'
verbose_name_plural = 'Bandwidth Reset Logs'
ordering = ['-reset_at']
def __str__(self):
return f"{self.reset_type} - {self.domain or 'All Domains'} - {self.reset_at}"