From 8e6e54bb90e41524955dd6c7655a6b678022f834 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Laur=C3=A9line=20Gu=C3=A9rin?= <zebuline@entrouvert.com>
Date: Mon, 17 Feb 2020 10:07:57 +0100
Subject: [PATCH 1/6] cells: add invalid fields (#38009)

---
 .../calendar/migrations/0003_invalid_cell.py  |  24 ++++
 .../dashboard/migrations/0003_invalid_cell.py |  24 ++++
 .../dataviz/migrations/0011_invalid_cell.py   |  44 +++++++
 .../family/migrations/0005_invalid_cell.py    |  24 ++++
 .../fargo/migrations/0005_invalid_cell.py     |  24 ++++
 .../gallery/migrations/0004_invalid_cell.py   |  24 ++++
 combo/apps/kb/migrations/0003_invalid_cell.py |  24 ++++
 .../lingo/migrations/0038_invalid_cell.py     |  84 +++++++++++++
 .../apps/maps/migrations/0013_invalid_cell.py |  24 ++++
 .../migrations/0004_invalid_cell.py           |  24 ++++
 .../migrations/0006_invalid_cell.py           |  24 ++++
 .../search/migrations/0008_invalid_cell.py    |  24 ++++
 .../apps/wcs/migrations/0020_invalid_cell.py  | 104 ++++++++++++++++
 combo/data/migrations/0044_invalid_cell.py    | 114 ++++++++++++++++++
 combo/data/models.py                          |   6 +-
 combo/profile/migrations/0003_invalid_cell.py |  24 ++++
 16 files changed, 615 insertions(+), 1 deletion(-)
 create mode 100644 combo/apps/calendar/migrations/0003_invalid_cell.py
 create mode 100644 combo/apps/dashboard/migrations/0003_invalid_cell.py
 create mode 100644 combo/apps/dataviz/migrations/0011_invalid_cell.py
 create mode 100644 combo/apps/family/migrations/0005_invalid_cell.py
 create mode 100644 combo/apps/fargo/migrations/0005_invalid_cell.py
 create mode 100644 combo/apps/gallery/migrations/0004_invalid_cell.py
 create mode 100644 combo/apps/kb/migrations/0003_invalid_cell.py
 create mode 100644 combo/apps/lingo/migrations/0038_invalid_cell.py
 create mode 100644 combo/apps/maps/migrations/0013_invalid_cell.py
 create mode 100644 combo/apps/newsletters/migrations/0004_invalid_cell.py
 create mode 100644 combo/apps/notifications/migrations/0006_invalid_cell.py
 create mode 100644 combo/apps/search/migrations/0008_invalid_cell.py
 create mode 100644 combo/apps/wcs/migrations/0020_invalid_cell.py
 create mode 100644 combo/data/migrations/0044_invalid_cell.py
 create mode 100644 combo/profile/migrations/0003_invalid_cell.py

diff --git a/combo/apps/calendar/migrations/0003_invalid_cell.py b/combo/apps/calendar/migrations/0003_invalid_cell.py
new file mode 100644
index 0000000..08b05e1
--- /dev/null
+++ b/combo/apps/calendar/migrations/0003_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('calendar', '0002_bookingcalendar_days_displayed'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='bookingcalendar',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='bookingcalendar',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/dashboard/migrations/0003_invalid_cell.py b/combo/apps/dashboard/migrations/0003_invalid_cell.py
new file mode 100644
index 0000000..95718a9
--- /dev/null
+++ b/combo/apps/dashboard/migrations/0003_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dashboard', '0002_auto_20180105_0846'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='dashboardcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='dashboardcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/dataviz/migrations/0011_invalid_cell.py b/combo/apps/dataviz/migrations/0011_invalid_cell.py
new file mode 100644
index 0000000..6481cde
--- /dev/null
+++ b/combo/apps/dataviz/migrations/0011_invalid_cell.py
@@ -0,0 +1,44 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('dataviz', '0010_auto_20190328_1111'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='chartcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='chartcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='chartngcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='chartngcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='gauge',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='gauge',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/family/migrations/0005_invalid_cell.py b/combo/apps/family/migrations/0005_invalid_cell.py
new file mode 100644
index 0000000..15b17da
--- /dev/null
+++ b/combo/apps/family/migrations/0005_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('family', '0004_familyinfoscell_last_update_timestamp'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='familyinfoscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='familyinfoscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/fargo/migrations/0005_invalid_cell.py b/combo/apps/fargo/migrations/0005_invalid_cell.py
new file mode 100644
index 0000000..d145d24
--- /dev/null
+++ b/combo/apps/fargo/migrations/0005_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('fargo', '0004_recentdocumentscell_fargo_site'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='recentdocumentscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='recentdocumentscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/gallery/migrations/0004_invalid_cell.py b/combo/apps/gallery/migrations/0004_invalid_cell.py
new file mode 100644
index 0000000..91f84a4
--- /dev/null
+++ b/combo/apps/gallery/migrations/0004_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('gallery', '0003_gallerycell_title'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='gallerycell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='gallerycell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/kb/migrations/0003_invalid_cell.py b/combo/apps/kb/migrations/0003_invalid_cell.py
new file mode 100644
index 0000000..6af7796
--- /dev/null
+++ b/combo/apps/kb/migrations/0003_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('kb', '0002_auto_20200203_1137'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='latestpageupdatescell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='latestpageupdatescell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/lingo/migrations/0038_invalid_cell.py b/combo/apps/lingo/migrations/0038_invalid_cell.py
new file mode 100644
index 0000000..22ca293
--- /dev/null
+++ b/combo/apps/lingo/migrations/0038_invalid_cell.py
@@ -0,0 +1,84 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('lingo', '0037_regie_transaction_options'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='activeitems',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='activeitems',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='itemshistory',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='itemshistory',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lingobasketcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lingobasketcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lingobasketlinkcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lingobasketlinkcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lingorecenttransactionscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='lingorecenttransactionscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='selfdeclaredinvoicepayment',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='selfdeclaredinvoicepayment',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='tipipaymentformcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='tipipaymentformcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/maps/migrations/0013_invalid_cell.py b/combo/apps/maps/migrations/0013_invalid_cell.py
new file mode 100644
index 0000000..8fc05b0
--- /dev/null
+++ b/combo/apps/maps/migrations/0013_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('maps', '0012_map_layer_slug_unicity'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='map',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='map',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/newsletters/migrations/0004_invalid_cell.py b/combo/apps/newsletters/migrations/0004_invalid_cell.py
new file mode 100644
index 0000000..bc7512f
--- /dev/null
+++ b/combo/apps/newsletters/migrations/0004_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('newsletters', '0003_newsletterscell_last_update_timestamp'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='newsletterscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='newsletterscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/notifications/migrations/0006_invalid_cell.py b/combo/apps/notifications/migrations/0006_invalid_cell.py
new file mode 100644
index 0000000..c2d0c2b
--- /dev/null
+++ b/combo/apps/notifications/migrations/0006_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('notifications', '0005_auto_20180324_0025'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='notificationscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='notificationscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/search/migrations/0008_invalid_cell.py b/combo/apps/search/migrations/0008_invalid_cell.py
new file mode 100644
index 0000000..d132231
--- /dev/null
+++ b/combo/apps/search/migrations/0008_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('search', '0007_french_fts'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='searchcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='searchcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/apps/wcs/migrations/0020_invalid_cell.py b/combo/apps/wcs/migrations/0020_invalid_cell.py
new file mode 100644
index 0000000..2fa98d1
--- /dev/null
+++ b/combo/apps/wcs/migrations/0020_invalid_cell.py
@@ -0,0 +1,104 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('wcs', '0019_wcscurrentformscell_include_drafts'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='backofficesubmissioncell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='backofficesubmissioncell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='categoriescell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='categoriescell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='trackingcodeinputcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='trackingcodeinputcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscareformscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscareformscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscategorycell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscategorycell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscurrentdraftscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscurrentdraftscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscurrentformscell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcscurrentformscell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcsformcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcsformcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcsformsofcategorycell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='wcsformsofcategorycell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/data/migrations/0044_invalid_cell.py b/combo/data/migrations/0044_invalid_cell.py
new file mode 100644
index 0000000..f922ccb
--- /dev/null
+++ b/combo/data/migrations/0044_invalid_cell.py
@@ -0,0 +1,114 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('data', '0043_delete_externallinksearchitem'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='configjsoncell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='configjsoncell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='feedcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='feedcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='fortunecell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='fortunecell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='jsoncell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='jsoncell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='linkcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='linkcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='linklistcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='linklistcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='menucell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='menucell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='parentcontentcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='parentcontentcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='textcell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='textcell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='unlockmarkercell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='unlockmarkercell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
diff --git a/combo/data/models.py b/combo/data/models.py
index 00867d9..b872cd2 100644
--- a/combo/data/models.py
+++ b/combo/data/models.py
@@ -548,6 +548,9 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)):
     groups = models.ManyToManyField(Group, verbose_name=_('Groups'), blank=True)
     last_update_timestamp = models.DateTimeField(auto_now=True)
 
+    invalid_reason_code = models.CharField(max_length=100, blank=True, null=True, editable=False)
+    invalid_since = models.DateTimeField(blank=True, null=True, editable=False)
+
     default_form_class = None
     manager_form_factory_kwargs = {}
     manager_form_template = 'combo/cell_form.html'
@@ -707,7 +710,8 @@ class CellBase(six.with_metaclass(CellMeta, models.Model)):
                   if x.name not in ('id', 'page', 'placeholder', 'order',
                                     'public', 'groups', 'slug',
                                     'extra_css_class', 'last_update_timestamp',
-                                    'restricted_to_unlogged')]
+                                    'restricted_to_unlogged',
+                                    'invalid_reason_code', 'invalid_since')]
         if not fields:
             return None
 
diff --git a/combo/profile/migrations/0003_invalid_cell.py b/combo/profile/migrations/0003_invalid_cell.py
new file mode 100644
index 0000000..782c889
--- /dev/null
+++ b/combo/profile/migrations/0003_invalid_cell.py
@@ -0,0 +1,24 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('profile', '0002_profilecell'),
+    ]
+
+    operations = [
+        migrations.AddField(
+            model_name='profilecell',
+            name='invalid_reason_code',
+            field=models.CharField(blank=True, max_length=100, null=True, editable=False),
+        ),
+        migrations.AddField(
+            model_name='profilecell',
+            name='invalid_since',
+            field=models.DateTimeField(blank=True, null=True, editable=False),
+        ),
+    ]
-- 
2.20.1

