Projet

Général

Profil

0001-dj2-add-explicit-on_delete-on-all-ForeignKey-36895.patch

Lauréline Guérin, 14 octobre 2019 14:30

Télécharger (51 ko)

Voir les différences:

Subject: [PATCH 1/5] dj2: add explicit on_delete on all ForeignKey (#36895)

remove RemovedInDjango20Warning:
on_delete will be a required arg for ForeignKey in Django 2.0.
Set it to models.CASCADE on models and in existing migrations if you want to maintain the current default behavior.
See https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.on_delete
 combo/apps/calendar/migrations/0001_initial.py    |  2 +-
 combo/apps/dashboard/migrations/0001_initial.py   |  8 ++++----
 combo/apps/dashboard/models.py                    |  6 +++---
 combo/apps/dataviz/migrations/0001_initial.py     |  2 +-
 .../migrations/0003_cubesbarchart_cubestable.py   |  4 ++--
 combo/apps/dataviz/migrations/0006_chartcell.py   |  2 +-
 combo/apps/family/migrations/0001_initial.py      |  2 +-
 combo/apps/fargo/migrations/0001_initial.py       |  2 +-
 combo/apps/gallery/migrations/0001_initial.py     |  4 ++--
 combo/apps/gallery/models.py                      |  2 +-
 combo/apps/lingo/migrations/0001_initial.py       |  6 +++---
 .../lingo/migrations/0005_auto_20150307_1242.py   |  4 ++--
 .../lingo/migrations/0007_lingobasketlinkcell.py  |  2 +-
 .../lingo/migrations/0008_auto_20150908_1538.py   |  4 ++--
 .../lingo/migrations/0009_auto_20150917_1456.py   |  4 ++--
 .../lingo/migrations/0021_transactionoperation.py |  2 +-
 .../migrations/0024_selfdeclaredinvoicepayment.py |  2 +-
 .../lingo/migrations/0025_auto_20161206_1713.py   |  2 +-
 .../lingo/migrations/0028_tipipaymentformcell.py  |  2 +-
 combo/apps/lingo/models.py                        | 10 +++++-----
 combo/apps/maps/migrations/0002_map.py            |  2 +-
 combo/apps/newsletters/migrations/0001_initial.py |  2 +-
 .../apps/notifications/migrations/0001_initial.py |  4 ++--
 combo/apps/pwa/models.py                          |  5 +++--
 combo/apps/search/migrations/0001_initial.py      |  2 +-
 combo/apps/usersearch/migrations/0001_initial.py  |  2 +-
 combo/apps/wcs/migrations/0001_initial.py         | 12 ++++++------
 combo/apps/wcs/migrations/0006_categoriescell.py  |  2 +-
 .../wcs/migrations/0007_trackingcodeinputcell.py  |  2 +-
 combo/data/migrations/0001_initial.py             | 10 +++++-----
 combo/data/migrations/0003_menucell.py            |  2 +-
 combo/data/migrations/0006_linkcell.py            |  2 +-
 combo/data/migrations/0007_auto_20150529_1003.py  |  2 +-
 combo/data/migrations/0008_auto_20150529_1504.py  |  2 +-
 combo/data/migrations/0009_auto_20150529_2247.py  |  2 +-
 combo/data/migrations/0010_feedcell.py            |  2 +-
 combo/data/migrations/0013_parameterscell.py      |  2 +-
 combo/data/migrations/0017_menucell_root_page.py  |  2 +-
 combo/data/migrations/0018_parentcontentcell.py   |  2 +-
 combo/data/migrations/0021_jsoncell.py            |  2 +-
 combo/data/migrations/0024_configjsoncell.py      |  2 +-
 combo/data/models.py                              | 15 ++++++++-------
 combo/profile/migrations/0001_initial.py          |  2 +-
 combo/profile/models.py                           |  2 +-
 44 files changed, 79 insertions(+), 77 deletions(-)
combo/apps/calendar/migrations/0001_initial.py
30 30
                ('slot_duration', models.DurationField(default=datetime.timedelta(0, 1800), help_text='Format is hours:minutes:seconds', verbose_name='Slot duration')),
31 31
                ('minimal_booking_duration', models.DurationField(default=datetime.timedelta(0, 3600), help_text='Format is hours:minutes:seconds', verbose_name='Minimal booking duration')),
32 32
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
33
                ('page', models.ForeignKey(to='data.Page')),
33
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
34 34
            ],
