Projet

Général

Profil

0001-models-prevent-too-long-error-on-Origin.slug-54047.patch

Benjamin Dauvergne, 24 août 2021 10:03

Télécharger (2,5 ko)

Voir les différences:

Subject: [PATCH] models: prevent too long error on Origin.slug (#54047)

 .../migrations/0002_auto_20210824_0957.py     | 25 +++++++++++++++++++
 fargo/fargo/models.py                         | 14 ++++++++---
 2 files changed, 36 insertions(+), 3 deletions(-)
 create mode 100644 fargo/fargo/migrations/0002_auto_20210824_0957.py
fargo/fargo/migrations/0002_auto_20210824_0957.py
1
# Generated by Django 2.2.19 on 2021-08-24 07:57
2

  
3
from django.conf import settings
4
from django.db import migrations, models
5

  
6

  
7
class Migration(migrations.Migration):
8

  
9
    dependencies = [
10
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
11
        ('fargo', '0001_squashed_0017_auto_20180331_1532'),
12
    ]
13

  
14
    operations = [
15
        migrations.AlterField(
16
            model_name='origin',
17
            name='label',
18
            field=models.TextField(verbose_name='Label'),
19
        ),
20
        migrations.AlterField(
21
            model_name='origin',
22
            name='slug',
23
            field=models.SlugField(max_length=256, verbose_name='Slug'),
24
        ),
25
    ]
fargo/fargo/models.py
16 16
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
17 17

  
18 18
import base64
19
import hashlib
19 20
import subprocess
20 21
import os
21 22
import re
......
42 43
from . import utils, managers
43 44

  
44 45

  
46
def slug_truncate(label, length=256):
47
    slug = slugify(label)
48
    if len(slug) < length:
49
        return slug
50
    return slug[:length - 5] + '-%4s' % hashlib.md5(label.encode()).hexdigest()[:4]
51

  
52

  
45 53
@python_2_unicode_compatible
46 54
class Origin(models.Model):
47
    label = models.CharField(_('Label'), max_length=80)
48
    slug = models.SlugField(_('Slug'))
55
    label = models.TextField(_('Label'))
56
    slug = models.SlugField(_('Slug'), max_length=256)
49 57

  
50 58
    def save(self, *args, **kwargs):
51 59
        if not self.slug:
52
            self.slug = slugify(self.label)
60
            self.slug = slug_truncate(self.label)
53 61
        return super(Origin, self).save(*args, **kwargs)
54 62

  
55 63
    def __str__(self):
56
-