diff options
| -rw-r--r-- | archaeological_context_records/migrations/0105_auto_20201203_1453.py | 171 | ||||
| -rw-r--r-- | archaeological_context_records/models.py | 28 | ||||
| -rw-r--r-- | archaeological_files/migrations/0104_auto_20201203_1453.py | 111 | ||||
| -rw-r--r-- | archaeological_files/models.py | 27 | ||||
| -rw-r--r-- | archaeological_finds/migrations/0107_auto_20201203_1453.py | 486 | ||||
| -rw-r--r-- | archaeological_finds/models_finds.py | 130 | ||||
| -rw-r--r-- | archaeological_finds/models_treatments.py | 18 | ||||
| -rw-r--r-- | archaeological_operations/migrations/0105_auto_20201203_1453.py | 356 | ||||
| -rw-r--r-- | archaeological_operations/models.py | 63 | ||||
| -rw-r--r-- | archaeological_warehouse/migrations/0106_auto_20201203_1453.py | 146 | ||||
| -rw-r--r-- | archaeological_warehouse/models.py | 16 | ||||
| -rw-r--r-- | ishtar_common/migrations/0205_auto_20201203_1453.py | 347 | ||||
| -rw-r--r-- | ishtar_common/models.py | 60 | ||||
| -rw-r--r-- | ishtar_common/models_common.py | 20 | 
14 files changed, 1800 insertions, 179 deletions
diff --git a/archaeological_context_records/migrations/0105_auto_20201203_1453.py b/archaeological_context_records/migrations/0105_auto_20201203_1453.py new file mode 100644 index 000000000..89e66f38d --- /dev/null +++ b/archaeological_context_records/migrations/0105_auto_20201203_1453.py @@ -0,0 +1,171 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-03 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): +    atomic = False + +    dependencies = [ +        ('archaeological_context_records', '0104_auto_20201201_1533'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='activitytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='cached_related_context_records', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached related context records'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='General comment'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='datings_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment on datings'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='filling', +            field=models.TextField(blank=True, default='', verbose_name='Filling'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='interpretation', +            field=models.TextField(blank=True, default='', verbose_name='Interpretation'), +        ), +        migrations.AlterField( +            model_name='contextrecord', +            name='location', +            field=models.TextField(blank=True, default='', help_text='A short description of the location of the context record', verbose_name='Location'), +        ), +        migrations.AlterField( +            model_name='dating', +            name='precise_dating', +            field=models.TextField(blank=True, default='', verbose_name='Precise dating'), +        ), +        migrations.AlterField( +            model_name='datingquality', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='datingtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='documentationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='excavationtechnictype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='cached_related_context_records', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached related context records'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='General comment'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='datings_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment on datings'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='filling', +            field=models.TextField(blank=True, default='', verbose_name='Filling'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='interpretation', +            field=models.TextField(blank=True, default='', verbose_name='Interpretation'), +        ), +        migrations.AlterField( +            model_name='historicalcontextrecord', +            name='location', +            field=models.TextField(blank=True, default='', help_text='A short description of the location of the context record', verbose_name='Location'), +        ), +        migrations.AlterField( +            model_name='identificationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='relationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='unit', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +    ] diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 715e6286c..56dc66340 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -81,8 +81,8 @@ class Dating(models.Model):      quality = models.ForeignKey(DatingQuality, verbose_name=_("Quality"),                                  on_delete=models.SET_NULL,                                  blank=True, null=True) -    precise_dating = models.TextField(_("Precise dating"), blank=True, -                                      null=True) +    precise_dating = models.TextField( +        _("Precise dating"), blank=True, default="")      objects = UUIDModelManager()      ASSOCIATED_ALT_NAMES = {          'datings__period': SearchAltName( @@ -530,7 +530,7 @@ class ContextRecord(BulkUpdatedItem, DocumentItem, BaseHistorizedItem,      # fields      uuid = models.UUIDField(default=uuid.uuid4) -    external_id = models.TextField(_("External ID"), blank=True, null=True) +    external_id = models.TextField(_("External ID"), blank=True, default="")      auto_external_id = models.BooleanField(          _("External ID is set automatically"), default=False)      parcel = models.ForeignKey( @@ -546,8 +546,8 @@ class ContextRecord(BulkUpdatedItem, DocumentItem, BaseHistorizedItem,          on_delete=models.SET_NULL,          blank=True, null=True, related_name='context_records')      label = models.CharField(_("ID"), max_length=200) -    description = models.TextField(_("Description"), blank=True, null=True) -    comment = models.TextField(_("General comment"), blank=True, null=True) +    description = models.TextField(_("Description"), blank=True, default="") +    comment = models.TextField(_("General comment"), blank=True, default="")      opening_date = models.DateField(_("Opening date"),                                      blank=True, null=True)      closing_date = models.DateField(_("Closing date"), blank=True, null=True) @@ -561,19 +561,19 @@ class ContextRecord(BulkUpdatedItem, DocumentItem, BaseHistorizedItem,          _("Depth of appearance (m)"), blank=True, null=True)      surface = models.IntegerField(_("Surface (m2)"), blank=True, null=True)      location = models.TextField( -        _("Location"), blank=True, null=True, +        _("Location"), blank=True, default="",          help_text=_("A short description of the location of the context "                      "record"))      datings = models.ManyToManyField(Dating, related_name='context_records')      documentations = models.ManyToManyField(DocumentationType, blank=True) -    datings_comment = models.TextField(_("Comment on datings"), blank=True, -                                       null=True) +    datings_comment = models.TextField( +        _("Comment on datings"), blank=True, default="")      unit = models.ForeignKey(Unit, verbose_name=_("Context record type"),                               on_delete=models.SET_NULL,                               related_name='+', blank=True, null=True) -    filling = models.TextField(_("Filling"), blank=True, null=True) -    interpretation = models.TextField(_("Interpretation"), blank=True, -                                      null=True) +    filling = models.TextField(_("Filling"), blank=True, default="") +    interpretation = models.TextField( +        _("Interpretation"), blank=True, default="")      taq = models.IntegerField(          _("TAQ"), blank=True, null=True,          help_text=_("\"Terminus Ante Quem\" the context record can't have " @@ -608,14 +608,14 @@ class ContextRecord(BulkUpdatedItem, DocumentItem, BaseHistorizedItem,          Document, related_name='main_image_context_records',          on_delete=models.SET_NULL,          verbose_name=_("Main image"), blank=True, null=True) -    cached_label = models.TextField(_("Cached name"), null=True, blank=True, +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      cached_periods =  models.TextField( -        _("Cached periods label"), blank=True, null=True, +        _("Cached periods label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_related_context_records = models.TextField( -        _("Cached related context records"), blank=True, null=True, +        _("Cached related context records"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      ) diff --git a/archaeological_files/migrations/0104_auto_20201203_1453.py b/archaeological_files/migrations/0104_auto_20201203_1453.py new file mode 100644 index 000000000..d1f87031e --- /dev/null +++ b/archaeological_files/migrations/0104_auto_20201203_1453.py @@ -0,0 +1,111 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-03 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): +    atomic = False + +    dependencies = [ +        ('archaeological_files', '0103_auto_20201201_1534'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='file', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Main address'), +        ), +        migrations.AlterField( +            model_name='file', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='file', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='file', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='file', +            name='imported_line', +            field=models.TextField(blank=True, default='', verbose_name='Imported line'), +        ), +        migrations.AlterField( +            model_name='file', +            name='name', +            field=models.TextField(blank=True, default='', verbose_name='Name'), +        ), +        migrations.AlterField( +            model_name='file', +            name='permit_reference', +            field=models.TextField(blank=True, default='', verbose_name='Permit reference'), +        ), +        migrations.AlterField( +            model_name='file', +            name='research_comment', +            field=models.TextField(blank=True, default='', verbose_name='Research archaeology comment'), +        ), +        migrations.AlterField( +            model_name='filetype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Main address'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='imported_line', +            field=models.TextField(blank=True, default='', verbose_name='Imported line'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='name', +            field=models.TextField(blank=True, default='', verbose_name='Name'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='permit_reference', +            field=models.TextField(blank=True, default='', verbose_name='Permit reference'), +        ), +        migrations.AlterField( +            model_name='historicalfile', +            name='research_comment', +            field=models.TextField(blank=True, default='', verbose_name='Research archaeology comment'), +        ), +        migrations.AlterField( +            model_name='permittype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='saisinetype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +    ] diff --git a/archaeological_files/models.py b/archaeological_files/models.py index 23aea5b39..ddee0f6cc 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -257,9 +257,9 @@ class File(ClosedItem, DocumentItem, BaseHistorizedItem, CompleteIdentifierItem,      external_id = models.CharField(_(u"External ID"), blank=True, null=True,                                     max_length=120)      auto_external_id = models.BooleanField( -        _(u"External ID is set automatically"), default=False) -    name = models.TextField(_(u"Name"), blank=True, null=True) -    file_type = models.ForeignKey(FileType, verbose_name=_(u"File type")) +        _("External ID is set automatically"), default=False) +    name = models.TextField(_("Name"), blank=True, default="") +    file_type = models.ForeignKey(FileType, verbose_name=_("File type"))      in_charge = models.ForeignKey(Person, related_name='file_responsability',                                    verbose_name=_(u"Person in charge"),                                    on_delete=models.SET_NULL, @@ -293,9 +293,9 @@ class File(ClosedItem, DocumentItem, BaseHistorizedItem, CompleteIdentifierItem,          PermitType, verbose_name=_(u"Permit type"), blank=True, null=True,          on_delete=models.SET_NULL      ) -    permit_reference = models.TextField(_(u"Permit reference"), blank=True, -                                        null=True) -    end_date = models.DateField(_(u"Closing date"), null=True, blank=True) +    permit_reference = models.TextField( +        _("Permit reference"), blank=True, default="") +    end_date = models.DateField(_("Closing date"), null=True, blank=True)      main_town = models.ForeignKey(          Town, verbose_name=_(u"Main town"), null=True, blank=True,          related_name='file_main', @@ -325,10 +325,10 @@ class File(ClosedItem, DocumentItem, BaseHistorizedItem, CompleteIdentifierItem,          _(u"Total developed surface (m2)"), blank=True, null=True)      locality = models.CharField(_(u"Locality"),                                  max_length=100, null=True, blank=True) -    address = models.TextField(_(u"Main address"), null=True, blank=True) -    postal_code = models.CharField(_(u"Main address - postal code"), +    address = models.TextField(_("Main address"), blank=True, default="") +    postal_code = models.CharField(_("Main address - postal code"),                                     max_length=10, null=True, blank=True) -    comment = models.TextField(_(u"Comment"), null=True, blank=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      # research archaeology -->      departments = models.ManyToManyField(          Department, verbose_name=_(u"Departments"), blank=True) @@ -342,8 +342,8 @@ class File(ClosedItem, DocumentItem, BaseHistorizedItem, CompleteIdentifierItem,      scientist = models.ForeignKey(          Person, blank=True, null=True, related_name='scientist',          on_delete=models.SET_NULL, verbose_name=_(u"Scientist in charge")) -    research_comment = models.TextField(_(u"Research archaeology comment"), -                                        null=True, blank=True) +    research_comment = models.TextField( +        _("Research archaeology comment"), blank=True, default="")      classified_area = models.NullBooleanField(          _(u"Classified area"), blank=True, null=True)      protected_area = models.NullBooleanField( @@ -362,11 +362,10 @@ class File(ClosedItem, DocumentItem, BaseHistorizedItem, CompleteIdentifierItem,          blank=True)      cached_label = models.TextField( -        _("Cached name"), null=True, blank=True, db_index=True, +        _("Cached name"), blank=True, default="", db_index=True,          help_text=_("Generated automatically - do not edit"),      ) -    imported_line = models.TextField(_(u"Imported line"), null=True, -                                     blank=True) +    imported_line = models.TextField(_("Imported line"), blank=True, default="")      history = HistoricalRecords(bases=[HistoryModel])      GET_VALUES_EXTRA = [ diff --git a/archaeological_finds/migrations/0107_auto_20201203_1453.py b/archaeological_finds/migrations/0107_auto_20201203_1453.py new file mode 100644 index 000000000..f28eb17b1 --- /dev/null +++ b/archaeological_finds/migrations/0107_auto_20201203_1453.py @@ -0,0 +1,486 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-03 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): +    atomic = False + +    dependencies = [ +        ('archaeological_finds', '0106_auto_20201201_1534'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='alterationcausetype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='alterationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='cache_complete_id', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Complete ID'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='cache_short_id', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Short ID'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='excavation_id', +            field=models.TextField(blank=True, default='', verbose_name='Excavation ID'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='basefind', +            name='special_interest', +            field=models.CharField(blank=True, default='', max_length=120, verbose_name='Special interest'), +        ), +        migrations.AlterField( +            model_name='batchtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='checkedtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='communicabilitytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='conservatorystate', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='find', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='find', +            name='cached_materials', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached material types label'), +        ), +        migrations.AlterField( +            model_name='find', +            name='cached_object_types', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached object types label'), +        ), +        migrations.AlterField( +            model_name='find', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='find', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='find', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='find', +            name='conservatory_comment', +            field=models.TextField(blank=True, default='', verbose_name='Conservatory comment'), +        ), +        migrations.AlterField( +            model_name='find', +            name='dating_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment on dating'), +        ), +        migrations.AlterField( +            model_name='find', +            name='decoration', +            field=models.TextField(blank=True, default='', verbose_name='Decoration'), +        ), +        migrations.AlterField( +            model_name='find', +            name='denomination', +            field=models.TextField(blank=True, default='', verbose_name='Denomination'), +        ), +        migrations.AlterField( +            model_name='find', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='find', +            name='dimensions_comment', +            field=models.TextField(blank=True, default='', verbose_name='Dimensions comment'), +        ), +        migrations.AlterField( +            model_name='find', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='find', +            name='inscription', +            field=models.TextField(blank=True, default='', verbose_name='Inscription'), +        ), +        migrations.AlterField( +            model_name='find', +            name='laboratory_id', +            field=models.TextField(blank=True, default='', verbose_name='Laboratory ID'), +        ), +        migrations.AlterField( +            model_name='find', +            name='manufacturing_place', +            field=models.TextField(blank=True, default='', verbose_name='Manufacturing place'), +        ), +        migrations.AlterField( +            model_name='find', +            name='mark', +            field=models.TextField(blank=True, default='', verbose_name='Mark'), +        ), +        migrations.AlterField( +            model_name='find', +            name='material_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment on the material'), +        ), +        migrations.AlterField( +            model_name='find', +            name='museum_id', +            field=models.TextField(blank=True, default='', verbose_name='Museum ID'), +        ), +        migrations.AlterField( +            model_name='find', +            name='previous_id', +            field=models.TextField(blank=True, default='', verbose_name='Previous ID'), +        ), +        migrations.AlterField( +            model_name='find', +            name='public_description', +            field=models.TextField(blank=True, default='', verbose_name='Public description'), +        ), +        migrations.AlterField( +            model_name='find', +            name='seal_number', +            field=models.TextField(blank=True, default='', verbose_name='Seal number'), +        ), +        migrations.AlterField( +            model_name='findbasket', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='cache_complete_id', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Complete ID'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='cache_short_id', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Short ID'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='excavation_id', +            field=models.TextField(blank=True, default='', verbose_name='Excavation ID'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='historicalbasefind', +            name='special_interest', +            field=models.CharField(blank=True, default='', max_length=120, verbose_name='Special interest'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='cached_materials', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached material types label'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='cached_object_types', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached object types label'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='conservatory_comment', +            field=models.TextField(blank=True, default='', verbose_name='Conservatory comment'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='dating_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment on dating'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='decoration', +            field=models.TextField(blank=True, default='', verbose_name='Decoration'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='denomination', +            field=models.TextField(blank=True, default='', verbose_name='Denomination'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='dimensions_comment', +            field=models.TextField(blank=True, default='', verbose_name='Dimensions comment'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='inscription', +            field=models.TextField(blank=True, default='', verbose_name='Inscription'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='laboratory_id', +            field=models.TextField(blank=True, default='', verbose_name='Laboratory ID'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='manufacturing_place', +            field=models.TextField(blank=True, default='', verbose_name='Manufacturing place'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='mark', +            field=models.TextField(blank=True, default='', verbose_name='Mark'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='material_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment on the material'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='museum_id', +            field=models.TextField(blank=True, default='', verbose_name='Museum ID'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='previous_id', +            field=models.TextField(blank=True, default='', verbose_name='Previous ID'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='public_description', +            field=models.TextField(blank=True, default='', verbose_name='Public description'), +        ), +        migrations.AlterField( +            model_name='historicalfind', +            name='seal_number', +            field=models.TextField(blank=True, default='', verbose_name='Seal number'), +        ), +        migrations.AlterField( +            model_name='historicaltreatment', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicaltreatment', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicaltreatment', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='historicaltreatment', +            name='goal', +            field=models.TextField(blank=True, default='', verbose_name='Goal'), +        ), +        migrations.AlterField( +            model_name='historicaltreatmentfile', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicaltreatmentfile', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicaltreatmentfile', +            name='exhibition_name', +            field=models.TextField(blank=True, default='', verbose_name='Exhibition name'), +        ), +        migrations.AlterField( +            model_name='historicaltreatmentfile', +            name='name', +            field=models.TextField(blank=True, default='', verbose_name='Name'), +        ), +        migrations.AlterField( +            model_name='integritytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='materialtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='materialtype', +            name='recommendation', +            field=models.TextField(blank=True, default='', verbose_name='Recommendation'), +        ), +        migrations.AlterField( +            model_name='materialtypequalitytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='objecttype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='objecttypequalitytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='remarkabilitytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='treatment', +            name='goal', +            field=models.TextField(blank=True, default='', verbose_name='Goal'), +        ), +        migrations.AlterField( +            model_name='treatmentemergencytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='treatmentfile', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='treatmentfile', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='treatmentfile', +            name='exhibition_name', +            field=models.TextField(blank=True, default='', verbose_name='Exhibition name'), +        ), +        migrations.AlterField( +            model_name='treatmentfile', +            name='name', +            field=models.TextField(blank=True, default='', verbose_name='Name'), +        ), +        migrations.AlterField( +            model_name='treatmentfiletype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='treatmentstate', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='treatmenttype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +    ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 494bb8a97..5bb06fd24 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -58,8 +58,8 @@ from archaeological_warehouse.models import Warehouse  class MaterialType(HierarchicalType):      code = models.CharField(_("Code"), max_length=100, blank=True, null=True) -    recommendation = models.TextField(_("Recommendation"), blank=True, -                                      null=True) +    recommendation = models.TextField( +        _("Recommendation"), blank=True, default="")      class Meta:          verbose_name = _("Material type") @@ -277,18 +277,20 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,      EXTERNAL_ID_DEPENDENCIES = ['find']      SLUG = 'basefind'      uuid = models.UUIDField(default=uuid.uuid4) -    label = models.TextField(_(u"Free ID")) -    external_id = models.TextField(_(u"External ID"), blank=True, null=True) +    label = models.TextField(_("Free ID")) +    external_id = models.TextField(_("External ID"), blank=True, default="")      auto_external_id = models.BooleanField( -        _(u"External ID is set automatically"), default=False) -    excavation_id = models.TextField(_(u"Excavation ID"), blank=True, null=True) -    description = models.TextField(_(u"Description"), blank=True, null=True) -    comment = models.TextField(_(u"Comment"), blank=True, null=True) -    special_interest = models.CharField(_(u"Special interest"), blank=True, -                                        null=True, max_length=120) +        _("External ID is set automatically"), default=False) +    excavation_id = models.TextField( +        _("Excavation ID"), blank=True, default="") +    description = models.TextField( +        _("Description"), blank=True, default="") +    comment = models.TextField(_("Comment"), blank=True, default="") +    special_interest = models.CharField( +        _("Special interest"), blank=True, default="", max_length=120)      context_record = models.ForeignKey(          ContextRecord, related_name='base_finds', -        verbose_name=_(u"Context Record")) +        verbose_name=_("Context Record"))      discovery_date = models.DateField(_(u"Discovery date (exact or TPQ)"),                                        blank=True, null=True)      discovery_date_taq = models.DateField(_(u"Discovery date (TAQ)"), @@ -304,11 +306,11 @@ class BaseFind(BulkUpdatedItem, BaseHistorizedItem, GeoItem,      # gis      line = models.LineStringField(_(u"Line"), blank=True, null=True)      cache_short_id = models.TextField( -        _(u"Short ID"), blank=True, null=True, db_index=True, -        help_text=_(u"Cached value - do not edit")) +        _("Short ID"), blank=True, default="", db_index=True, +        help_text=_("Cached value - do not edit"))      cache_complete_id = models.TextField( -        _(u"Complete ID"), blank=True, null=True, db_index=True, -        help_text=_(u"Cached value - do not edit")) +        _("Complete ID"), blank=True, default="", db_index=True, +        help_text=_("Cached value - do not edit"))      history = HistoricalRecords()      RELATED_POST_PROCESS = ['find']      CACHED_LABELS = ['cache_short_id', 'cache_complete_id'] @@ -1497,25 +1499,29 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,      # fields      uuid = models.UUIDField(default=uuid.uuid4) -    base_finds = models.ManyToManyField(BaseFind, verbose_name=_(u"Base find"), +    base_finds = models.ManyToManyField(BaseFind, verbose_name=_("Base find"),                                          related_name='find') -    external_id = models.TextField(_(u"External ID"), blank=True, null=True) +    external_id = models.TextField(_("External ID"), blank=True, default="")      auto_external_id = models.BooleanField( -        _(u"External ID is set automatically"), default=False) +        _("External ID is set automatically"), default=False)      # judiciary operation -    seal_number = models.TextField( -        _(u"Seal number"), blank=True, null=True -    ) -    order = models.IntegerField(_(u"Order"), default=1) -    label = models.TextField(_(u"Free ID")) -    denomination = models.TextField(_(u"Denomination"), blank=True, null=True) -    museum_id = models.TextField(_(u"Museum ID"), blank=True, null=True) -    laboratory_id = models.TextField(_("Laboratory ID"), blank=True, null=True) -    description = models.TextField(_(u"Description"), blank=True, null=True) -    decoration = models.TextField(_(u"Decoration"), blank=True, null=True) -    inscription = models.TextField(_(u"Inscription"), blank=True, null=True) +    seal_number = models.TextField(_("Seal number"), blank=True, default="") +    order = models.IntegerField(_("Order"), default=1) +    label = models.TextField(_("Free ID")) +    denomination = models.TextField( +        _("Denomination"),  blank=True, default="") +    museum_id = models.TextField( +        _("Museum ID"), blank=True, default="") +    laboratory_id = models.TextField( +        _("Laboratory ID"), blank=True, default="") +    description = models.TextField( +        _("Description"), blank=True, default="") +    decoration = models.TextField( +        _("Decoration"), blank=True, default="") +    inscription = models.TextField( +        _("Inscription"), blank=True, default="")      manufacturing_place = models.TextField( -        _(u"Manufacturing place"), blank=True, null=True) +        _("Manufacturing place"), blank=True, default="")      material_types = models.ManyToManyField(          MaterialType, verbose_name=_(u"Material types"), related_name='finds',          blank=True @@ -1526,8 +1532,8 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,          on_delete=models.SET_NULL,          blank=True, null=True      ) -    material_comment = models.TextField(_(u"Comment on the material"), -                                        blank=True, null=True) +    material_comment = models.TextField( +        _("Comment on the material"), blank=True, default="")      volume = models.FloatField(_(u"Volume (l)"), blank=True, null=True)      weight = models.FloatField(_(u"Weight"), blank=True, null=True)      weight_unit = models.CharField(_(u"Weight unit"), max_length=4, @@ -1588,20 +1594,20 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,          _(u"Clutter - short side (cm)"), blank=True, null=True)      clutter_height = models.FloatField(          _(u"Clutter - height (cm)"), blank=True, null=True) -    dimensions_comment = models.TextField(_(u"Dimensions comment"), -                                          blank=True, null=True) -    mark = models.TextField(_(u"Mark"), blank=True, null=True) -    comment = models.TextField(_(u"Comment"), blank=True, null=True) -    dating_comment = models.TextField(_(u"Comment on dating"), blank=True, -                                      null=True) -    previous_id = models.TextField(_(u"Previous ID"), blank=True, null=True) -    index = models.IntegerField(u"Index", default=0) -    checked_type = models.ForeignKey(CheckedType, verbose_name=_(u"Check"), +    dimensions_comment = models.TextField( +        _("Dimensions comment"), blank=True, default="") +    mark = models.TextField(_("Mark"), blank=True, default="") +    comment = models.TextField(_("Comment"), blank=True, default="") +    dating_comment = models.TextField(_("Comment on dating"), blank=True, +                                      default="") +    previous_id = models.TextField(_("Previous ID"), blank=True, default="") +    index = models.IntegerField("Index", default=0) +    checked_type = models.ForeignKey(CheckedType, verbose_name=_("Check"),                                       on_delete=models.SET_NULL,                                       blank=True, null=True) -    check_date = models.DateField(_(u"Check date"), +    check_date = models.DateField(_("Check date"),                                    default=datetime.date.today) -    estimated_value = models.FloatField(_(u"Estimated value"), blank=True, +    estimated_value = models.FloatField(_("Estimated value"), blank=True,                                          null=True)      collection = models.ForeignKey(          "archaeological_warehouse.Warehouse", verbose_name=_("Collection"), @@ -1609,24 +1615,24 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,      # preservation module      conservatory_state = models.ForeignKey( -        ConservatoryState, verbose_name=_(u"Conservatory state"), blank=True, +        ConservatoryState, verbose_name=_("Conservatory state"), blank=True,          null=True, on_delete=models.SET_NULL) -    conservatory_comment = models.TextField(_(u"Conservatory comment"), -                                            blank=True, null=True) +    conservatory_comment = models.TextField(_("Conservatory comment"), +                                            blank=True, default="")      preservation_to_considers = models.ManyToManyField(          TreatmentType, -        verbose_name=_(u"Recommended treatments"), +        verbose_name=_("Recommended treatments"),          related_name='finds_recommended', blank=True)      alterations = models.ManyToManyField( -        AlterationType, verbose_name=_(u"Alteration"), blank=True, +        AlterationType, verbose_name=_("Alteration"), blank=True,          related_name='finds'      )      alteration_causes = models.ManyToManyField( -        AlterationCauseType, verbose_name=_(u"Alteration cause"), blank=True, +        AlterationCauseType, verbose_name=_("Alteration cause"), blank=True,          related_name='finds'      )      treatment_emergency = models.ForeignKey( -        TreatmentEmergencyType, verbose_name=_(u"Treatment emergency"), +        TreatmentEmergencyType, verbose_name=_("Treatment emergency"),          on_delete=models.SET_NULL,          blank=True, null=True      ) @@ -1634,31 +1640,33 @@ class Find(BulkUpdatedItem, ValueGetter, DocumentItem, BaseHistorizedItem,                                          null=True)      appraisal_date = models.DateField(_("Appraisal date"), blank=True,                                        null=True) -    public_description = models.TextField(_("Public description"), blank=True, -                                          null=True) +    public_description = models.TextField( +        _("Public description"), blank=True, default="")      documents = models.ManyToManyField( -        Document, related_name='finds', verbose_name=_(u"Documents"), +        Document, related_name='finds', verbose_name=_("Documents"),          blank=True)      main_image = models.ForeignKey(          Document, related_name='main_image_finds',          on_delete=models.SET_NULL, -        verbose_name=_(u"Main image"), blank=True, null=True) +        verbose_name=_("Main image"), blank=True, null=True)      treatments = models.ManyToManyField( -        "Treatment", verbose_name=_(u"Treatments"), +        "Treatment", verbose_name=_("Treatments"),          related_name='finds', blank=True, -        help_text=_(u"Related treatments when no new find is created")) -    cached_label = models.TextField(_(u"Cached name"), null=True, blank=True, -                                    db_index=True) +        help_text=_("Related treatments when no new find is created")) +    cached_label = models.TextField( +        _("Cached name"), blank=True, default="", db_index=True, +        help_text=_("Generated automatically - do not edit") +    )      cached_periods = models.TextField( -        _("Cached periods label"), blank=True, null=True, +        _("Cached periods label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_object_types = models.TextField( -        _("Cached object types label"), blank=True, null=True, +        _("Cached object types label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_materials = models.TextField( -        _("Cached material types label"), blank=True, null=True, +        _("Cached material types label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      history = HistoricalRecords(bases=[HistoryModel]) diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 2bfe8d2cb..3f1c14069 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -195,9 +195,9 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,          on_delete=models.SET_NULL, related_name='treatments')      external_id = models.CharField(_(u"External ID"), blank=True, null=True,                                     max_length=200) -    comment = models.TextField(_(u"Comment"), blank=True, null=True) -    description = models.TextField(_(u"Description"), blank=True, null=True) -    goal = models.TextField(_(u"Goal"), blank=True, null=True) +    comment = models.TextField(_("Comment"), blank=True, default="") +    description = models.TextField(_("Description"), blank=True, default="") +    goal = models.TextField(_("Goal"), blank=True, default="")      start_date = models.DateField(_(u"Start date"), blank=True, null=True)      end_date = models.DateField(_(u"Closing date"), blank=True, null=True)      creation_date = models.DateTimeField(default=datetime.datetime.now) @@ -219,7 +219,7 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,          Document, related_name='main_image_treatments',          on_delete=models.SET_NULL,          verbose_name=_(u"Main image"), blank=True, null=True) -    cached_label = models.TextField(_(u"Cached name"), null=True, blank=True, +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      history = HistoricalRecords(bases=[HistoryModel]) @@ -991,7 +991,7 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,                                            null=True, max_length=200)      external_id = models.CharField(_(u"External ID"), blank=True, null=True,                                     max_length=200) -    name = models.TextField(_(u"Name"), blank=True, null=True) +    name = models.TextField(_("Name"), blank=True, default="")      type = models.ForeignKey(TreatmentFileType,                               verbose_name=_(u"Treatment request type"))      in_charge = models.ForeignKey( @@ -1013,14 +1013,14 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,      reception_date = models.DateField(_(u'Reception date'), blank=True,                                        null=True)      # exhibition -    exhibition_name = models.TextField(_("Exhibition name"), -                                       blank=True, null=True) +    exhibition_name = models.TextField(_("Exhibition name"), blank=True, +                                       default="")      exhibition_start_date = models.DateField(_("Exhibition start date"),                                               blank=True, null=True)      exhibition_end_date = models.DateField(_("Exhibition end date"),                                             blank=True, null=True) -    comment = models.TextField(_(u"Comment"), null=True, blank=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      documents = models.ManyToManyField(          Document, related_name='treatment_files', verbose_name=_(u"Documents"),          blank=True) @@ -1032,7 +1032,7 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,          FindBasket, null=True, blank=True, on_delete=models.SET_NULL,          related_name='treatment_files'      ) -    cached_label = models.TextField(_(u"Cached name"), null=True, blank=True, +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      history = HistoricalRecords() diff --git a/archaeological_operations/migrations/0105_auto_20201203_1453.py b/archaeological_operations/migrations/0105_auto_20201203_1453.py new file mode 100644 index 000000000..2547095f4 --- /dev/null +++ b/archaeological_operations/migrations/0105_auto_20201203_1453.py @@ -0,0 +1,356 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-03 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): +    atomic = False + +    dependencies = [ +        ('archaeological_operations', '0104_auto_20201201_1533'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='acttype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='administrativeact', +            name='act_object', +            field=models.TextField(blank=True, default='', verbose_name='Object'), +        ), +        migrations.AlterField( +            model_name='administrativeact', +            name='departments_label', +            field=models.TextField(blank=True, default='', help_text='Cached values get from associated departments', verbose_name='Departments'), +        ), +        migrations.AlterField( +            model_name='administrativeact', +            name='towns_label', +            field=models.TextField(blank=True, default='', help_text='Cached values get from associated towns', verbose_name='Towns'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='cached_remains', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached remains label'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='cached_towns_label', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached town label'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='discovery_area', +            field=models.TextField(blank=True, default='', verbose_name='Discovery area'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='locality_cadastral', +            field=models.TextField(blank=True, default='', verbose_name='Cadastral locality'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='locality_ngi', +            field=models.TextField(blank=True, default='', verbose_name='National Geographic Institute locality'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='oceanographic_service_localisation', +            field=models.TextField(blank=True, default='', verbose_name='Oceanographic service localisation'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='other_reference', +            field=models.TextField(blank=True, default='', verbose_name='Other reference'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='shipwreck_code', +            field=models.TextField(blank=True, default='', verbose_name='Shipwreck code'), +        ), +        migrations.AlterField( +            model_name='archaeologicalsite', +            name='shipwreck_name', +            field=models.TextField(blank=True, default='', verbose_name='Shipwreck name'), +        ), +        migrations.AlterField( +            model_name='culturalattributiontype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicaladministrativeact', +            name='act_object', +            field=models.TextField(blank=True, default='', verbose_name='Object'), +        ), +        migrations.AlterField( +            model_name='historicaladministrativeact', +            name='departments_label', +            field=models.TextField(blank=True, default='', help_text='Cached values get from associated departments', verbose_name='Departments'), +        ), +        migrations.AlterField( +            model_name='historicaladministrativeact', +            name='towns_label', +            field=models.TextField(blank=True, default='', help_text='Cached values get from associated towns', verbose_name='Towns'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='cached_remains', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached remains label'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='cached_towns_label', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached town label'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='discovery_area', +            field=models.TextField(blank=True, default='', verbose_name='Discovery area'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='locality_cadastral', +            field=models.TextField(blank=True, default='', verbose_name='Cadastral locality'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='locality_ngi', +            field=models.TextField(blank=True, default='', verbose_name='National Geographic Institute locality'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='oceanographic_service_localisation', +            field=models.TextField(blank=True, default='', verbose_name='Oceanographic service localisation'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='other_reference', +            field=models.TextField(blank=True, default='', verbose_name='Other reference'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='shipwreck_code', +            field=models.TextField(blank=True, default='', verbose_name='Shipwreck code'), +        ), +        migrations.AlterField( +            model_name='historicalarchaeologicalsite', +            name='shipwreck_name', +            field=models.TextField(blank=True, default='', verbose_name='Shipwreck name'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='abstract', +            field=models.TextField(blank=True, default='', verbose_name='Abstract'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address / Locality'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='cached_label', +            field=models.CharField(blank=True, db_index=True, help_text='Generated automatically - do not edit', max_length=500, null=True, verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='cached_remains', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached remains label'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='cached_towns_label', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached town label'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='code_patriarche', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Code PATRIARCHE'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='common_name', +            field=models.TextField(blank=True, default='', verbose_name='Generic name'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='official_report_number', +            field=models.TextField(blank=True, default='', verbose_name='Official report number'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='scientific_documentation_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment about scientific documentation'), +        ), +        migrations.AlterField( +            model_name='historicaloperation', +            name='seizure_name', +            field=models.TextField(blank=True, default='', verbose_name='Seizure name'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='abstract', +            field=models.TextField(blank=True, default='', verbose_name='Abstract'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address / Locality'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='cached_label', +            field=models.CharField(blank=True, db_index=True, help_text='Generated automatically - do not edit', max_length=500, null=True, verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='cached_periods', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached periods label'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='cached_remains', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached remains label'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='cached_towns_label', +            field=models.TextField(blank=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached town label'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='code_patriarche', +            field=models.TextField(blank=True, default='', unique=True, verbose_name='Code PATRIARCHE'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='common_name', +            field=models.TextField(blank=True, default='', verbose_name='Generic name'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='official_report_number', +            field=models.TextField(blank=True, default='', verbose_name='Official report number'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='scientific_documentation_comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment about scientific documentation'), +        ), +        migrations.AlterField( +            model_name='operation', +            name='seizure_name', +            field=models.TextField(blank=True, default='', verbose_name='Seizure name'), +        ), +        migrations.AlterField( +            model_name='operationtypeold', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='parcel', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address - Locality'), +        ), +        migrations.AlterField( +            model_name='parcel', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='period', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='recordqualitytype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='relationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='remaintype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='reportstate', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +    ] diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index db573a650..cc1231f52 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -310,7 +310,7 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, CompleteIdentifierIte      reference = models.CharField(_("Reference"), max_length=200, unique=True)      other_reference = models.TextField(_("Other reference"), blank=True, -                                       null=True) +                                       default="")      name = models.CharField(_("Name"), max_length=200,                              null=True, blank=True)      periods = models.ManyToManyField(Period, verbose_name=_("Periods"), @@ -322,28 +322,26 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, CompleteIdentifierIte          blank=True)      towns = models.ManyToManyField(Town, verbose_name=_("Towns"),                                     related_name='sites', blank=True) -    comment = models.TextField(_("Comment"), null=True, blank=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      locality_ngi = models.TextField( -        _("National Geographic Institute locality"), -        null=True, blank=True -    ) -    locality_cadastral = models.TextField(_("Cadastral locality"), -                                          null=True, blank=True) +        _("National Geographic Institute locality"), blank=True, default="") +    locality_cadastral = models.TextField(_("Cadastral locality"), blank=True, +                                          default="")      collaborators = models.ManyToManyField(          Person, blank=True, verbose_name=_("Collaborators"),          related_name='site_collaborator'      )      # underwater      shipwreck_name = models.TextField( -        _("Shipwreck name"), null=True, blank=True) +        _("Shipwreck name"), blank=True, default="")      oceanographic_service_localisation = models.TextField( -        _("Oceanographic service localisation"), null=True, blank=True) +        _("Oceanographic service localisation"), blank=True, default="")      shipwreck_code = models.TextField( -        _("Shipwreck code"), null=True, blank=True) +        _("Shipwreck code"), blank=True, default="")      sinking_date = models.DateField(          _("Sinking date"), null=True, blank=True)      discovery_area = models.TextField( -        _("Discovery area"), null=True, blank=True) +        _("Discovery area"), blank=True, default="")      affmar_number = models.CharField(_("AffMar number"), max_length=100,                                       null=True, blank=True)      drassm_number = models.CharField(_("DRASSM number"), max_length=100, @@ -357,19 +355,19 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, CompleteIdentifierIte          on_delete=models.SET_NULL,          verbose_name=_("Main image"), blank=True, null=True)      cached_label = models.TextField( -        _("Cached name"), null=True, blank=True, db_index=True, +        _("Cached name"), blank=True, default="", db_index=True,          help_text=_("Generated automatically - do not edit")      )      cached_towns_label = models.TextField( -        _("Cached town label"), blank=True, null=True, +        _("Cached town label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_periods =  models.TextField( -        _("Cached periods label"), blank=True, null=True, +        _("Cached periods label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_remains =  models.TextField( -        _("Cached remains label"), blank=True, null=True, +        _("Cached remains label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      ) @@ -1099,8 +1097,8 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem,      old_code = models.CharField(_("Old code"), max_length=200, null=True,                                  blank=True)      ## fr -    code_patriarche = models.TextField("Code PATRIARCHE", null=True, -                                       blank=True, unique=True) +    code_patriarche = models.TextField( +        "Code PATRIARCHE", blank=True, default="", unique=True)      # preventive      fnap_financing = models.FloatField("Financement FNAP (%)",                                         blank=True, null=True) @@ -1127,11 +1125,11 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem,      ## end fr      operator_reference = models.CharField(          _("Operator reference"), max_length=20, null=True, blank=True) -    common_name = models.TextField(_("Generic name"), null=True, blank=True) -    address = models.TextField(_("Address / Locality"), null=True, blank=True) -    comment = models.TextField(_("Comment"), null=True, blank=True) +    common_name = models.TextField(_("Generic name"), blank=True, default="") +    address = models.TextField(_("Address / Locality"), blank=True, default="") +    comment = models.TextField(_("Comment"), blank=True, default="")      scientific_documentation_comment = models.TextField( -        _("Comment about scientific documentation"), null=True, blank=True) +        _("Comment about scientific documentation"), blank=True, default="")      documents = models.ManyToManyField(          Document, related_name='operations', verbose_name=_("Documents"),          blank=True) @@ -1159,7 +1157,7 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem,          RecordQualityType, verbose_name=_("Record quality"),          on_delete=models.SET_NULL,          null=True, blank=True,) -    abstract = models.TextField(_("Abstract"), null=True, blank=True) +    abstract = models.TextField(_("Abstract"), blank=True, default="")      documentation_deadline = models.DateField(          _("Deadline for submission of the documentation"), blank=True,          null=True) @@ -1174,9 +1172,9 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem,      drassm_code = models.CharField(_("DRASSM code"), max_length=100,                                     null=True, blank=True)      # judiciary -    seizure_name = models.TextField(_("Seizure name"), blank=True, null=True) +    seizure_name = models.TextField(_("Seizure name"), blank=True, default="")      official_report_number = models.TextField(_("Official report number"), -                                              blank=True, null=True) +                                              blank=True, default="")      protagonist = models.ForeignKey(          Person, verbose_name=_("Name of the protagonist"),          blank=True, null=True, related_name="operation_protagonist") @@ -1187,15 +1185,15 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem,          Person, verbose_name=_("Writer of the minutes"),          blank=True, null=True, related_name="minutes_writer")      cached_towns_label = models.TextField( -        _("Cached town label"), blank=True, null=True, +        _("Cached town label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_periods = models.TextField( -        _("Cached periods label"), blank=True, null=True, +        _("Cached periods label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      )      cached_remains = models.TextField( -        _("Cached remains label"), blank=True, null=True, +        _("Cached remains label"), blank=True, default="",          help_text=_("Generated automatically - do not edit")      ) @@ -2182,16 +2180,15 @@ class AdministrativeAct(BaseHistorizedItem, OwnPerms, ValueGetter):      signature_date = models.DateField(_("Signature date"), blank=True,                                        null=True)      year = models.IntegerField(_("Year"), blank=True, null=True) -    act_object = models.TextField(_("Object"), max_length=300, blank=True, -                                  null=True) +    act_object = models.TextField(_("Object"), blank=True, default="")      if settings.COUNTRY == 'fr':          ref_sra = models.CharField("Référence SRA", max_length=15,                                     blank=True, null=True)          departments_label = models.TextField( -            _("Departments"), blank=True, null=True, +            _("Departments"), blank=True, default="",              help_text=_("Cached values get from associated departments"))      towns_label = models.TextField( -        _("Towns"), blank=True, null=True, +        _("Towns"), blank=True, default="",          help_text=_("Cached values get from associated towns"))      history = HistoricalRecords()      _prefix = 'adminact_' @@ -2425,8 +2422,8 @@ class Parcel(LightHistorizedItem):                                     null=True, blank=True)      auto_external_id = models.BooleanField(          _("External ID is set automatically"), default=False) -    address = models.TextField(_("Address - Locality"), null=True, blank=True) -    cached_label = models.TextField(_("Cached name"), null=True, blank=True, +    address = models.TextField(_("Address - Locality"), blank=True, default="") +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      class Meta: diff --git a/archaeological_warehouse/migrations/0106_auto_20201203_1453.py b/archaeological_warehouse/migrations/0106_auto_20201203_1453.py new file mode 100644 index 000000000..f49debe61 --- /dev/null +++ b/archaeological_warehouse/migrations/0106_auto_20201203_1453.py @@ -0,0 +1,146 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-03 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): +    atomic = False + +    dependencies = [ +        ('archaeological_warehouse', '0105_auto_20201201_1534'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='container', +            name='cached_division', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached division'), +        ), +        migrations.AlterField( +            model_name='container', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Localisation'), +        ), +        migrations.AlterField( +            model_name='container', +            name='cached_location', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached location'), +        ), +        migrations.AlterField( +            model_name='container', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='container', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='container', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='container', +            name='old_reference', +            field=models.TextField(blank=True, default='', verbose_name='Old reference'), +        ), +        migrations.AlterField( +            model_name='containertype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Address complement'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='alt_address', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='alt_address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address complement'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='historicalwarehouse', +            name='raw_phone', +            field=models.TextField(blank=True, default='', verbose_name='Raw phone'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Address complement'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='alt_address', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='alt_address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address complement'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='warehouse', +            name='raw_phone', +            field=models.TextField(blank=True, default='', verbose_name='Raw phone'), +        ), +        migrations.AlterField( +            model_name='warehousedivision', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='warehousetype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +    ] diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 872cc1d68..031f04ed4 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -319,7 +319,7 @@ class Warehouse(Address, DocumentItem, GeoItem, CompleteIdentifierItem,          "ishtar_common.Organization", blank=True, null=True,          related_name='warehouses', verbose_name=_("Organization"),          on_delete=models.SET_NULL) -    comment = models.TextField(_("Comment"), null=True, blank=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      associated_divisions = models.ManyToManyField(          'WarehouseDivision', verbose_name=_("Divisions"), blank=True,          through='WarehouseDivisionLink' @@ -332,7 +332,7 @@ class Warehouse(Address, DocumentItem, GeoItem, CompleteIdentifierItem,          "ishtar_common.Document", related_name='main_image_warehouses',          on_delete=models.SET_NULL,          verbose_name=_("Main image"), blank=True, null=True) -    external_id = models.TextField(_("External ID"), blank=True, null=True) +    external_id = models.TextField(_("External ID"), blank=True, default="")      auto_external_id = models.BooleanField(          _("External ID is set automatically"), default=False)      max_division_number = models.IntegerField( @@ -853,19 +853,19 @@ class Container(DocumentItem, Merge, LightHistorizedItem,                                         verbose_name=_("Container type"),                                         related_name="containers")      reference = models.TextField(_("Container ref.")) -    comment = models.TextField(_("Comment"), null=True, blank=True) -    cached_label = models.TextField(_("Localisation"), null=True, blank=True, +    comment = models.TextField(_("Comment"), blank=True, default="") +    cached_label = models.TextField(_("Localisation"), blank=True, default="",                                      db_index=True)      cached_location = models.TextField(_("Cached location"), -                                       null=True, blank=True, db_index=True) +                                       blank=True, default="", db_index=True)      cached_division = models.TextField(_("Cached division"), -                                       null=True, blank=True, db_index=True) +                                       blank=True, default="", db_index=True)      parent = models.ForeignKey("Container", verbose_name=_("Parent container"),                                 on_delete=models.SET_NULL,                                 related_name="children", blank=True, null=True)      index = models.IntegerField(_("Container ID"), default=0) -    old_reference = models.TextField(_("Old reference"), blank=True, null=True) -    external_id = models.TextField(_("External ID"), blank=True, null=True) +    old_reference = models.TextField(_("Old reference"), blank=True, default="") +    external_id = models.TextField(_("External ID"), blank=True, default="")      auto_external_id = models.BooleanField(          _("External ID is set automatically"), default=False)      documents = models.ManyToManyField( diff --git a/ishtar_common/migrations/0205_auto_20201203_1453.py b/ishtar_common/migrations/0205_auto_20201203_1453.py new file mode 100644 index 000000000..fcea813c6 --- /dev/null +++ b/ishtar_common/migrations/0205_auto_20201203_1453.py @@ -0,0 +1,347 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-03 14:53 +from __future__ import unicode_literals + +from django.db import migrations, models +import ishtar_common.utils + + +class Migration(migrations.Migration): +    atomic = False + +    dependencies = [ +        ('ishtar_common', '0204_auto_20201201_1533'), +    ] + +    operations = [ +        migrations.AlterField( +            model_name='administrationscript', +            name='name', +            field=models.TextField(blank=True, default='', verbose_name='Name'), +        ), +        migrations.AlterField( +            model_name='administrationtask', +            name='result', +            field=models.TextField(blank=True, default='', verbose_name='Result'), +        ), +        migrations.AlterField( +            model_name='area', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='author', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='authortype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='customformjsonfield', +            name='help_text', +            field=models.TextField(blank=True, default='', verbose_name='Help'), +        ), +        migrations.AlterField( +            model_name='document', +            name='additional_information', +            field=models.TextField(blank=True, default='', verbose_name='Additional information'), +        ), +        migrations.AlterField( +            model_name='document', +            name='associated_file', +            field=models.FileField(blank=True, help_text='La taille maximale supportée pour le fichier est de 100 Mo.', max_length=255, null=True, upload_to=ishtar_common.utils.get_image_path, verbose_name='Associated file'), +        ), +        migrations.AlterField( +            model_name='document', +            name='associated_links', +            field=models.TextField(blank=True, default='', verbose_name='Symbolic links'), +        ), +        migrations.AlterField( +            model_name='document', +            name='cache_related_label', +            field=models.TextField(blank=True, db_index=True, default='', help_text='Cached value - do not edit', verbose_name='Related'), +        ), +        migrations.AlterField( +            model_name='document', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='document', +            name='complete_identifier', +            field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), +        ), +        migrations.AlterField( +            model_name='document', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='document', +            name='external_id', +            field=models.TextField(blank=True, default='', verbose_name='External ID'), +        ), +        migrations.AlterField( +            model_name='document', +            name='internal_reference', +            field=models.TextField(blank=True, default='', verbose_name='Internal ref.'), +        ), +        migrations.AlterField( +            model_name='document', +            name='reference', +            field=models.TextField(blank=True, default='', verbose_name='Ref.'), +        ), +        migrations.AlterField( +            model_name='documenttag', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='exporttask', +            name='filter_text', +            field=models.TextField(blank=True, default='', help_text='Textual query on this item (try it on the main interface)', verbose_name='Filter query'), +        ), +        migrations.AlterField( +            model_name='exporttask', +            name='result_info', +            field=models.TextField(blank=True, default='', verbose_name='Result information'), +        ), +        migrations.AlterField( +            model_name='format', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='globalvar', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description of the variable'), +        ), +        migrations.AlterField( +            model_name='globalvar', +            name='value', +            field=models.TextField(blank=True, default='', verbose_name='Value'), +        ), +        migrations.AlterField( +            model_name='historicalorganization', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address'), +        ), +        migrations.AlterField( +            model_name='historicalorganization', +            name='address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Address complement'), +        ), +        migrations.AlterField( +            model_name='historicalorganization', +            name='alt_address', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address'), +        ), +        migrations.AlterField( +            model_name='historicalorganization', +            name='alt_address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address complement'), +        ), +        migrations.AlterField( +            model_name='historicalorganization', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicalorganization', +            name='raw_phone', +            field=models.TextField(blank=True, default='', verbose_name='Raw phone'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Address complement'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='alt_address', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='alt_address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address complement'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='raw_phone', +            field=models.TextField(blank=True, default='', verbose_name='Raw phone'), +        ), +        migrations.AlterField( +            model_name='historicalperson', +            name='surname', +            field=models.CharField(blank=True, help_text='Attention, historical and unfortunate residue in the code of an initial translation error.', max_length=50, null=True, verbose_name='Surname'), +        ), +        migrations.AlterField( +            model_name='ishtarsiteprofile', +            name='description', +            field=models.TextField(blank=True, default='', verbose_name='Description'), +        ), +        migrations.AlterField( +            model_name='ishtarsiteprofile', +            name='homepage', +            field=models.TextField(blank=True, default='', help_text='Homepage of Ishtar - if not defined a default homepage will appear. Use the markdown syntax. {random_image} can be used to display a random image.', verbose_name='Home page'), +        ), +        migrations.AlterField( +            model_name='ishtarsiteprofile', +            name='warning_message', +            field=models.TextField(blank=True, default='', verbose_name='Warning message'), +        ), +        migrations.AlterField( +            model_name='ishtarsiteprofile', +            name='warning_name', +            field=models.TextField(blank=True, default='', verbose_name='Warning name'), +        ), +        migrations.AlterField( +            model_name='language', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='licensetype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='operationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='organization', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address'), +        ), +        migrations.AlterField( +            model_name='organization', +            name='address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Address complement'), +        ), +        migrations.AlterField( +            model_name='organization', +            name='alt_address', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address'), +        ), +        migrations.AlterField( +            model_name='organization', +            name='alt_address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address complement'), +        ), +        migrations.AlterField( +            model_name='organization', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='organization', +            name='raw_phone', +            field=models.TextField(blank=True, default='', verbose_name='Raw phone'), +        ), +        migrations.AlterField( +            model_name='organizationtype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='person', +            name='address', +            field=models.TextField(blank=True, default='', verbose_name='Address'), +        ), +        migrations.AlterField( +            model_name='person', +            name='address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Address complement'), +        ), +        migrations.AlterField( +            model_name='person', +            name='alt_address', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address'), +        ), +        migrations.AlterField( +            model_name='person', +            name='alt_address_complement', +            field=models.TextField(blank=True, default='', verbose_name='Other address: address complement'), +        ), +        migrations.AlterField( +            model_name='person', +            name='cached_label', +            field=models.TextField(blank=True, db_index=True, default='', verbose_name='Cached name'), +        ), +        migrations.AlterField( +            model_name='person', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='person', +            name='raw_phone', +            field=models.TextField(blank=True, default='', verbose_name='Raw phone'), +        ), +        migrations.AlterField( +            model_name='person', +            name='surname', +            field=models.CharField(blank=True, help_text='Attention, historical and unfortunate residue in the code of an initial translation error.', max_length=50, null=True, verbose_name='Surname'), +        ), +        migrations.AlterField( +            model_name='persontype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='profiletype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='searchquery', +            name='label', +            field=models.TextField(blank=True, default='', verbose_name='Label'), +        ), +        migrations.AlterField( +            model_name='searchquery', +            name='query', +            field=models.TextField(blank=True, default='', verbose_name='Query'), +        ), +        migrations.AlterField( +            model_name='sourcetype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='spatialreferencesystem', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='supporttype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +        migrations.AlterField( +            model_name='titletype', +            name='comment', +            field=models.TextField(blank=True, default='', verbose_name='Comment'), +        ), +    ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 38e6a7d17..b728b5387 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -664,8 +664,8 @@ def post_delete_record_relation(sender, instance, **kwargs):  class SearchQuery(models.Model): -    label = models.TextField(_("Label"), blank=True) -    query = models.TextField(_("Query"), blank=True) +    label = models.TextField(_("Label"), blank=True, default="") +    query = models.TextField(_("Query"), blank=True, default="")      content_type = models.ForeignKey(ContentType,                                       verbose_name=_("Content type"))      profile = models.ForeignKey("UserProfile", verbose_name=_("Profile")) @@ -736,9 +736,10 @@ class IshtarSiteProfile(models.Model, Cached):      active = models.BooleanField(_("Current active"), default=False)      experimental_feature = models.BooleanField(          _("Activate experimental feature"), default=False) -    description = models.TextField(_("Description"), null=True, blank=True) -    warning_name = models.TextField(_("Warning name"), blank=True) -    warning_message = models.TextField(_("Warning message"), blank=True) +    description = models.TextField(_("Description"), blank=True, default="") +    warning_name = models.TextField(_("Warning name"), blank=True, default="") +    warning_message = models.TextField(_("Warning message"), blank=True, +                                       default="")      config = models.CharField(          _("Alternate configuration"), max_length=200,          choices=ALTERNATE_CONFIGS_CHOICES, @@ -791,7 +792,7 @@ class IshtarSiteProfile(models.Model, Cached):      parcel_mandatory = models.BooleanField(          _("Parcel are mandatory for context records"), default=True)      homepage = models.TextField( -        _("Home page"), null=True, blank=True, +        _("Home page"), blank=True, default="",          help_text=_("Homepage of Ishtar - if not defined a default homepage "                      "will appear. Use the markdown syntax. {random_image} "                      "can be used to display a random image.")) @@ -1230,7 +1231,7 @@ class CustomFormJsonField(models.Model):      label = models.CharField(_("Label"), max_length=200, blank=True,                               default='')      order = models.IntegerField(verbose_name=_("Order"), default=1) -    help_text = models.TextField(_("Help"), blank=True, null=True) +    help_text = models.TextField(_("Help"), blank=True, default="")      objects = CustomFormJsonFieldManager()      class Meta: @@ -1248,9 +1249,9 @@ class CustomFormJsonField(models.Model):  class GlobalVar(models.Model, Cached):      slug = models.SlugField(_("Variable name"), unique=True) -    description = models.TextField(_("Description of the variable"), -                                   null=True, blank=True) -    value = models.TextField(_("Value"), null=True, blank=True) +    description = models.TextField( +        _("Description of the variable"), blank=True, default="") +    value = models.TextField(_("Value"), blank=True, default="")      objects = SlugModelManager()      class Meta: @@ -1705,7 +1706,7 @@ class Organization(Address, Merge, OwnPerms, ValueGetter, MainItem):      organization_type = models.ForeignKey(OrganizationType,                                            verbose_name=_("Type"))      url = models.URLField(verbose_name=_("Web address"), blank=True, null=True) -    cached_label = models.TextField(_("Cached name"), null=True, blank=True, +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      DOWN_MODEL_UPDATE = ['members'] @@ -1927,12 +1928,12 @@ class Person(Address, Merge, OwnPerms, ValueGetter, MainItem):                                  null=True)      contact_type = models.CharField(_("Contact type"), max_length=300,                                      blank=True, null=True) -    comment = models.TextField(_("Comment"), blank=True, null=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      person_types = models.ManyToManyField(PersonType, verbose_name=_("Types"))      attached_to = models.ForeignKey(          'Organization', related_name='members', on_delete=models.SET_NULL,          verbose_name=_("Is attached to"), blank=True, null=True) -    cached_label = models.TextField(_("Cached name"), null=True, blank=True, +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      DOWN_MODEL_UPDATE = ["author"] @@ -2424,7 +2425,7 @@ class Basket(FullSearch, OwnPerms, ValueGetter, TemplateItem):      IS_BASKET = True      uuid = models.UUIDField(default=uuid.uuid4)      label = models.CharField(_("Label"), max_length=1000) -    comment = models.TextField(_("Comment"), blank=True, null=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      slug = models.SlugField(_("Slug"), blank=True, null=True)      public = models.BooleanField(_("Public"), default=False)      user = models.ForeignKey( @@ -2555,7 +2556,7 @@ class Author(FullSearch):      person = models.ForeignKey(Person, verbose_name=_("Person"),                                 related_name='author')      author_type = models.ForeignKey(AuthorType, verbose_name=_("Author type")) -    cached_label = models.TextField(_("Cached name"), null=True, blank=True, +    cached_label = models.TextField(_("Cached name"), blank=True, default="",                                      db_index=True)      objects = UUIDModelManager() @@ -3013,10 +3014,10 @@ class Document(BaseHistorizedItem, CompleteIdentifierItem, OwnPerms, ImageModel,          help_text=max_size_help())      index = models.IntegerField(verbose_name=_("Index"), blank=True,                                  null=True) -    external_id = models.TextField(_("External ID"), null=True, blank=True) -    reference = models.TextField(_("Ref."), null=True, blank=True) -    internal_reference = models.TextField(_("Internal ref."), null=True, -                                          blank=True) +    external_id = models.TextField(_("External ID"), blank=True, default="") +    reference = models.TextField(_("Ref."), blank=True, default="") +    internal_reference = models.TextField(_("Internal ref."), blank=True, +                                          default="")      source_type = models.ForeignKey(SourceType, verbose_name=_("Type"),                                      on_delete=models.SET_NULL,                                      null=True, blank=True) @@ -3062,22 +3063,22 @@ class Document(BaseHistorizedItem, CompleteIdentifierItem, OwnPerms, ImageModel,          blank=True, null=True,          verbose_name=_("Receipt date in documentation"))      item_number = models.IntegerField(_("Number of items"), default=1) -    description = models.TextField(_("Description"), blank=True, null=True) +    description = models.TextField(_("Description"), blank=True, default="")      container_id = models.PositiveIntegerField(          verbose_name=_("Container ID"), blank=True, null=True)      # container = models.ForeignKey("archaeological_warehouse.Container")      container_ref_id = models.PositiveIntegerField(          verbose_name=_("Container ID"), blank=True, null=True)      # container_ref = models.ForeignKey("archaeological_warehouse.Container") -    comment = models.TextField(_("Comment"), blank=True, null=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      additional_information = models.TextField(_("Additional information"), -                                              blank=True, null=True) +                                              blank=True, default="")      duplicate = models.NullBooleanField(_("Has a duplicate"), blank=True,                                          null=True)      associated_links = models.TextField(_("Symbolic links"), blank=True, -                                        null=True) +                                        default="")      cache_related_label = models.TextField( -        _("Related"), blank=True, null=True, db_index=True, +        _("Related"), blank=True, default="", db_index=True,          help_text=_("Cached value - do not edit"))      class Meta: @@ -3751,8 +3752,7 @@ post_delete.connect(post_save_cache, sender=OperationType)  class AdministrationScript(models.Model):      path = models.CharField(_("Filename"), max_length=30) -    name = models.TextField(_("Name"), -                            null=True, blank=True) +    name = models.TextField(_("Name"), blank=True, default="")      class Meta:          verbose_name = _("Administration script") @@ -3779,7 +3779,7 @@ class AdministrationTask(models.Model):      creation_date = models.DateTimeField(default=datetime.datetime.now)      launch_date = models.DateTimeField(null=True, blank=True)      finished_date = models.DateTimeField(null=True, blank=True) -    result = models.TextField(_("Result"), null=True, blank=True) +    result = models.TextField(_("Result"), blank=True, default="")      class Meta:          verbose_name = _("Administration task") @@ -3886,7 +3886,7 @@ class ExportTask(models.Model):          _("Filter on"), max_length=2, choices=ITEM_TYPES, null=True, blank=True      )      filter_text = models.TextField( -        _("Filter query"), null=True, blank=True, +        _("Filter query"), blank=True, default="",          help_text=_("Textual query on this item (try it on the main "                      "interface)"))      geo = models.BooleanField( @@ -3917,8 +3917,8 @@ class ExportTask(models.Model):      finished_date = models.DateTimeField(null=True, blank=True)      result = models.FileField(_("Result"), null=True, blank=True,                                upload_to="exports/%Y/%m/") -    result_info = models.TextField(_("Result information"), null=True, -                                   blank=True) +    result_info = models.TextField(_("Result information"), blank=True, +                                   default="")      class Meta:          verbose_name = _("Archive - Export") diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index 2374f0bf2..28026536a 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -148,7 +148,7 @@ class GeneralType(Cached, models.Model):              "The slug is the standardized version of the name. It contains "              "only lowercase letters, numbers and hyphens. Each slug must "              "be unique.")) -    comment = models.TextField(_("Comment"), blank=True, null=True) +    comment = models.TextField(_("Comment"), blank=True, default="")      available = models.BooleanField(_("Available"), default=True)      HELP_TEXT = ""      objects = TypeManager() @@ -1896,9 +1896,9 @@ class Address(BaseHistorizedItem):          "phone", "phone_desc", "phone2", "phone_desc2", "phone3", "phone_desc3",          "raw_phone", "mobile_phone", "email", "alt_address_is_prefered"      ) -    address = models.TextField(_("Address"), null=True, blank=True) -    address_complement = models.TextField(_("Address complement"), null=True, -                                          blank=True) +    address = models.TextField(_("Address"), blank=True, default="") +    address_complement = models.TextField( +        _("Address complement"), blank=True, default="")      postal_code = models.CharField(_("Postal code"), max_length=10, null=True,                                     blank=True)      town = models.CharField(_("Town (freeform)"), max_length=150, null=True, @@ -1908,10 +1908,10 @@ class Address(BaseHistorizedItem):          blank=True)      country = models.CharField(_("Country"), max_length=30, null=True,                                 blank=True) -    alt_address = models.TextField(_("Other address: address"), null=True, -                                   blank=True) +    alt_address = models.TextField( +        _("Other address: address"), blank=True, default="")      alt_address_complement = models.TextField( -        _("Other address: address complement"), null=True, blank=True) +        _("Other address: address complement"), blank=True, default="")      alt_postal_code = models.CharField(_("Other address: postal code"),                                         max_length=10, null=True, blank=True)      alt_town = models.CharField(_("Other address: town"), max_length=70, @@ -1929,7 +1929,7 @@ class Address(BaseHistorizedItem):                                blank=True)      phone_desc3 = models.CharField(_("Phone description 3"), max_length=300,                                     null=True, blank=True) -    raw_phone = models.TextField(_("Raw phone"), blank=True, null=True) +    raw_phone = models.TextField(_("Raw phone"), blank=True, default="")      mobile_phone = models.CharField(_("Mobile phone"), max_length=18,                                      null=True, blank=True)      email = models.EmailField( @@ -2673,8 +2673,8 @@ class ImageContainerModel:  class CompleteIdentifierItem(models.Model, ImageContainerModel):      HAS_QR_CODE = True -    complete_identifier = models.TextField(_("Complete identifier"), -                                           blank=True, null=True) +    complete_identifier = models.TextField( +        _("Complete identifier"), blank=True, default="")      custom_index = models.IntegerField("Custom index", blank=True, null=True)      qrcode = models.ImageField(upload_to=get_image_path, blank=True, null=True,                                 max_length=255)  | 