35 35
            options={
36 36
                'verbose_name': 'Booking Calendar',
combo/apps/dashboard/migrations/0001_initial.py
27 27
                ('restricted_to_unlogged', models.BooleanField(default=False, verbose_name='Restrict to unlogged users')),
28 28
                ('last_update_timestamp', models.DateTimeField(auto_now=True)),
29 29
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
30
                ('page', models.ForeignKey(to='data.Page')),
30
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
31 31
            ],
32 32
            options={
33 33
                'verbose_name': 'Dashboard',
......
39 39
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
40 40
                ('cell_pk', models.PositiveIntegerField()),
41 41
                ('order', models.PositiveIntegerField()),
42
                ('cell_type', models.ForeignKey(to='contenttypes.ContentType')),
43
                ('dashboard', models.ForeignKey(to='dashboard.DashboardCell')),
44
                ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
42
                ('cell_type', models.ForeignKey(to='contenttypes.ContentType', on_delete=models.CASCADE)),
43
                ('dashboard', models.ForeignKey(to='dashboard.DashboardCell', on_delete=models.CASCADE)),
44
                ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
45 45
            ],
46 46
            options={
47 47
                'ordering': ('order',),
combo/apps/dashboard/models.py
50 50

  
51 51

  
52 52
class Tile(models.Model):
53
    dashboard = models.ForeignKey(DashboardCell)
54
    cell_type = models.ForeignKey(ContentType)
53
    dashboard = models.ForeignKey(DashboardCell, on_delete=models.CASCADE)
54
    cell_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
55 55
    cell_pk = models.PositiveIntegerField()
56 56
    cell = fields.GenericForeignKey('cell_type', 'cell_pk')
57
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
57
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
58 58
    order = models.IntegerField()
59 59

  
60 60
    class Meta:
combo/apps/dataviz/migrations/0001_initial.py
26 26
                ('data_source', models.CharField(max_length=150, null=True, verbose_name='Data Source', blank=True)),
27 27
                ('max_value', models.PositiveIntegerField(null=True, verbose_name='Max Value', blank=True)),
28 28
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
29
                ('page', models.ForeignKey(to='data.Page')),
29
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
30 30
            ],
31 31
            options={
32 32
                'verbose_name': 'Gauge',
combo/apps/dataviz/migrations/0003_cubesbarchart_cubestable.py
30 30
                ('drilldown2', models.CharField(max_length=64, null=True, verbose_name='Drilldown 2', blank=True)),
31 31
                ('other_parameters', models.TextField(null=True, verbose_name='Other parameters', blank=True)),
32 32
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
33
                ('page', models.ForeignKey(to='data.Page')),
33
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
34 34
            ],
35 35
            options={
36 36
                'verbose_name': 'Cubes Barchart',
......
54 54
                ('drilldown2', models.CharField(max_length=64, null=True, verbose_name='Drilldown 2', blank=True)),
55 55
                ('other_parameters', models.TextField(null=True, verbose_name='Other parameters', blank=True)),
56 56
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
57
                ('page', models.ForeignKey(to='data.Page')),
57
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
58 58
            ],
59 59
            options={
60 60
                'verbose_name': 'Cubes Table',
combo/apps/dataviz/migrations/0006_chartcell.py
25 25
                ('title', models.CharField(max_length=150, null=True, verbose_name='Title', blank=True)),
26 26
                ('url', models.URLField(max_length=150, null=True, verbose_name='URL', blank=True)),
27 27
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
28
                ('page', models.ForeignKey(to='data.Page')),
28
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
29 29
            ],
