diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-30 17:32:49 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-01-30 17:32:49 +0100 |
commit | ec2ef1a59c01d79d0341545b92a07a60dee6321d (patch) | |
tree | 58798681d154dda13d36586f7f4b437f2647d959 | |
parent | 1dc416ca432719e77d3165b2ca06552a34977ecc (diff) | |
download | Ishtar-ec2ef1a59c01d79d0341545b92a07a60dee6321d.tar.bz2 Ishtar-ec2ef1a59c01d79d0341545b92a07a60dee6321d.zip |
Add "created" field on main items in order to facilitate queries
19 files changed, 334 insertions, 27 deletions
diff --git a/archaeological_context_records/migrations/0111_auto_20230127_1503.py b/archaeological_context_records/migrations/0111_auto_20230130_1604.py index b1d36254c..f5b6e5f50 100644 --- a/archaeological_context_records/migrations/0111_auto_20230127_1503.py +++ b/archaeological_context_records/migrations/0111_auto_20230130_1604.py @@ -1,5 +1,6 @@ -# Generated by Django 2.2.24 on 2023-01-27 15:03 +# Generated by Django 2.2.24 on 2023-01-30 16:04 +import datetime from django.db import migrations, models import django.db.models.deletion @@ -11,6 +12,16 @@ class Migration(migrations.Migration): ] operations = [ + migrations.AddField( + model_name='contextrecord', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicalcontextrecord', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), migrations.AlterField( model_name='contextrecord', name='cached_label', diff --git a/archaeological_context_records/migrations/0112_migrate_created.py b/archaeological_context_records/migrations/0112_migrate_created.py new file mode 100644 index 000000000..5d3a112ad --- /dev/null +++ b/archaeological_context_records/migrations/0112_migrate_created.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2023-01-30 17:01 + +from django.db import migrations +from ishtar_common.utils_migrations import migrate_created_field + + +def migrate_created(apps, __): + app_name = "archaeological_context_records" + model_names = [ + "ContextRecord" + ] + migrate_created_field(apps, app_name, model_names) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_context_records', '0111_auto_20230130_1604'), + ] + + operations = [ + migrations.RunPython(migrate_created) + ] diff --git a/archaeological_files/migrations/0110_auto_20230127_1503.py b/archaeological_files/migrations/0110_auto_20230130_1604.py index 6747a4117..e48e76555 100644 --- a/archaeological_files/migrations/0110_auto_20230127_1503.py +++ b/archaeological_files/migrations/0110_auto_20230130_1604.py @@ -1,5 +1,6 @@ -# Generated by Django 2.2.24 on 2023-01-27 15:03 +# Generated by Django 2.2.24 on 2023-01-30 16:04 +import datetime from django.db import migrations, models import django.db.models.deletion @@ -11,6 +12,16 @@ class Migration(migrations.Migration): ] operations = [ + migrations.AddField( + model_name='file', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicalfile', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), migrations.AlterField( model_name='equipmentservicecost', name='price_agreement', diff --git a/archaeological_files/migrations/0111_migrate_created.py b/archaeological_files/migrations/0111_migrate_created.py new file mode 100644 index 000000000..334f6a52f --- /dev/null +++ b/archaeological_files/migrations/0111_migrate_created.py @@ -0,0 +1,23 @@ +# Generated by Django 2.2.24 on 2023-01-30 17:23 + +from django.db import migrations +from ishtar_common.utils_migrations import migrate_created_field + + +def migrate_created(apps, __): + app_name = "archaeological_files" + model_names = [ + "File", + ] + migrate_created_field(apps, app_name, model_names) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_files', '0110_auto_20230130_1604'), + ] + + operations = [ + migrations.RunPython(migrate_created) + ] diff --git a/archaeological_finds/migrations/0111_auto_20230127_1504.py b/archaeological_finds/migrations/0111_auto_20230130_1604.py index e1d833e03..26a252c9a 100644 --- a/archaeological_finds/migrations/0111_auto_20230127_1504.py +++ b/archaeological_finds/migrations/0111_auto_20230130_1604.py @@ -1,5 +1,6 @@ -# Generated by Django 2.2.24 on 2023-01-27 15:04 +# Generated by Django 2.2.24 on 2023-01-30 16:04 +import datetime from django.db import migrations, models import django.db.models.deletion import ishtar_common.utils @@ -18,17 +19,42 @@ class Migration(migrations.Migration): field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), ), migrations.AddField( + model_name='basefind', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='find', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( model_name='historicalbasefind', name='cached_label', field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), ), migrations.AddField( + model_name='historicalbasefind', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicalfind', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( model_name='historicaltreatment', name='complete_identifier', field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), ), migrations.AddField( model_name='historicaltreatment', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicaltreatment', name='custom_index', field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), ), @@ -44,6 +70,11 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name='historicaltreatmentfile', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicaltreatmentfile', name='custom_index', field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), ), @@ -53,12 +84,22 @@ class Migration(migrations.Migration): field=models.TextField(blank=True, max_length=255, null=True), ), migrations.AddField( + model_name='property', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( model_name='treatment', name='complete_identifier', field=models.TextField(blank=True, default='', verbose_name='Complete identifier'), ), migrations.AddField( model_name='treatment', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='treatment', name='custom_index', field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), ), @@ -74,6 +115,11 @@ class Migration(migrations.Migration): ), migrations.AddField( model_name='treatmentfile', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='treatmentfile', name='custom_index', field=models.IntegerField(blank=True, null=True, verbose_name='Custom index'), ), diff --git a/archaeological_finds/migrations/0112_migrate_created.py b/archaeological_finds/migrations/0112_migrate_created.py new file mode 100644 index 000000000..b1676c098 --- /dev/null +++ b/archaeological_finds/migrations/0112_migrate_created.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.24 on 2023-01-30 17:06 + +from django.db import migrations +from ishtar_common.utils_migrations import migrate_created_field + + +def migrate_created(apps, __): + app_name = "archaeological_finds" + model_names = [ + "BaseFind", + "Find", + "Property", + "Treatment", + "TreatmentFile", + ] + migrate_created_field(apps, app_name, model_names) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0111_auto_20230130_1604'), + ] + + operations = [ + migrations.RunPython(migrate_created) + ] diff --git a/archaeological_finds/templates/ishtar/sheet_basefind.html b/archaeological_finds/templates/ishtar/sheet_basefind.html index 85987c320..c3ab1c792 100644 --- a/archaeological_finds/templates/ishtar/sheet_basefind.html +++ b/archaeological_finds/templates/ishtar/sheet_basefind.html @@ -67,17 +67,7 @@ {% if not is_external %} <h3>{% trans "Sheet"%}</h3> <div class='row'> - {% with item.history_creation_date|date:"SHORT_DATETIME_FORMAT" as creation_date %} - {% with item.history_creator.ishtaruser.full_label|add:"<br/><i>"|add:creation_date|add:"</i>" as creator %} - {% field_flex "Created by" creator|safe '' '' first %} - {% endwith %}{% endwith %} - {% if item.history_creation_date != item.last_edition_date %} - {% with item.last_edition_date|date:"SHORT_DATETIME_FORMAT" as edition_date %} - {% with item.history_modifier.ishtaruser.full_label|add:"<br/><i>"|add:edition_date|add:"</i>" as modifier %} - {% trans "Last modified by" as lastmodifiedby_label %} - {% field_flex lastmodifiedby_label modifier|safe '' '' first %} - {% endwith %}{% endwith %} - {% endif %} + {% include "ishtar/blocks/sheet_creation_section.html" %} </div> {% endif %} </div> diff --git a/archaeological_operations/migrations/0111_auto_20230127_1503.py b/archaeological_operations/migrations/0111_auto_20230130_1604.py index 075422d9f..4332347fe 100644 --- a/archaeological_operations/migrations/0111_auto_20230127_1503.py +++ b/archaeological_operations/migrations/0111_auto_20230130_1604.py @@ -1,5 +1,6 @@ -# Generated by Django 2.2.24 on 2023-01-27 15:03 +# Generated by Django 2.2.24 on 2023-01-30 16:04 +import datetime from django.db import migrations, models import django.db.models.deletion @@ -11,6 +12,46 @@ class Migration(migrations.Migration): ] operations = [ + migrations.AddField( + model_name='administrativeact', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='archaeologicalsite', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicaladministrativeact', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicalarchaeologicalsite', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicaloperation', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='operation', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='parcel', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='parcelowner', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), migrations.AlterField( model_name='archaeologicalsite', name='geodata', diff --git a/archaeological_operations/migrations/0112_migrate_created.py b/archaeological_operations/migrations/0112_migrate_created.py new file mode 100644 index 000000000..19978e2f3 --- /dev/null +++ b/archaeological_operations/migrations/0112_migrate_created.py @@ -0,0 +1,27 @@ +# Generated by Django 2.2.24 on 2023-01-30 16:14 + +from django.db import migrations +from ishtar_common.utils_migrations import migrate_created_field + + +def migrate_created(apps, __): + app_name = "archaeological_operations" + model_names = [ + "AdministrativeAct", + "ArchaeologicalSite", + "Operation", + "Parcel", + "ParcelOwner" + ] + migrate_created_field(apps, app_name, model_names) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_operations', '0111_auto_20230130_1604'), + ] + + operations = [ + migrations.RunPython(migrate_created) + ] diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html index 4a71ebc08..8d0b717a3 100644 --- a/archaeological_operations/templates/ishtar/sheet_operation.html +++ b/archaeological_operations/templates/ishtar/sheet_operation.html @@ -266,13 +266,6 @@ {% field_flex_full "Comment about scientific documentation" item.scientific_documentation_comment "<pre>" "</pre>" %} </div> - {% if not is_external %} - <h3>{% trans "Sheet"%}</h3> - <div class="row"> - {% include "ishtar/blocks/sheet_creation_section.html" %} - </div> - {% endif %} - {% if item.virtual_operation %} <div class="alert alert-warning" role="alert"> {% trans "This operation is virtual." %} @@ -317,6 +310,13 @@ {% field_flex "Postal code" item.associated_file.postal_code %} {% endif %} </div> + {% if not is_external %} + <h3>{% trans "Sheet"%}</h3> + <div class="row"> + {% include "ishtar/blocks/sheet_creation_section.html" %} + </div> + {% endif %} + </div> {% if display_sites %} diff --git a/archaeological_warehouse/migrations/0116_auto_20230127_1504.py b/archaeological_warehouse/migrations/0116_auto_20230130_1605.py index 1134ef921..bb25b02bd 100644 --- a/archaeological_warehouse/migrations/0116_auto_20230127_1504.py +++ b/archaeological_warehouse/migrations/0116_auto_20230130_1605.py @@ -1,5 +1,6 @@ -# Generated by Django 2.2.24 on 2023-01-27 15:04 +# Generated by Django 2.2.24 on 2023-01-30 16:05 +import datetime from django.db import migrations, models @@ -11,15 +12,30 @@ class Migration(migrations.Migration): operations = [ migrations.AddField( + model_name='container', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( model_name='historicalwarehouse', name='cached_label', field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), ), migrations.AddField( + model_name='historicalwarehouse', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( model_name='warehouse', name='cached_label', field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), ), + migrations.AddField( + model_name='warehouse', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), migrations.AlterField( model_name='container', name='cached_label', diff --git a/archaeological_warehouse/migrations/0117_migrate_created.py b/archaeological_warehouse/migrations/0117_migrate_created.py new file mode 100644 index 000000000..0c9962a59 --- /dev/null +++ b/archaeological_warehouse/migrations/0117_migrate_created.py @@ -0,0 +1,24 @@ +# Generated by Django 2.2.24 on 2023-01-30 17:20 + +from django.db import migrations +from ishtar_common.utils_migrations import migrate_created_field + + +def migrate_created(apps, __): + app_name = "archaeological_warehouse" + model_names = [ + "Warehouse", + "Container", + ] + migrate_created_field(apps, app_name, model_names) + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_warehouse', '0116_auto_20230130_1605'), + ] + + operations = [ + migrations.RunPython(migrate_created) + ] diff --git a/ishtar_common/migrations/0224_auto_20230127_1503.py b/ishtar_common/migrations/0224_auto_20230130_1604.py index 736e2a88d..524caae16 100644 --- a/ishtar_common/migrations/0224_auto_20230127_1503.py +++ b/ishtar_common/migrations/0224_auto_20230130_1604.py @@ -1,5 +1,6 @@ -# Generated by Django 2.2.24 on 2023-01-27 15:03 +# Generated by Django 2.2.24 on 2023-01-30 16:04 +import datetime from django.db import migrations, models @@ -16,6 +17,21 @@ class Migration(migrations.Migration): field=models.TextField(blank=True, db_index=True, default='', help_text='Generated automatically - do not edit', verbose_name='Cached name'), ), migrations.AddField( + model_name='document', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicalorganization', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='historicalperson', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( model_name='ishtarsiteprofile', name='basefind_cached_label', field=models.TextField(blank=True, default='', help_text='Formula to manage cached label. If not set a default is provided', verbose_name='Base find cached label'), @@ -65,4 +81,14 @@ class Migration(migrations.Migration): name='warehouse_cached_label', field=models.TextField(blank=True, default='', help_text='Formula to manage cached label. If not set a default is provided', verbose_name='Warehouse cached label'), ), + migrations.AddField( + model_name='organization', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), + migrations.AddField( + model_name='person', + name='created', + field=models.DateTimeField(blank=True, default=datetime.datetime.now), + ), ] diff --git a/ishtar_common/migrations/0225_migrate_created.py b/ishtar_common/migrations/0225_migrate_created.py new file mode 100644 index 000000000..1304e8b92 --- /dev/null +++ b/ishtar_common/migrations/0225_migrate_created.py @@ -0,0 +1,25 @@ +# Generated by Django 2.2.24 on 2023-01-30 16:58 + +from django.db import migrations +from ishtar_common.utils_migrations import migrate_created_field + + +def migrate_created(apps, __): + app_name = "ishtar_common" + model_names = [ + "Document", + "Organization", + "Person", + ] + migrate_created_field(apps, app_name, model_names) + + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0224_auto_20230130_1604'), + ] + + operations = [ + migrations.RunPython(migrate_created) + ] diff --git a/ishtar_common/models_common.py b/ishtar_common/models_common.py index f50395dee..2015a82da 100644 --- a/ishtar_common/models_common.py +++ b/ishtar_common/models_common.py @@ -1448,6 +1448,7 @@ class BaseHistorizedItem( null=True, ) last_modified = models.DateTimeField(blank=True, default=datetime.datetime.now) + created = models.DateTimeField(blank=True, default=datetime.datetime.now) history_m2m = JSONField(default=dict, blank=True) need_update = models.BooleanField(verbose_name=_("Need update"), default=False) locked = models.BooleanField( diff --git a/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html b/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html index 46856cad0..78a5ca75f 100644 --- a/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html +++ b/ishtar_common/templates/ishtar/blocks/sheet_creation_section.html @@ -6,10 +6,10 @@ <i class="fa fa-plus-circle" aria-hidden="true"></i> {{item.history_creator.ishtaruser.person}} {{item.history_creator.ishtaruser.person|link_to_window:request}}<br/> - <small>{{item.history_creation_date|date:"DATETIME_FORMAT"}}</small> + <small>{{item.created|date:"DATETIME_FORMAT"}}</small> </div> {% endif %} -{% if not item.last_edition_date or item.history_creation_date != item.last_edition_date %} +{% if not item.last_edition_date or item.created != item.last_edition_date %} <div class="col-12 col-md-6 col-lg-3 flex-wrap text-muted" title="{% trans 'Modification' context 'Sheet' %}"> <i class="fa fa-pencil" aria-hidden="true"></i> diff --git a/ishtar_common/utils_migrations.py b/ishtar_common/utils_migrations.py index 44eae940e..ec0b46509 100644 --- a/ishtar_common/utils_migrations.py +++ b/ishtar_common/utils_migrations.py @@ -185,3 +185,18 @@ def set_uuid_helper(module, model_name): migrate_uuid(model) return set_uuid + + +def migrate_created_field(apps, app_name, model_names): + for model_name in model_names: + model = apps.get_model(app_name, model_name) + try: + model_history = apps.get_model(app_name, "Historical" + model_name) + except: + continue + for item in model.objects.all(): + q = model_history.objects.filter(id=item.pk).order_by("history_date") + if not q.count(): + continue + history_date = q.all()[0].history_date + item.__class__.objects.filter(pk=item.pk).update(created=history_date) diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 531eef995..839480ba7 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -1633,7 +1633,7 @@ def _get_json_stats( DEFAULT_ROW_NUMBER = 10 # length is used by ajax DataTables requests EXCLUDED_FIELDS = ["length"] -BASE_DATED_FIELDS = ["last_modified"] +BASE_DATED_FIELDS = ["created", "last_modified"] def get_item( diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index d8c789018..aa3ef68ab 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -2155,6 +2155,7 @@ DOCUMENT_EXCLUDED = models.Document.RELATED_MODELS + [ "search_vector", "imports", "last_modified", + "created", "document", ] |