diff options
6 files changed, 168 insertions, 6 deletions
| diff --git a/archaeological_finds/forms_treatments.py b/archaeological_finds/forms_treatments.py index 4f906f1b9..dbd523450 100644 --- a/archaeological_finds/forms_treatments.py +++ b/archaeological_finds/forms_treatments.py @@ -57,6 +57,11 @@ class TreatmentSelect(HistorySelect):      other_reference = forms.CharField(label=_(u"Other ref."))      year = forms.IntegerField(label=_(u"Year"))      index = forms.IntegerField(label=_(u"Index")) +    scientific_monitoring_manager = forms.IntegerField( +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-person-permissive'), +            associated_model=Person), +        label=_(u"Scientific monitoring manager"))      treatment_types = forms.ChoiceField(label=_(u"Treatment type"), choices=[])      documents__image__isnull = forms.NullBooleanField(label=_(u"Has an image?")) @@ -109,7 +114,7 @@ class TreatmentStateSelect(forms.Select):          };          $("#id_%(name)s").change(%(id)s_check); -        %(id)s_check(); +        setTimeout(function(){ %(id)s_check(); }, 500);          </script>""" % {"name": name, "id": name.replace("-", "_"),                          "exec_list": "','".join(executed_id),                          "message": message} @@ -126,6 +131,7 @@ class BaseTreatmentForm(CustomForm, ManageOldType):      extra_form_modals = ["container", "warehouse", "organization", "person"]      associated_models = {'treatment_type': models.TreatmentType,                           'person': Person, +                         'scientific_monitoring_manager': Person,                           'location': Warehouse,                           'organization': Organization,                           'container': Container, @@ -149,6 +155,12 @@ class BaseTreatmentForm(CustomForm, ManageOldType):              reverse_lazy('autocomplete-warehouse'), associated_model=Warehouse,              new=True),          validators=[valid_id(Warehouse)]) +    scientific_monitoring_manager = forms.IntegerField( +        label=_("Scientific monitoring manager"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-person'), associated_model=Person, +            new=True), +        validators=[valid_id(Person)], required=False)      person = forms.IntegerField(          label=_(u"Responsible"),          widget=widgets.JQueryAutoComplete( @@ -222,9 +234,7 @@ class BaseTreatmentForm(CustomForm, ManageOldType):          q = Person.objects.filter(ishtaruser__pk=user.pk)          if q.count():              person = q.all()[0] -            self.fields['person'].initial = person.pk -            if person.attached_to: -                self.fields['organization'].initial = person.attached_to.pk +            self.fields['scientific_monitoring_manager'].initial = person.pk          # self.fields['target_is_basket'].widget.choices = \          #    ((False, _(u"Single find")), (True, _(u"Basket")))          # TODO @@ -686,6 +696,21 @@ class TreatmentFileSelect(HistorySelect):              associated_model=Organization),          validators=[valid_id(Organization)]) +    end_date = forms.DateField(label=_(u"Closing date"), required=False, +                               widget=DatePicker) +    exhibition_start_before = forms.DateField( +        label=_(u"Exhibition started before"), widget=DatePicker +    ) +    exhibition_start_after = forms.DateField( +        label=_(u"Exhibition started after"), widget=DatePicker +    ) +    exhibition_end_before = forms.DateField( +        label=_(u"Exhibition ended before"), widget=DatePicker +    ) +    exhibition_end_after = forms.DateField( +        label=_(u"Exhibition ended after"), widget=DatePicker +    ) +      def __init__(self, *args, **kwargs):          super(TreatmentFileSelect, self).__init__(*args, **kwargs)          self.fields['type'].choices = models.TreatmentFileType.get_types() @@ -718,7 +743,7 @@ class TreatmentFileFormSelectionMultiple(MultiSearchForm):          validators=[valid_ids(models.TreatmentFile)]) -class TreatmentFileForm(ManageOldType): +class TreatmentFileForm(CustomForm, ManageOldType):      form_label = _(u"Treatment request")      base_models = ['treatment_type_type']      associated_models = { @@ -764,6 +789,12 @@ class TreatmentFileForm(ManageOldType):          widget=widgets.JQueryAutoComplete(              reverse_lazy('autocomplete-findbasket'),              associated_model=models.FindBasket), required=False) +    exhibition_name = forms.CharField(label=_("Exhibition name"), +                                      max_length=200, required=False) +    exhibition_start_date = forms.DateField( +        label=_("Exhibition start date"), required=False, widget=DatePicker) +    exhibition_end_date = forms.DateField( +        label=_("Exhibition end date"), required=False, widget=DatePicker)      comment = forms.CharField(label=_(u"Comment"),                                widget=forms.Textarea, required=False)      creation_date = forms.DateField(label=_(u"Start date"), required=False, @@ -775,6 +806,15 @@ class TreatmentFileForm(ManageOldType):      end_date = forms.DateField(label=_(u"Closing date"), required=False,                                 widget=DatePicker) +    TYPES = [ +        FieldType('type', models.TreatmentFileType), +    ] + +    CONDITIONAL_FIELDS = ( +        (("type", "txt_idx", "loan-for-exhibition"), +         ("exhibition_name", "exhibition_start_date", "exhibition_end_date")), +    ) +      def __init__(self, *args, **kwargs):          user = kwargs.pop('user')          super(TreatmentFileForm, self).__init__(*args, **kwargs) diff --git a/archaeological_finds/migrations/0075_auto_20190916_1822.py b/archaeological_finds/migrations/0075_auto_20190916_1822.py new file mode 100644 index 000000000..3aa52d119 --- /dev/null +++ b/archaeological_finds/migrations/0075_auto_20190916_1822.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2019-09-16 18:22 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('ishtar_common', '0111_ishtarsiteprofile_account_naming_style'), +        ('archaeological_finds', '0074_auto_20190910_1324'), +    ] + +    operations = [ +        migrations.AddField( +            model_name='historicaltreatment', +            name='scientific_monitoring_manager', +            field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='ishtar_common.Person'), +        ), +        migrations.AddField( +            model_name='historicaltreatmentfile', +            name='exhibition_end_date', +            field=models.DateField(blank=True, null=True, verbose_name='Exhibition end date'), +        ), +        migrations.AddField( +            model_name='historicaltreatmentfile', +            name='exhibition_name', +            field=models.TextField(blank=True, null=True, verbose_name='Exhibition name'), +        ), +        migrations.AddField( +            model_name='historicaltreatmentfile', +            name='exhibition_start_date', +            field=models.DateField(blank=True, null=True, verbose_name='Exhibition start date'), +        ), +        migrations.AddField( +            model_name='treatment', +            name='scientific_monitoring_manager', +            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='manage_treatments', to='ishtar_common.Person', verbose_name='Scientific monitoring manager'), +        ), +        migrations.AddField( +            model_name='treatmentfile', +            name='exhibition_end_date', +            field=models.DateField(blank=True, null=True, verbose_name='Exhibition end date'), +        ), +        migrations.AddField( +            model_name='treatmentfile', +            name='exhibition_name', +            field=models.TextField(blank=True, null=True, verbose_name='Exhibition name'), +        ), +        migrations.AddField( +            model_name='treatmentfile', +            name='exhibition_start_date', +            field=models.DateField(blank=True, null=True, verbose_name='Exhibition start date'), +        ), +    ] diff --git a/archaeological_finds/migrations/0076_treatmentfile_change_txt_idx.py b/archaeological_finds/migrations/0076_treatmentfile_change_txt_idx.py new file mode 100644 index 000000000..0cc48d047 --- /dev/null +++ b/archaeological_finds/migrations/0076_treatmentfile_change_txt_idx.py @@ -0,0 +1,18 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.18 on 2019-09-16 18:47 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + +    dependencies = [ +        ('archaeological_finds', '0075_auto_20190916_1822'), +    ] + +    operations = [ +        migrations.RunSQL("""UPDATE archaeological_finds_treatmentfiletype +        SET txt_idx='loan-for-exhibition' WHERE txt_idx='loan_demand_exposure' +        """) +    ] diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 52db8cabe..2a19957c8 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -70,7 +70,8 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,      SHOW_URL = 'show-treatment'      TABLE_COLS = ('year', 'index', 'treatment_types__label',                    'treatment_state__label', -                  'label', 'person__cached_label', +                  'label', 'scientific_monitoring_manager__cached_label', +                  'person__cached_label',                    'start_date', 'downstream_cached_label',                    'upstream_cached_label')      REVERSED_BOOL_FIELDS = ['documents__image__isnull'] @@ -78,6 +79,8 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,          "downstream_cached_label": "downstream__cached_label",          "upstream_cached_label": "upstream__cached_label",          'person__cached_label': 'person__cached_label', +        'scientific_monitoring_manager__cached_label': +        'scientific_monitoring_manager__cached_label',          "person__pk": "person__pk",  # used by dynamic_table_documents      }      COL_LABELS = { @@ -86,6 +89,8 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,          "treatment_types__label": _(u"Type"),          "treatment_state__label": _(u"State"),          "person__cached_label": _(u"Responsible"), +        "scientific_monitoring_manager__cached_label": _( +            "Scientific monitoring manager"),      }      # extra keys than can be passed to save method      EXTRA_SAVED_KEYS = ('items', 'user', 'resulting_find', 'upstream_items', @@ -118,6 +123,10 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,              pgettext_lazy("key for text search", "type"),              'treatment_types__label__iexact'          ), +        'scientific_monitoring_manager': SearchAltName( +            pgettext_lazy("key for text search", "scientific-manager"), +            'scientific_monitoring_manager__cached_label__iexact' +        ),      }      ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES)      HISTORICAL_M2M = [ @@ -172,6 +181,10 @@ class Treatment(DashboardFormItem, ValueGetter, DocumentItem,      person = models.ForeignKey(          Person, verbose_name=_(u"Responsible"), blank=True, null=True,          on_delete=models.SET_NULL, related_name='treatments') +    scientific_monitoring_manager = models.ForeignKey( +        Person, verbose_name=_('Scientific monitoring manager'), blank=True, +        null=True, on_delete=models.SET_NULL, +        related_name='manage_treatments')      organization = models.ForeignKey(          Organization, verbose_name=_(u"Organization"), blank=True, null=True,          on_delete=models.SET_NULL, related_name='treatments') @@ -925,6 +938,22 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,              pgettext_lazy("key for text search", "applicant-organisation"),              'applicant_organisation__cached_label__iexact'          ), +        'exhibition_start_before': SearchAltName( +            pgettext_lazy("key for text search", "exhibition-start-before"), +            'exhibition_start_date__lte' +        ), +        'exhibition_start_after': SearchAltName( +            pgettext_lazy("key for text search", "exhibition-start-after"), +            'exhibition_start_date__gte' +        ), +        'exhibition_end_before': SearchAltName( +            pgettext_lazy("key for text search", "exhibition-end-before"), +            'exhibition_end_date__lte' +        ), +        'exhibition_end_after': SearchAltName( +            pgettext_lazy("key for text search", "exhibition-end-after"), +            'exhibition_end_date__gte' +        ),      }      ALT_NAMES.update(BaseHistorizedItem.ALT_NAMES) @@ -956,6 +985,14 @@ class TreatmentFile(DashboardFormItem, ClosedItem, DocumentItem,          null=True)      reception_date = models.DateField(_(u'Reception date'), blank=True,                                        null=True) +    # exhibition +    exhibition_name = models.TextField(_("Exhibition name"), +                                       blank=True, null=True) +    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)      documents = models.ManyToManyField(          Document, related_name='treatment_files', verbose_name=_(u"Documents"), diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html index 029257f63..e6bd83aab 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatment.html +++ b/archaeological_finds/templates/ishtar/sheet_treatment.html @@ -76,6 +76,7 @@              {% field_flex_detail "Associated request" item.file %}              {% field_flex "Location" item.location %}              {% field_flex "Container" item.container %} +            {% field_flex "Scientific monitoring manager" item.scientific_monitoring_manager %}              {% field_flex "Responsible" item.person %}              {% field_flex "Organization" item.organization %}              {% field_flex "Start date" item.start_date %} diff --git a/archaeological_finds/templates/ishtar/sheet_treatmentfile.html b/archaeological_finds/templates/ishtar/sheet_treatmentfile.html index 072285262..6519e4f47 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatmentfile.html +++ b/archaeological_finds/templates/ishtar/sheet_treatmentfile.html @@ -42,6 +42,15 @@      {% include "ishtar/blocks/sheet_json.html" %}  </div> +{% if item.exhibition_name or item.exhibition_start_date or item.exhibition_end_date %} +<h3>{% trans "Exhibition" %}</h3> +<div class="row"> +    {% field_flex "Name" item.exhibition_name %} +    {% field_flex "Start date" item.exhibition_start_date %} +    {% field_flex "End date" item.exhibition_end_date %} +</div> +{% endif %} +  {% if item.applicant %}  <h3>{% trans "Applicant" %}</h3>  <div class="row"> | 