30 30
            options={
31 31
                'verbose_name': 'Chart',
combo/apps/family/migrations/0001_initial.py
22 22
                ('slug', models.SlugField(verbose_name='Slug', blank=True)),
23 23
                ('public', models.BooleanField(default=True, verbose_name='Public')),
24 24
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
25
                ('page', models.ForeignKey(to='data.Page')),
25
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Family Information Cell',
combo/apps/fargo/migrations/0001_initial.py
22 22
                ('public', models.BooleanField(default=True, verbose_name='Public')),
23 23
                ('restricted_to_unlogged', models.BooleanField(default=False, verbose_name='Restrict to unlogged users')),
24 24
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
25
                ('page', models.ForeignKey(to='data.Page')),
25
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Recent Documents',
combo/apps/gallery/migrations/0001_initial.py
24 24
                ('restricted_to_unlogged', models.BooleanField(default=False, verbose_name='Restrict to unlogged users')),
25 25
                ('last_update_timestamp', models.DateTimeField(auto_now=True)),
26 26
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
27
                ('page', models.ForeignKey(to='data.Page')),
27
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'Gallery',
......
37 37
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
38 38
                ('image', models.ImageField(upload_to=b'uploads/gallery/%Y/%m/', verbose_name='Image')),
39 39
                ('order', models.PositiveIntegerField()),
40
                ('gallery', models.ForeignKey(verbose_name='Gallery', to='gallery.GalleryCell')),
40
                ('gallery', models.ForeignKey(verbose_name='Gallery', to='gallery.GalleryCell', on_delete=models.CASCADE)),
41 41
            ],
42 42
            options={
43 43
                'ordering': ['order'],
combo/apps/gallery/models.py
50 50

  
51 51

  
52 52
class Image(models.Model):
53
    gallery = models.ForeignKey(GalleryCell, verbose_name=_('Gallery'))
53
    gallery = models.ForeignKey(GalleryCell, on_delete=models.CASCADE, verbose_name=_('Gallery'))
54 54
    image = models.ImageField(_('Image'),
55 55
            upload_to='uploads/gallery/%Y/%m/')
56 56
    order = models.PositiveIntegerField()
combo/apps/lingo/migrations/0001_initial.py
40 40
                ('slug', models.SlugField(verbose_name='Slug', blank=True)),
41 41
                ('public', models.BooleanField(default=True, verbose_name='Public')),
42 42
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
43
                ('page', models.ForeignKey(to='data.Page')),
43
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
44 44
            ],
45 45
            options={
46 46
                'verbose_name': 'Basket',
......
65 65
        migrations.AddField(
66 66
            model_name='basketitem',
67 67
            name='regie',
68
            field=models.ForeignKey(to='lingo.Regie'),
68
            field=models.ForeignKey(to='lingo.Regie', on_delete=models.CASCADE),
69 69
            preserve_default=True,
70 70
        ),
71 71
        migrations.AddField(
72 72
            model_name='basketitem',
73 73
            name='user',
74
            field=models.ForeignKey(to=settings.AUTH_USER_MODEL),
74
            field=models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
75 75
            preserve_default=True,
76 76
        ),
77 77
    ]
combo/apps/lingo/migrations/0005_auto_20150307_1242.py
24 24
                ('slug', models.SlugField(verbose_name='Slug', blank=True)),
25 25
                ('public', models.BooleanField(default=True, verbose_name='Public')),
26 26
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
27
                ('page', models.ForeignKey(to='data.Page')),
27
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'Recent Transactions',
......
34 34
        migrations.AddField(
35 35
            model_name='transaction',
36 36
            name='user',
37
            field=models.ForeignKey(default=0, to=settings.AUTH_USER_MODEL),
37
            field=models.ForeignKey(default=0, to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE),
38 38
            preserve_default=False,
39 39
        ),
40 40
    ]
combo/apps/lingo/migrations/0007_lingobasketlinkcell.py
22 22
                ('slug', models.SlugField(verbose_name='Slug', blank=True)),
23 23
                ('public', models.BooleanField(default=True, verbose_name='Public')),
24 24
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
25
                ('page', models.ForeignKey(to='data.Page')),
25
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'Basket Link',
combo/apps/lingo/migrations/0008_auto_20150908_1538.py
25 25
                ('regie', models.CharField(max_length=50, verbose_name='Regie', blank=True)),
26 26
                ('title', ckeditor.fields.RichTextField(verbose_name='Title', blank=True)),
27 27
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
28
                ('page', models.ForeignKey(to='data.Page')),
28
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
29 29
            ],
30 30
            options={
31 31
                'verbose_name': 'Active Items Cell',
......
43 43
                ('regie', models.CharField(max_length=50, verbose_name='Regie', blank=True)),
44 44
                ('title', ckeditor.fields.RichTextField(verbose_name='Title', blank=True)),
45 45
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
46
                ('page', models.ForeignKey(to='data.Page')),
46
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
47 47
            ],
