From 7f5c3a36993d738558690212b1b5b507487b587e Mon Sep 17 00:00:00 2001 From: Jennifer Richards Date: Thu, 30 Mar 2023 21:37:46 -0300 Subject: [PATCH] refactor: Remove length limit on Message header fields (#5455) --- ietf/message/migrations/0001_initial.py | 17 +++++++++-------- ietf/message/models.py | 22 +++++++++++++++------- 2 files changed, 24 insertions(+), 15 deletions(-) diff --git a/ietf/message/migrations/0001_initial.py b/ietf/message/migrations/0001_initial.py index 102dba595..108e9d2db 100644 --- a/ietf/message/migrations/0001_initial.py +++ b/ietf/message/migrations/0001_initial.py @@ -1,9 +1,10 @@ -# Generated by Django 2.2.28 on 2023-03-20 19:22 +# Generated by Django 2.2.28 on 2023-03-30 19:14 from django.db import migrations, models import django.db.models.deletion import django.utils.timezone import email.utils +import ietf.message.models import ietf.utils.models @@ -24,15 +25,15 @@ class Migration(migrations.Migration): fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time', models.DateTimeField(default=django.utils.timezone.now)), - ('subject', models.CharField(max_length=255)), - ('frm', models.CharField(max_length=255)), - ('to', models.CharField(max_length=1024)), - ('cc', models.CharField(blank=True, max_length=1024)), - ('bcc', models.CharField(blank=True, max_length=255)), - ('reply_to', models.CharField(blank=True, max_length=255)), + ('subject', ietf.message.models.HeaderField()), + ('frm', ietf.message.models.HeaderField()), + ('to', ietf.message.models.HeaderField()), + ('cc', ietf.message.models.HeaderField(blank=True)), + ('bcc', ietf.message.models.HeaderField(blank=True)), + ('reply_to', ietf.message.models.HeaderField(blank=True)), ('body', models.TextField()), ('content_type', models.CharField(blank=True, default='text/plain', max_length=255)), - ('msgid', models.CharField(blank=True, default=email.utils.make_msgid, max_length=255, null=True)), + ('msgid', ietf.message.models.HeaderField(blank=True, default=email.utils.make_msgid, null=True)), ('sent', models.DateTimeField(blank=True, null=True)), ('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')), ('related_docs', models.ManyToManyField(blank=True, to='doc.Document')), diff --git a/ietf/message/models.py b/ietf/message/models.py index fe2c8d325..dfa23abd4 100644 --- a/ietf/message/models.py +++ b/ietf/message/models.py @@ -4,6 +4,7 @@ import email.utils +from django.forms import TextInput from django.db import models from django.utils import timezone @@ -16,19 +17,26 @@ from ietf.name.models import RoleName from ietf.utils.models import ForeignKey from ietf.utils.mail import get_email_addresses_from_text + +class HeaderField(models.TextField): + """TextField that defaults to a TextInput widget""" + def formfield(self, **kwargs): + return super().formfield(**{'widget': TextInput, **kwargs}) + + class Message(models.Model): time = models.DateTimeField(default=timezone.now) by = ForeignKey(Person) - subject = models.CharField(max_length=255) - frm = models.CharField(max_length=255) - to = models.CharField(max_length=1024) - cc = models.CharField(max_length=1024, blank=True) - bcc = models.CharField(max_length=255, blank=True) - reply_to = models.CharField(max_length=255, blank=True) + subject = HeaderField() + frm = HeaderField() + to = HeaderField() + cc = HeaderField(blank=True) + bcc = HeaderField(blank=True) + reply_to = HeaderField(blank=True) body = models.TextField() content_type = models.CharField(default="text/plain", max_length=255, blank=True) - msgid = models.CharField(max_length=255, blank=True, null=True, default=email.utils.make_msgid) + msgid = HeaderField(blank=True, null=True, default=email.utils.make_msgid) related_groups = models.ManyToManyField(Group, blank=True) related_docs = models.ManyToManyField(Document, blank=True)