From ea3f74b0b94246eb4231baa683096cf3a3012773 Mon Sep 17 00:00:00 2001 From: usmannasir Date: Sat, 27 Sep 2025 13:09:20 +0500 Subject: [PATCH] add missing models to website.py --- websiteFunctions/models.py | 211 ++++++++++++++++++++++++++++++++++++- 1 file changed, 207 insertions(+), 4 deletions(-) diff --git a/websiteFunctions/models.py b/websiteFunctions/models.py index 479f93ecb..05cf4ded4 100644 --- a/websiteFunctions/models.py +++ b/websiteFunctions/models.py @@ -1,6 +1,5 @@ -# Add FTP quota models to existing models.py - -# Add these models to the existing file +from django.db import models +from .models import Websites class FTPQuota(models.Model): """ FTP User Quota Management @@ -61,4 +60,208 @@ class BandwidthResetLog(models.Model): ordering = ['-reset_at'] def __str__(self): - return f"{self.reset_type} - {self.domain or 'All Domains'} - {self.reset_at}" \ No newline at end of file + return f"{self.reset_type} - {self.domain or 'All Domains'} - {self.reset_at}" + +# -*- coding: utf-8 -*- + + +from django.db import models +from packages.models import Package +from loginSystem.models import Administrator +from datetime import datetime + +# Create your models here. + +class Websites(models.Model): + admin = models.ForeignKey(Administrator, on_delete=models.PROTECT) + package = models.ForeignKey(Package, on_delete=models.PROTECT) + domain = models.CharField(max_length=255,unique=True) + adminEmail = models.CharField(max_length=255) + phpSelection = models.CharField(max_length=10) + ssl = models.IntegerField() + state = models.IntegerField(default=1) + externalApp = models.CharField(max_length=30, default=None) + config = models.TextField(default='') + BackupLock = models.IntegerField(default=0) + + +class ChildDomains(models.Model): + master = models.ForeignKey(Websites,on_delete=models.CASCADE) + domain = models.CharField(max_length=50, unique=True) + path = models.CharField(max_length=200,default=None) + ssl = models.IntegerField() + phpSelection = models.CharField(max_length=10,default=None) + alais = models.IntegerField(default=0) + + +class Backups(models.Model): + website = models.ForeignKey(Websites,on_delete=models.CASCADE) + fileName = models.CharField(max_length=200) + date = models.CharField(max_length=50) + size = models.CharField(max_length=50) + status = models.IntegerField(default=0) + +class dest(models.Model): + destLoc = models.CharField(unique=True,max_length=18) + +class backupSchedules(models.Model): + dest = models.ForeignKey(dest, on_delete=models.CASCADE) + frequency = models.CharField(max_length=15) + +class aliasDomains(models.Model): + master = models.ForeignKey(Websites, on_delete=models.CASCADE) + aliasDomain = models.CharField(max_length=75) + +class GitLogs(models.Model): + owner = models.ForeignKey(Websites, on_delete=models.CASCADE) + date = models.DateTimeField(default=datetime.now, blank=True) + type = models.CharField(max_length=5) + message = models.TextField(max_length=65532) + +class BackupJob(models.Model): + logFile = models.CharField(max_length=1000) + ipAddress = models.CharField(max_length=50) + port = models.CharField(max_length=15) + jobSuccessSites = models.IntegerField() + jobFailedSites = models.IntegerField() + location = models.IntegerField() + +class BackupJobLogs(models.Model): + owner = models.ForeignKey(BackupJob, on_delete=models.CASCADE) + status = models.IntegerField() + message = models.TextField() + +class GDrive(models.Model): + owner = models.ForeignKey(Administrator, on_delete=models.CASCADE) + name = models.CharField(max_length=50, unique=True) + auth = models.TextField(max_length=65532, default='Inactive') + runTime = models.CharField(max_length=20, default='NEVER') + +class GDriveSites(models.Model): + owner = models.ForeignKey(GDrive, on_delete=models.CASCADE) + domain = models.CharField(max_length=200) + +class GDriveJobLogs(models.Model): + owner = models.ForeignKey(GDrive, on_delete=models.CASCADE) + status = models.IntegerField() + message = models.TextField() + + +### Normal backup models + +class NormalBackupDests(models.Model): + name = models.CharField(max_length=25) + config = models.TextField() + +class NormalBackupJobs(models.Model): + owner = models.ForeignKey(NormalBackupDests, on_delete=models.CASCADE) + name = models.CharField(max_length=25) + config = models.TextField() + +class NormalBackupSites(models.Model): + owner = models.ForeignKey(NormalBackupJobs, on_delete=models.CASCADE) + domain = models.ForeignKey(Websites, on_delete=models.CASCADE) + +class NormalBackupJobLogs(models.Model): + owner = models.ForeignKey(NormalBackupJobs, on_delete=models.CASCADE) + status = models.IntegerField() + message = models.TextField() + +class wpplugins(models.Model): + owner = models.ForeignKey(Administrator, on_delete=models.CASCADE) + Name = models.CharField(max_length=255, default='') + config = models.TextField() + +class WPSites(models.Model): + owner = models.ForeignKey(Websites, on_delete=models.CASCADE) + title = models.CharField(max_length=255, default='') + path = models.CharField(max_length=255, default='') + FinalURL = models.CharField(max_length=255, default='') + AutoUpdates = models.CharField(max_length=100, default='Disabled') + PluginUpdates = models.CharField(max_length=15, default='Disabled') + ThemeUpdates = models.CharField(max_length=15, default='Disabled') + date = models.DateTimeField(default=datetime.now) + WPLockState = models.IntegerField(default=1) + +class WPStaging(models.Model): + owner = models.ForeignKey(WPSites, on_delete=models.CASCADE) + wpsite = models.ForeignKey(WPSites, on_delete=models.CASCADE, related_name='actual_wpsite') + +class WPSitesBackup(models.Model): + owner = models.ForeignKey(Administrator, on_delete=models.CASCADE) + WPSiteID = models.IntegerField(default=-1) + WebsiteID = models.IntegerField(default=-1) + config = models.TextField() + +class RemoteBackupConfig(models.Model): + owner = models.ForeignKey(Administrator, on_delete=models.CASCADE) + configtype = models.CharField(max_length=255, default='') + config = models.TextField() + +class RemoteBackupSchedule(models.Model): + RemoteBackupConfig = models.ForeignKey(RemoteBackupConfig, on_delete=models.CASCADE) + Name = models.CharField(max_length=255, default='') + timeintervel = models.CharField(max_length=200) + fileretention = models.CharField(max_length=200) + lastrun = models.CharField(max_length=200) + config = models.TextField() + +class RemoteBackupsites(models.Model): + owner = models.ForeignKey(RemoteBackupSchedule, on_delete=models.CASCADE) + WPsites = models.IntegerField(null=True) + database = models.IntegerField(null=True) + +import time + +class Backupsv2(models.Model): + website = models.ForeignKey(Websites, on_delete=models.CASCADE) + fileName = models.CharField(max_length=255) + status = models.IntegerField(default=0) + timeStamp = models.CharField(max_length=255, default=str(time.time())) + BasePath = models.TextField(default='') + +class BackupsLogsv2(models.Model): + owner = models.ForeignKey(Backupsv2, on_delete=models.CASCADE) + timeStamp = models.CharField(max_length=255, default=str(time.time())) + message = models.TextField(default='') + + +# Takes +# ComposePath, MySQLPath, MySQLRootPass, MySQLDBName, MySQLDBNUser, MySQLPassword, CPUsMySQL, MemoryMySQL, +# port, SitePath, CPUsSite, MemorySite, SiteName +# finalURL, blogTitle, adminUser, adminPassword, adminEmail + +### Site Type 0=wp, further tbd later + +class DockerSites(models.Model): + admin = models.ForeignKey(Websites, on_delete=models.CASCADE) + ComposePath = models.TextField() + SitePath = models.TextField() + MySQLPath = models.TextField() + state = models.IntegerField(default=1) + SiteType = models.IntegerField(default=0) ## WP, Joomla etc + MySQLDBName = models.CharField(max_length=100) + MySQLDBNUser = models.CharField(max_length=100) + CPUsMySQL = models.CharField(max_length=100) + MemoryMySQL = models.CharField(max_length=100) + port = models.CharField(max_length=100) + CPUsSite = models.CharField(max_length=100) + MemorySite = models.CharField(max_length=100) + SiteName = models.CharField(unique=True, max_length=255) + finalURL = models.TextField() + blogTitle = models.TextField() + adminUser = models.CharField(max_length=100) + adminEmail = models.CharField(max_length=100) + +class DockerPackages(models.Model): + Name = models.CharField(max_length=100, default='') + CPUs = models.IntegerField() + Ram = models.IntegerField() + Bandwidth = models.TextField() + DiskSpace = models.TextField() + config = models.TextField() + + +class PackageAssignment(models.Model): + user = models.ForeignKey(Administrator, on_delete=models.CASCADE) + package = models.ForeignKey(DockerPackages, on_delete=models.CASCADE) \ No newline at end of file