48 48
            options={
49 49
                'verbose_name': 'Items History Cell',
combo/apps/lingo/migrations/0009_auto_20150917_1456.py
15 15
        migrations.AddField(
16 16
            model_name='transaction',
17 17
            name='regie',
18
            field=models.ForeignKey(to='lingo.Regie', null=True),
18
            field=models.ForeignKey(to='lingo.Regie', null=True, on_delete=models.CASCADE),
19 19
            preserve_default=True,
20 20
        ),
21 21
        migrations.AddField(
......
27 27
        migrations.AlterField(
28 28
            model_name='transaction',
29 29
            name='user',
30
            field=models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True),
30
            field=models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE),
31 31
            preserve_default=True,
32 32
        ),
33 33
    ]
combo/apps/lingo/migrations/0021_transactionoperation.py
20 20
                ('amount', models.DecimalField(max_digits=8, decimal_places=2)),
21 21
                ('creation_date', models.DateTimeField(auto_now_add=True)),
22 22
                ('bank_result', jsonfield.fields.JSONField(default=dict, blank=True)),
23
                ('transaction', models.ForeignKey(to='lingo.Transaction')),
23
                ('transaction', models.ForeignKey(to='lingo.Transaction', on_delete=models.CASCADE)),
24 24
            ],
25 25
        ),
26 26
    ]
combo/apps/lingo/migrations/0024_selfdeclaredinvoicepayment.py
27 27
                ('title', models.CharField(max_length=200, verbose_name='Title', blank=True)),
28 28
                ('text', ckeditor.fields.RichTextField(null=True, verbose_name='Text', blank=True)),
29 29
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
30
                ('page', models.ForeignKey(to='data.Page')),
30
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
31 31
            ],
32 32
            options={
33 33
                'verbose_name': 'Self declared invoice payment',
combo/apps/lingo/migrations/0025_auto_20161206_1713.py
15 15
        migrations.AlterField(
16 16
            model_name='basketitem',
17 17
            name='user',
18
            field=models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True),
18
            field=models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE),
19 19
        ),
20 20
    ]
combo/apps/lingo/migrations/0028_tipipaymentformcell.py
31 31
                ('control_protocol', models.CharField(default=b'pesv2', max_length=8, verbose_name='Control protocol', choices=[(b'pesv2', 'Indigo/PES v2'), (b'rolmre', 'ROLMRE')])),
32 32
                ('test_mode', models.BooleanField(default=False, verbose_name='Test mode')),
33 33
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
34
                ('page', models.ForeignKey(to='data.Page')),
34
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
35 35
            ],
36 36
            options={
37 37
                'verbose_name': 'TIPI Payment Form',
combo/apps/lingo/models.py
328 328

  
329 329

  
330 330
class BasketItem(models.Model):
331
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
332
    regie = models.ForeignKey(Regie)
331
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
332
    regie = models.ForeignKey(Regie, on_delete=models.CASCADE)
333 333
    subject = models.CharField(verbose_name=_('Subject'), max_length=200)
334 334
    source_url = models.URLField(_('Source URL'), blank=True)
335 335
    details = models.TextField(verbose_name=_('Details'), blank=True)
......
427 427

  
428 428

  
429 429
class Transaction(models.Model):
430
    regie = models.ForeignKey(Regie, null=True)
430
    regie = models.ForeignKey(Regie, on_delete=models.CASCADE, null=True)
431 431
    items = models.ManyToManyField(BasketItem, blank=True)
432 432
    remote_items = models.CharField(max_length=512)
433 433
    to_be_paid_remote_items = models.CharField(max_length=512, null=True)
......
436 436
    bank_data = JSONField(blank=True)
437 437
    order_id = models.CharField(max_length=200)
438 438
    bank_transaction_id = models.CharField(max_length=200, null=True)
439
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
439
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
440 440
    status = models.IntegerField(null=True)
441 441
    amount = models.DecimalField(default=0, max_digits=7, decimal_places=2)
442 442

  
......
504 504
        ('validation', _('Validation')),
505 505
        ('cancellation', _('Cancellation')),
506 506
    ]
507
    transaction = models.ForeignKey(Transaction)
507
    transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE)
508 508
    kind = models.CharField(max_length=65, choices=OPERATIONS)
509 509
    amount = models.DecimalField(decimal_places=2, max_digits=8)
