summaryrefslogtreecommitdiff
path: root/archaeological_operations
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-23 14:43:48 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-09-23 14:43:48 +0200
commit78e232902e214ef0eee1521b2c76057b3b53df32 (patch)
tree2abd184b08e73352ccb9ddb078b1d48122b5e472 /archaeological_operations
parent18f5651ca2025a658397ba70acc24b42ebacd12d (diff)
downloadIshtar-78e232902e214ef0eee1521b2c76057b3b53df32.tar.bz2
Ishtar-78e232902e214ef0eee1521b2c76057b3b53df32.zip
Hide parcel field for UE QA - Add cultural atribution for sites
Diffstat (limited to 'archaeological_operations')
-rw-r--r--archaeological_operations/admin.py16
-rw-r--r--archaeological_operations/forms.py22
-rw-r--r--archaeological_operations/lookups.py9
-rw-r--r--archaeological_operations/migrations/0070_auto_20190923_1408.py42
-rw-r--r--archaeological_operations/models.py21
-rw-r--r--archaeological_operations/templates/ishtar/sheet_site.html1
6 files changed, 105 insertions, 6 deletions
diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py
index b6300cdf2..0aec94249 100644
--- a/archaeological_operations/admin.py
+++ b/archaeological_operations/admin.py
@@ -28,7 +28,8 @@ from django.contrib.gis.forms import PointField, MultiPolygonField, OSMWidget
from django.utils.translation import ugettext_lazy as _
from ishtar_common.apps import admin_site
-from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin
+from ishtar_common.admin import HistorizedObjectAdmin, GeneralTypeAdmin, \
+ HierarchicalTypeAdmin
from . import models
@@ -206,6 +207,19 @@ class ParcelOwnerAdmin(HistorizedObjectAdmin):
admin_site.register(models.ParcelOwner, ParcelOwnerAdmin)
+class CulturalAttributionTypeAdmin(HierarchicalTypeAdmin):
+ list_display = HierarchicalTypeAdmin.list_display
+ search_fields = ('label', 'parent__label', )
+ model = models.CulturalAttributionType
+ form = make_ajax_form(model, {
+ 'parent': 'cultural_attribution_type',
+ })
+
+
+admin_site.register(models.CulturalAttributionType,
+ CulturalAttributionTypeAdmin)
+
+
general_models = [models.RemainType]
for model in general_models:
admin_site.register(model, GeneralTypeAdmin)
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index a03513861..4ea0847bf 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -1216,6 +1216,7 @@ class PeriodForm(CustomForm, ManageOldType, forms.Form):
class ArchaeologicalSiteForm(ManageOldType):
associated_models = {'period': models.Period, 'remain': models.RemainType,
+ 'cultural_attribution': models.CulturalAttributionType,
'spatial_reference_system': SpatialReferenceSystem}
HEADERS = {}
reference = forms.CharField(label=_(u"Reference"), max_length=200)
@@ -1226,6 +1227,10 @@ class ArchaeologicalSiteForm(ManageOldType):
remains = forms.MultipleChoiceField(
label=_("Remains"), choices=[], widget=widgets.Select2Multiple,
required=False)
+ cultural_attributions = forms.MultipleChoiceField(
+ label=_("Cultural attributions"), choices=[],
+ widget=widgets.Select2Multiple,
+ required=False)
HEADERS['x'] = FormHeader(_(u"Coordinates"))
x = forms.FloatField(label=_(u"X"), required=False)
estimated_error_x = forms.FloatField(label=_(u"Estimated error for X"),
@@ -1253,6 +1258,8 @@ class ArchaeologicalSiteForm(ManageOldType):
TYPES = [
FieldType('periods', models.Period, True),
FieldType('remains', models.RemainType, True),
+ FieldType('cultural_attributions', models.CulturalAttributionType,
+ True),
FieldType('spatial_reference_system', SpatialReferenceSystem),
]
@@ -1296,11 +1303,14 @@ class ArchaeologicalSiteForm(ManageOldType):
periods = dct.pop('periods')
remains = dct.pop('remains')
+ cultural_attributions = dct.pop('cultural_attributions')
item = models.ArchaeologicalSite.objects.create(**dct)
for period in periods:
item.periods.add(period)
for remain in remains:
item.remains.add(remain)
+ for cultural_attribution in cultural_attributions:
+ item.cultural_attributions.add(cultural_attribution)
return item
@@ -1366,6 +1376,8 @@ class SiteSelect(HistorySelect):
name = forms.CharField(label=_(u"Name"), max_length=200, required=False)
periods = forms.ChoiceField(label=_(u"Periods"), choices=[], required=False)
remains = forms.ChoiceField(label=_(u"Remains"), choices=[], required=False)
+ cultural_attributions = forms.ChoiceField(
+ label=_("Cultural attribution"), choices=[], required=False)
towns = get_town_field()
towns__areas = forms.ChoiceField(label=_("Areas"), choices=[])
comment = forms.CharField(label=_(u"Comment"), max_length=200,
@@ -1409,6 +1421,7 @@ class SiteSelect(HistorySelect):
TYPES = [
FieldType('periods', models.Period),
FieldType('remains', models.RemainType),
+ FieldType('cultural_attributions', models.CulturalAttributionType),
FieldType('towns__areas', Area),
]
@@ -1467,8 +1480,9 @@ class SiteForm(CustomForm, ManageOldType):
form_slug = u"archaeological_site-010-general"
associated_models = {'period': models.Period, 'remain': models.RemainType,
'spatial_reference_system': SpatialReferenceSystem,
+ 'cultural_attribution': models.CulturalAttributionType,
'collaborator': Person}
- base_models = ["period", "remain", "collaborator"]
+ base_models = ["period", "remain", "collaborator", "cultural_attribution"]
pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
reference = forms.CharField(label=_(u"Reference"), max_length=200)
@@ -1479,6 +1493,10 @@ class SiteForm(CustomForm, ManageOldType):
remain = forms.MultipleChoiceField(
label=_("Remains"), choices=[], widget=widgets.Select2Multiple,
required=False)
+ cultural_attribution = forms.MultipleChoiceField(
+ label=_("Cultural attributions"), choices=[],
+ widget=widgets.Select2Multiple,
+ required=False)
collaborator = widgets.Select2MultipleField(
model=Person, label=_("Collaborators"), required=False, remote=True)
comment = forms.CharField(label=_(u"Comment"), widget=forms.Textarea,
@@ -1519,6 +1537,8 @@ class SiteForm(CustomForm, ManageOldType):
TYPES = [
FieldType('period', models.Period, True),
FieldType('remain', models.RemainType, True),
+ FieldType('cultural_attribution',
+ models.CulturalAttributionType, True),
FieldType('spatial_reference_system', SpatialReferenceSystem),
]
diff --git a/archaeological_operations/lookups.py b/archaeological_operations/lookups.py
index 8329da709..2d70029ce 100644
--- a/archaeological_operations/lookups.py
+++ b/archaeological_operations/lookups.py
@@ -1,13 +1,13 @@
from ajax_select import register
-from ishtar_common.lookups import LookupChannel
+from ishtar_common.lookups import LookupChannel, TypeLookupChannel
from django.db.models import Q
from django.utils.encoding import force_text
from django.utils.html import escape
from archaeological_operations.models import Operation, ArchaeologicalSite, \
- Parcel
+ Parcel, CulturalAttributionType
@register('operation')
@@ -76,3 +76,8 @@ class ParcelLookup(LookupChannel):
def format_item_display(self, item):
return u"<span class='ajax-label'>%s</span>" % item.long_label()
+
+
+@register("cultural_attribution_type")
+class CulturalAttributionTypeLookup(TypeLookupChannel):
+ model = CulturalAttributionType
diff --git a/archaeological_operations/migrations/0070_auto_20190923_1408.py b/archaeological_operations/migrations/0070_auto_20190923_1408.py
new file mode 100644
index 000000000..13e1ac7d4
--- /dev/null
+++ b/archaeological_operations/migrations/0070_auto_20190923_1408.py
@@ -0,0 +1,42 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.18 on 2019-09-23 14:08
+from __future__ import unicode_literals
+
+import django.core.validators
+from django.db import migrations, models
+import django.db.models.deletion
+import ishtar_common.models
+import re
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('archaeological_operations', '0069_auto_20190918_1520'),
+ ]
+
+ operations = [
+ migrations.CreateModel(
+ name='CulturalAttributionType',
+ fields=[
+ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+ ('label', models.TextField(verbose_name='Label')),
+ ('txt_idx', models.TextField(help_text='The slug is the standardized version of the name. It contains only lowercase letters, numbers and hyphens. Each slug must be unique.', unique=True, validators=[django.core.validators.RegexValidator(re.compile('^[-a-zA-Z0-9_]+\\Z', 32), "Enter a valid 'slug' consisting of letters, numbers, underscores or hyphens.", 'invalid')], verbose_name='Textual ID')),
+ ('comment', models.TextField(blank=True, null=True, verbose_name='Comment')),
+ ('available', models.BooleanField(default=True, verbose_name='Available')),
+ ('order', models.IntegerField(verbose_name='Order')),
+ ('parent', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='archaeological_operations.CulturalAttributionType', verbose_name='Parent')),
+ ],
+ options={
+ 'ordering': ('order',),
+ 'verbose_name_plural': 'Cultural attribution types',
+ 'verbose_name': 'Cultural attribution type',
+ },
+ bases=(ishtar_common.models.Cached, models.Model),
+ ),
+ migrations.AddField(
+ model_name='archaeologicalsite',
+ name='cultural_attributions',
+ field=models.ManyToManyField(blank=True, to='archaeological_operations.CulturalAttributionType', verbose_name='Cultural attribution'),
+ ),
+ ]
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index 55594bcd9..d452bbb39 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -41,7 +41,8 @@ from ishtar_common.models import BaseHistorizedItem, Dashboard, \
post_delete_record_relation, post_save_cache, RelationItem, \
ShortMenuItem, SourceType, Town, ValueGetter, get_current_profile, \
document_attached_changed, HistoryModel, SearchAltName, \
- GeoItem, QRCodeItem, SearchVectorConfig, DocumentItem, QuickAction, MainItem
+ GeoItem, QRCodeItem, SearchVectorConfig, DocumentItem, QuickAction, \
+ MainItem, HierarchicalType
from ishtar_common.model_managers import UUIDModelManager
from ishtar_common.utils import cached_label_changed, \
force_cached_label_changed, mode, m2m_historization_changed, post_save_geo
@@ -106,6 +107,15 @@ class RecordQualityType(GeneralType):
ordering = ('order',)
+class CulturalAttributionType(HierarchicalType):
+ order = models.IntegerField(_("Order"))
+
+ class Meta:
+ verbose_name = _("Cultural attribution type")
+ verbose_name_plural = _("Cultural attribution types")
+ ordering = ('order',)
+
+
post_save.connect(post_save_cache, sender=RecordQualityType)
post_delete.connect(post_save_cache, sender=RecordQualityType)
@@ -242,6 +252,10 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem,
pgettext_lazy("key for text search", "numero-affmar"),
'affmar_number__iexact'
),
+ 'cultural_attributions': SearchAltName(
+ pgettext_lazy("key for text search", "cultural-attribution'"),
+ 'cultural_attributions__label__iexact'
+ ),
}
ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES)
@@ -252,7 +266,7 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem,
RELATIVE_SESSION_NAMES = [
('operation', 'operations__pk'),
]
- HISTORICAL_M2M = ['periods', 'remains', 'towns']
+ HISTORICAL_M2M = ['periods', 'remains', 'towns', 'cultural_attributions']
CACHED_LABELS = ['cached_label', 'cached_towns_label', 'cached_periods',
'cached_remains']
DOWN_MODEL_UPDATE = ["context_records"]
@@ -275,6 +289,9 @@ class ArchaeologicalSite(DocumentItem, BaseHistorizedItem, QRCodeItem,
blank=True)
remains = models.ManyToManyField("RemainType", verbose_name=_(u'Remains'),
blank=True)
+ cultural_attributions = models.ManyToManyField(
+ "CulturalAttributionType", verbose_name=_("Cultural attribution"),
+ blank=True)
towns = models.ManyToManyField(Town, verbose_name=_("Towns"),
related_name='sites', blank=True)
comment = models.TextField(_("Comment"), null=True, blank=True)
diff --git a/archaeological_operations/templates/ishtar/sheet_site.html b/archaeological_operations/templates/ishtar/sheet_site.html
index 7b88ff630..91e6e7307 100644
--- a/archaeological_operations/templates/ishtar/sheet_site.html
+++ b/archaeological_operations/templates/ishtar/sheet_site.html
@@ -36,6 +36,7 @@
{% include "ishtar/blocks/sheet_creation_section.html" %}
{% field_flex_multiple_obj "Periods" item 'periods' %}
{% field_flex_multiple_obj "Remains" item 'remains' %}
+ {% field_flex_multiple_obj "Cultural attributions" item 'cultural_attributions' %}
{% field_flex_multiple "Collaborators" item.collaborators %}
{% field_flex_full "Comment" item.comment "<pre>" "</pre>" %}
</div>