Skip to content

Commit 62d20a5

Browse files
authored
Merge pull request #9 from devind-team/6-использование-специфичных-для-postgres-типов
6 использование специфичных для postgres типов
2 parents e4dad91 + bd48e1f commit 62d20a5

3 files changed

Lines changed: 25 additions & 8 deletions

File tree

devind_notifications/migrations/0001_initial.py

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# Generated by Django 3.2.12 on 2022-02-09 23:14
22

3-
import django.contrib.postgres.fields
43
import django.db.models.deletion
54
from django.conf import settings
65
from django.db import migrations, models
@@ -49,11 +48,11 @@ class Migration(migrations.Migration):
4948
name='Mailing',
5049
fields=[
5150
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
52-
('dispatchers', django.contrib.postgres.fields.ArrayField(base_field=models.CharField(max_length=30), default=devind_notifications.models.mailing.default_dispatchers, help_text='Средства отправки', size=None)),
51+
('dispatchers', models.JSONField(default=list, help_text='Массив прикрепленных файлов', null=True)),
5352
('address', models.EmailField(default=devind_notifications.models.mailing.mailing_default_email, help_text='Адрес отправки', max_length=254)),
5453
('header', models.CharField(help_text='Заголовок сообщения', max_length=256)),
5554
('text', models.TextField(help_text='Текст сообщения')),
56-
('attachments', django.contrib.postgres.fields.ArrayField(base_field=models.FileField(help_text='Файлы', max_length=1024, upload_to=devind_notifications.models.mailing.attachments_directory_path), help_text='Массив прикрепленных файлов', null=True, size=None)),
55+
('attachments', models.JSONField(default=devind_notifications.models.mailing.default_dispatchers, help_text='Средства отправки')),
5756
('created_at', models.DateTimeField(auto_now_add=True, help_text='Дата добавления')),
5857
('user', models.ForeignKey(help_text='Пользователь', on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
5958
],
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 3.2.12 on 2022-04-01 08:55
2+
3+
from django.db import migrations
4+
5+
6+
def forward(_, schema_editor): # Чтобы не править руками боевые бд
7+
if schema_editor.connection.vendor.startswith('postgres'):
8+
schema_editor.execute('alter table devind_notifications_mailing alter column dispatchers type jsonb using to_jsonb(dispatchers);')
9+
schema_editor.execute('alter table devind_notifications_mailing alter column attachments type jsonb using to_jsonb(attachments);')
10+
11+
12+
class Migration(migrations.Migration):
13+
14+
dependencies = [
15+
('devind_notifications', '0001_initial'),
16+
]
17+
18+
operations = [
19+
migrations.RunPython(forward, lambda *_: None)
20+
]

devind_notifications/models/mailing.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import importlib
22

33
from django.conf import settings
4-
from django.contrib.postgres.fields import ArrayField
54
from django.db import models
65

76

@@ -43,16 +42,15 @@ class AbstractMailing(models.Model):
4342
- TelegramDispatch - отправка по средства телеграмма
4443
"""
4544

46-
dispatchers = ArrayField(
47-
models.CharField(max_length=30),
45+
dispatchers = models.JSONField(
4846
default=default_dispatchers,
4947
help_text='Средства отправки'
5048
)
5149
address = models.EmailField(default=mailing_default_email, help_text='Адрес отправки')
5250
header = models.CharField(max_length=256, help_text='Заголовок сообщения')
5351
text = models.TextField(help_text='Текст сообщения')
54-
attachments = ArrayField(
55-
models.FileField(upload_to=attachments_directory_path, max_length=1024, help_text='Файлы'),
52+
attachments = models.JSONField(
53+
default=list,
5654
help_text='Массив прикрепленных файлов',
5755
null=True
5856
)

0 commit comments

Comments
 (0)