510 510
    creation_date = models.DateTimeField(auto_now_add=True)
combo/apps/maps/migrations/0002_map.py
30 30
                ('max_zoom', models.CharField(default=19, max_length=2, verbose_name='Maximal zoom level', choices=[(b'0', 'Whole world'), (b'9', 'Wide area'), (b'11', 'Area'), (b'13', 'Town'), (b'16', 'Small road'), (b'18', 'Neighbourhood'), (b'19', 'Ant')])),
31 31
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
32 32
                ('layers', models.ManyToManyField(to='maps.MapLayer', verbose_name='Layers', blank=True)),
33
                ('page', models.ForeignKey(to='data.Page')),
33
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
34 34
            ],
35 35
            options={
36 36
                'verbose_name': 'Map',
combo/apps/newsletters/migrations/0001_initial.py
26 26
                ('resources_restrictions', models.CharField(help_text='list of resources(themes) separated by commas', max_length=1024, verbose_name='resources restrictions', blank=True)),
27 27
                ('transports_restrictions', models.CharField(help_text='list of transports separated by commas', max_length=1024, verbose_name='transports restrictions', blank=True)),
28 28
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
29
                ('page', models.ForeignKey(to='data.Page')),
29
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
30 30
            ],
31 31
            options={
32 32
                'verbose_name': 'Newsletters',
combo/apps/notifications/migrations/0001_initial.py
24 24
                ('end_timestamp', models.DateTimeField(verbose_name='End date and time')),
25 25
                ('acked', models.BooleanField(default=False, verbose_name='Acked')),
26 26
                ('external_id', models.SlugField(null=True, verbose_name='External identifier')),
27
                ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL)),
27
                ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'Notification',
......
41 41
                ('public', models.BooleanField(default=True, verbose_name='Public')),
42 42
                ('restricted_to_unlogged', models.BooleanField(default=False, verbose_name='Restrict to unlogged users')),
43 43
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
44
                ('page', models.ForeignKey(to='data.Page')),
44
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
45 45
            ],
46 46
            options={
47 47
                'verbose_name': 'User Notifications',
combo/apps/pwa/models.py
104 104
class PwaNavigationEntry(models.Model):
105 105
    label = models.CharField(verbose_name=_('Label'), max_length=150, blank=True)
106 106
    url = models.CharField(verbose_name=_('External URL'), max_length=200, blank=True)
107
    link_page = models.ForeignKey('data.Page', blank=True,
108
            null=True, verbose_name=_('Internal link'))
107
    link_page = models.ForeignKey(
108
        'data.Page', on_delete=models.CASCADE, blank=True,
109
        null=True, verbose_name=_('Internal link'))
109 110
    icon = models.FileField(_('Icon'), upload_to='pwa', blank=True, null=True)
110 111
    extra_css_class = models.CharField(_('Extra classes for CSS styling'), max_length=100, blank=True)
111 112
    order = models.PositiveIntegerField()
combo/apps/search/migrations/0001_initial.py
24 24
                ('last_update_timestamp', models.DateTimeField(auto_now=True)),
25 25
                ('_search_service', models.CharField(max_length=64, verbose_name='Search Service')),
26 26
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
27
                ('page', models.ForeignKey(to='data.Page')),
27
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'Search',
combo/apps/usersearch/migrations/0001_initial.py
22 22
                ('public', models.BooleanField(default=True, verbose_name='Public')),
23 23
                ('restricted_to_unlogged', models.BooleanField(default=False, verbose_name='Restrict to unlogged users')),
24 24
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
25
                ('page', models.ForeignKey(to='data.Page')),
25
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'User Search',
combo/apps/wcs/migrations/0001_initial.py
25 25
                ('cached_description', models.TextField(verbose_name='Description', blank=True)),
26 26
                ('cached_url', models.URLField(verbose_name='Cached URL')),
27 27
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
28
                ('link_page', models.ForeignKey(related_name='link', to='data.Page', null=True)),
29
                ('page', models.ForeignKey(to='data.Page')),
28
                ('link_page', models.ForeignKey(related_name='link', to='data.Page', null=True, on_delete=models.CASCADE)),
29
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
30 30
            ],
31 31
            options={
32 32
                'verbose_name': 'Category Link',
......
42 42
                ('public', models.BooleanField(default=True, verbose_name='Public')),
43 43
                ('wcs_site', models.CharField(max_length=50, verbose_name='Site')),
44 44
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
45
                ('page', models.ForeignKey(to='data.Page')),
45
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
46 46
            ],
