mirror of
https://github.com/usmannasir/cyberpanel.git
synced 2025-12-15 12:59:42 +01:00
Fix migration: use raw SQL for tables since existing models lack migrations
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
# Generated migration for email filtering features
|
||||
# Uses raw SQL since existing email models weren't created via Django migrations
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
@@ -12,69 +12,50 @@ class Migration(migrations.Migration):
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='CatchAllEmail',
|
||||
fields=[
|
||||
('domain', models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to='mailServer.Domains'
|
||||
)),
|
||||
('destination', models.CharField(max_length=255)),
|
||||
('enabled', models.BooleanField(default=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'e_catchall',
|
||||
},
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
CREATE TABLE IF NOT EXISTS `e_catchall` (
|
||||
`domain_id` varchar(50) NOT NULL PRIMARY KEY,
|
||||
`destination` varchar(255) NOT NULL,
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
||||
CONSTRAINT `fk_catchall_domain` FOREIGN KEY (`domain_id`) REFERENCES `e_domains` (`domain`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
""",
|
||||
reverse_sql="DROP TABLE IF EXISTS `e_catchall`;"
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='EmailServerSettings',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('plus_addressing_enabled', models.BooleanField(default=False)),
|
||||
('plus_addressing_delimiter', models.CharField(default='+', max_length=1)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'e_server_settings',
|
||||
},
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
CREATE TABLE IF NOT EXISTS `e_server_settings` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
`plus_addressing_enabled` tinyint(1) NOT NULL DEFAULT 0,
|
||||
`plus_addressing_delimiter` varchar(1) NOT NULL DEFAULT '+'
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
""",
|
||||
reverse_sql="DROP TABLE IF EXISTS `e_server_settings`;"
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PlusAddressingOverride',
|
||||
fields=[
|
||||
('domain', models.OneToOneField(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
primary_key=True,
|
||||
serialize=False,
|
||||
to='mailServer.Domains'
|
||||
)),
|
||||
('enabled', models.BooleanField(default=True)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'e_plus_override',
|
||||
},
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
CREATE TABLE IF NOT EXISTS `e_plus_override` (
|
||||
`domain_id` varchar(50) NOT NULL PRIMARY KEY,
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
||||
CONSTRAINT `fk_plus_override_domain` FOREIGN KEY (`domain_id`) REFERENCES `e_domains` (`domain`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
""",
|
||||
reverse_sql="DROP TABLE IF EXISTS `e_plus_override`;"
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PatternForwarding',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('pattern', models.CharField(max_length=255)),
|
||||
('destination', models.CharField(max_length=255)),
|
||||
('pattern_type', models.CharField(
|
||||
choices=[('wildcard', 'Wildcard'), ('regex', 'Regular Expression')],
|
||||
default='wildcard',
|
||||
max_length=20
|
||||
)),
|
||||
('priority', models.IntegerField(default=100)),
|
||||
('enabled', models.BooleanField(default=True)),
|
||||
('domain', models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to='mailServer.Domains'
|
||||
)),
|
||||
],
|
||||
options={
|
||||
'db_table': 'e_pattern_forwarding',
|
||||
'ordering': ['priority'],
|
||||
},
|
||||
migrations.RunSQL(
|
||||
sql="""
|
||||
CREATE TABLE IF NOT EXISTS `e_pattern_forwarding` (
|
||||
`id` int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
|
||||
`domain_id` varchar(50) NOT NULL,
|
||||
`pattern` varchar(255) NOT NULL,
|
||||
`destination` varchar(255) NOT NULL,
|
||||
`pattern_type` varchar(20) NOT NULL DEFAULT 'wildcard',
|
||||
`priority` int(11) NOT NULL DEFAULT 100,
|
||||
`enabled` tinyint(1) NOT NULL DEFAULT 1,
|
||||
CONSTRAINT `fk_pattern_domain` FOREIGN KEY (`domain_id`) REFERENCES `e_domains` (`domain`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||
""",
|
||||
reverse_sql="DROP TABLE IF EXISTS `e_pattern_forwarding`;"
|
||||
),
|
||||
]
|
||||
|
||||
@@ -56,12 +56,13 @@ class Pipeprograms(models.Model):
|
||||
|
||||
class CatchAllEmail(models.Model):
|
||||
"""Stores catch-all email configuration per domain"""
|
||||
domain = models.OneToOneField(Domains, on_delete=models.CASCADE, primary_key=True)
|
||||
domain = models.OneToOneField(Domains, on_delete=models.CASCADE, primary_key=True, db_column='domain_id')
|
||||
destination = models.CharField(max_length=255)
|
||||
enabled = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'e_catchall'
|
||||
managed = False
|
||||
|
||||
|
||||
class EmailServerSettings(models.Model):
|
||||
@@ -71,6 +72,7 @@ class EmailServerSettings(models.Model):
|
||||
|
||||
class Meta:
|
||||
db_table = 'e_server_settings'
|
||||
managed = False
|
||||
|
||||
@classmethod
|
||||
def get_settings(cls):
|
||||
@@ -80,11 +82,12 @@ class EmailServerSettings(models.Model):
|
||||
|
||||
class PlusAddressingOverride(models.Model):
|
||||
"""Per-domain plus-addressing override"""
|
||||
domain = models.OneToOneField(Domains, on_delete=models.CASCADE, primary_key=True)
|
||||
domain = models.OneToOneField(Domains, on_delete=models.CASCADE, primary_key=True, db_column='domain_id')
|
||||
enabled = models.BooleanField(default=True)
|
||||
|
||||
class Meta:
|
||||
db_table = 'e_plus_override'
|
||||
managed = False
|
||||
|
||||
|
||||
class PatternForwarding(models.Model):
|
||||
@@ -94,7 +97,7 @@ class PatternForwarding(models.Model):
|
||||
('regex', 'Regular Expression'),
|
||||
]
|
||||
|
||||
domain = models.ForeignKey(Domains, on_delete=models.CASCADE)
|
||||
domain = models.ForeignKey(Domains, on_delete=models.CASCADE, db_column='domain_id')
|
||||
pattern = models.CharField(max_length=255)
|
||||
destination = models.CharField(max_length=255)
|
||||
pattern_type = models.CharField(max_length=20, choices=PATTERN_TYPES, default='wildcard')
|
||||
@@ -103,4 +106,5 @@ class PatternForwarding(models.Model):
|
||||
|
||||
class Meta:
|
||||
db_table = 'e_pattern_forwarding'
|
||||
managed = False
|
||||
ordering = ['priority']
|
||||
Reference in New Issue
Block a user