47 47
            options={
48 48
                'verbose_name': 'Current Drafts',
......
58 58
                ('public', models.BooleanField(default=True, verbose_name='Public')),
59 59
                ('wcs_site', models.CharField(max_length=50, verbose_name='Site')),
60 60
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
61
                ('page', models.ForeignKey(to='data.Page')),
61
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
62 62
            ],
63 63
            options={
64 64
                'verbose_name': 'Current Forms',
......
76 76
                ('cached_title', models.CharField(max_length=50, verbose_name='Title')),
77 77
                ('cached_url', models.URLField(verbose_name='URL')),
78 78
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
79
                ('page', models.ForeignKey(to='data.Page')),
79
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
80 80
            ],
81 81
            options={
82 82
                'verbose_name': 'Form Link',
......
97 97
                ('ordering', models.CharField(default=b'', max_length=20, verbose_name='Order', blank=True, choices=[(b'', 'Default'), (b'alpha', 'Alphabetical'), (b'popularity', 'Popularity')])),
98 98
                ('limit', models.PositiveSmallIntegerField(null=True, verbose_name='Limit', blank=True)),
99 99
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
100
                ('page', models.ForeignKey(to='data.Page')),
100
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
101 101
            ],
102 102
            options={
103 103
                'verbose_name': 'Forms of Category',
combo/apps/wcs/migrations/0006_categoriescell.py
24 24
                ('public', models.BooleanField(default=True, verbose_name='Public')),
25 25
                ('wcs_site', models.CharField(max_length=50, verbose_name='Site', blank=True)),
26 26
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
27
                ('page', models.ForeignKey(to='data.Page')),
27
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
28 28
            ],
29 29
            options={
30 30
                'verbose_name': 'Form Categories',
combo/apps/wcs/migrations/0007_trackingcodeinputcell.py
23 23
                ('public', models.BooleanField(default=True, verbose_name='Public')),
24 24
                ('wcs_site', models.CharField(max_length=50, verbose_name='Site', blank=True)),
25 25
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
26
                ('page', models.ForeignKey(to='data.Page')),
26
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
27 27
            ],
28 28
            options={
29 29
                'abstract': False,
combo/data/migrations/0001_initial.py
53 53
                ('redirect_url', models.CharField(max_length=100, verbose_name='Redirect URL', blank=True)),
54 54
                ('public', models.BooleanField(default=True, verbose_name='Public')),
55 55
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
56
                ('parent', models.ForeignKey(blank=True, to='data.Page', null=True)),
56
                ('parent', models.ForeignKey(blank=True, to='data.Page', null=True, on_delete=models.CASCADE)),
57 57
            ],
58 58
            options={
59 59
                'ordering': ['order'],
......
69 69
                ('public', models.BooleanField(default=True, verbose_name='Public')),
70 70
                ('text', ckeditor.fields.RichTextField(null=True, verbose_name='Text')),
71 71
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
72
                ('page', models.ForeignKey(to='data.Page')),
72
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
73 73
            ],
74 74
            options={
75 75
                'verbose_name': 'Text',
......
84 84
                ('order', models.PositiveIntegerField()),
85 85
                ('public', models.BooleanField(default=True, verbose_name='Public')),
86 86
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
87
                ('page', models.ForeignKey(to='data.Page')),
87
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
88 88
            ],
89 89
            options={
90 90
                'verbose_name': 'Unlock Marker',
......
94 94
        migrations.AddField(
95 95
            model_name='fortunecell',
96 96
            name='page',
97
            field=models.ForeignKey(to='data.Page'),
97
            field=models.ForeignKey(to='data.Page', on_delete=models.CASCADE),
98 98
            preserve_default=True,
99 99
        ),
100 100
        migrations.AddField(
101 101
            model_name='blurpcell',
102 102
            name='page',
103
            field=models.ForeignKey(to='data.Page'),
103
            field=models.ForeignKey(to='data.Page', on_delete=models.CASCADE),
104 104
            preserve_default=True,
105 105
        ),
106 106
    ]
combo/data/migrations/0003_menucell.py
21 21
                ('slug', models.SlugField(verbose_name='Slug', blank=True)),
22 22
                ('public', models.BooleanField(default=True, verbose_name='Public')),
23 23
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
24
                ('page', models.ForeignKey(to='data.Page')),
24
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
25 25
            ],
26 26
            options={
27 27
                'verbose_name': 'Menu',
combo/data/migrations/0006_linkcell.py
23 23
                ('title', models.CharField(max_length=150, verbose_name='Title')),
24 24
                ('url', models.URLField(verbose_name='URL')),
25 25
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
26
                ('page', models.ForeignKey(to='data.Page')),
26
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
27 27
            ],
28 28
            options={
29 29
                'verbose_name': 'Link',
combo/data/migrations/0007_auto_20150529_1003.py
20 20
        migrations.AddField(
21 21
            model_name='linkcell',
22 22
            name='link_page',
23
            field=models.ForeignKey(related_name='link_cell', to='data.Page', null=True),
23
            field=models.ForeignKey(related_name='link_cell', to='data.Page', null=True, on_delete=models.CASCADE),
24 24
            preserve_default=True,
25 25
        ),
26 26
        migrations.AlterField(
combo/data/migrations/0008_auto_20150529_1504.py
14 14
        migrations.AlterField(
15 15
            model_name='linkcell',
16 16
            name='link_page',
17
            field=models.ForeignKey(related_name='link_cell', blank=True, to='data.Page', null=True),
17
            field=models.ForeignKey(related_name='link_cell', blank=True, to='data.Page', null=True, on_delete=models.CASCADE),
18 18
            preserve_default=True,
19 19
        ),
20 20
    ]
combo/data/migrations/0009_auto_20150529_2247.py
14 14
        migrations.AlterField(
15 15
            model_name='linkcell',
16 16
            name='link_page',
17
            field=models.ForeignKey(related_name='link_cell', verbose_name='Internal link', blank=True, to='data.Page', null=True),
17
            field=models.ForeignKey(related_name='link_cell', verbose_name='Internal link', blank=True, to='data.Page', null=True, on_delete=models.CASCADE),
18 18
            preserve_default=True,
19 19
        ),
20 20
    ]
combo/data/migrations/0010_feedcell.py
22 22
                ('public', models.BooleanField(default=True, verbose_name='Public')),
23 23
                ('url', models.URLField(verbose_name='URL', blank=True)),
24 24
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
25
                ('page', models.ForeignKey(to='data.Page')),
25
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
26 26
            ],
27 27
            options={
28 28
                'verbose_name': 'RSS/Atom Feed',
combo/data/migrations/0013_parameterscell.py
27 27
                ('empty_label', models.CharField(default=b'---', max_length=64, verbose_name='Empty label')),
28 28
                ('parameters', jsonfield.fields.JSONField(default=dict, help_text='Must be a JSON list, containing dictionaries with 3 keys: name, value and optionnally roles; name must be a string, value must be a dictionary and roles must a list of role names. Role names limit the visibility of the choice.', verbose_name='Parameters', blank=True)),
29 29
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
30
                ('page', models.ForeignKey(to='data.Page')),
30
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
31 31
            ],
32 32
            options={
33 33
                'verbose_name': 'Parameters',
combo/data/migrations/0017_menucell_root_page.py
14 14
        migrations.AddField(
15 15
            model_name='menucell',
16 16
            name='root_page',
17
            field=models.ForeignKey(related_name='root_page', verbose_name='Root Page', blank=True, to='data.Page', null=True),
17
            field=models.ForeignKey(related_name='root_page', verbose_name='Root Page', blank=True, to='data.Page', null=True, on_delete=models.CASCADE),
18 18
        ),
19 19
    ]
combo/data/migrations/0018_parentcontentcell.py
21 21
                ('public', models.BooleanField(default=True, verbose_name='Public')),
22 22
                ('restricted_to_unlogged', models.BooleanField(default=False, verbose_name='Restrict to unlogged users')),
23 23
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
24
                ('page', models.ForeignKey(to='data.Page')),
24
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
25 25
            ],
26 26
            options={
27 27
                'verbose_name': 'Same as parent',
combo/data/migrations/0021_jsoncell.py
27 27
                ('template_string', models.TextField(null=True, verbose_name='Display Template', blank=True, validators=[combo.data.models.django_template_validator])),
28 28
                ('cache_duration', models.PositiveIntegerField(default=60, verbose_name='Cache duration')),
29 29
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
30
                ('page', models.ForeignKey(to='data.Page')),
30
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
31 31
            ],
32 32
            options={
33 33
                'verbose_name': 'JSON Prototype',
combo/data/migrations/0024_configjsoncell.py
27 27
                ('key', models.CharField(max_length=50)),
28 28
                ('parameters', jsonfield.fields.JSONField(default=dict, blank=True)),
29 29
                ('groups', models.ManyToManyField(to='auth.Group', verbose_name='Groups', blank=True)),
30
                ('page', models.ForeignKey(to='data.Page')),
30
                ('page', models.ForeignKey(to='data.Page', on_delete=models.CASCADE)),
31 31
            ],
32 32
            options={
33 33
                'abstract': False,
combo/data/models.py
131 131
                        ))
132 132
    description = models.TextField(_('Description'), blank=True)
133 133
    template_name = models.CharField(_('Template'), max_length=50)
134
    parent = models.ForeignKey('self', null=True, blank=True)
134
    parent = models.ForeignKey('self', on_delete=models.CASCADE, null=True, blank=True)
135 135
    order = models.PositiveIntegerField()
136 136
    exclude_from_navigation = models.BooleanField(_('Exclude from navigation'), default=False)
137 137
    redirect_url = models.CharField(_('Redirect URL'), max_length=200, blank=True)
......
438 438
class PageSnapshot(models.Model):
439 439
    page = models.ForeignKey(Page, on_delete=models.SET_NULL, null=True)
440 440
    timestamp = models.DateTimeField(auto_now_add=True)
441
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
441
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
442 442
    comment = models.TextField(blank=True, null=True)
443 443
    serialization = JSONField(blank=True)
444 444

  
......
475 475

  
476 476
class Redirect(models.Model):
477 477
    old_url = models.CharField(max_length=512)
478
    page = models.ForeignKey(Page)
478
    page = models.ForeignKey(Page, on_delete=models.CASCADE)
479 479
    creation_timestamp = models.DateTimeField(auto_now_add=True)
480 480

  
481 481
    class Meta:
......
489 489
@python_2_unicode_compatible
490 490
class CellBase(six.with_metaclass(CellMeta, models.Model)):
491 491

  
492
    page = models.ForeignKey(Page)
492
    page = models.ForeignKey(Page, on_delete=models.CASCADE)
493 493
    placeholder = models.CharField(max_length=20)
494 494
    order = models.PositiveIntegerField()
495 495
    slug = models.SlugField(_('Slug'), blank=True)
......
828 828
    initial_level = models.IntegerField(_('Initial Level'),
829 829
            choices=[(-1, _('Same as page'))] +
830 830
                    [(i, i) for i in range(1, 3)], default=-1, null=False)
831
    root_page = models.ForeignKey(Page, related_name='root_page',
831
    root_page = models.ForeignKey(Page, on_delete=models.CASCADE, related_name='root_page',
832 832
            null=True, blank=True, verbose_name=_('Root Page'))
833 833

  
834 834
    template_name = 'combo/menu-cell.html'
......
856 856
class LinkCell(CellBase):
857 857
    title = models.CharField(_('Title'), max_length=150, blank=True)
858 858
    url = models.CharField(_('URL'), max_length=200, blank=True)
859
    link_page = models.ForeignKey('data.Page', related_name='link_cell', blank=True,
860
            null=True, verbose_name=_('Internal link'))
859
    link_page = models.ForeignKey(
860
        'data.Page', on_delete=models.CASCADE, related_name='link_cell', blank=True,
861
        null=True, verbose_name=_('Internal link'))
861 862
    anchor = models.CharField(_('Anchor'), max_length=150, blank=True)
862 863

  
863 864
    template_name = 'combo/link-cell.html'
combo/profile/migrations/0001_initial.py
17 17
            fields=[
18 18
                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
19 19
                ('initial_login_view_timestamp', models.DateTimeField(null=True)),
20
                ('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)),
20
                ('user', models.OneToOneField(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE)),
21 21
            ],
22 22
        ),
23 23
    ]
combo/profile/models.py
27 27

  
28 28

  
29 29
class Profile(models.Model):
30
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
30
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
31 31
    initial_login_view_timestamp = models.DateTimeField(null=True)
32 32

  
33 33

  
34
-