diff options
| -rw-r--r-- | archaeological_finds/migrations/0039_auto_20181115_1649.py (renamed from archaeological_finds/migrations/0039_auto_20181113_1600.py) | 17 | ||||
| -rw-r--r-- | archaeological_finds/models_finds.py | 1 | ||||
| -rw-r--r-- | archaeological_finds/models_treatments.py | 46 | ||||
| -rw-r--r-- | archaeological_finds/templates/ishtar/sheet_find.html | 39 | ||||
| -rw-r--r-- | archaeological_finds/templates/ishtar/sheet_treatment.html | 5 | 
5 files changed, 80 insertions, 28 deletions
| diff --git a/archaeological_finds/migrations/0039_auto_20181113_1600.py b/archaeological_finds/migrations/0039_auto_20181115_1649.py index 08877d66b..3752c173c 100644 --- a/archaeological_finds/migrations/0039_auto_20181113_1600.py +++ b/archaeological_finds/migrations/0039_auto_20181115_1649.py @@ -1,9 +1,8 @@  # -*- coding: utf-8 -*- -# Generated by Django 1.11.10 on 2018-11-13 16:00 +# Generated by Django 1.11.10 on 2018-11-15 16:49  from __future__ import unicode_literals  from django.db import migrations, models -import django.db.models.deletion  import virtualtime @@ -20,18 +19,18 @@ class Migration(migrations.Migration):              field=models.DateTimeField(default=virtualtime.virtual_datetime.now),          ),          migrations.AddField( -            model_name='historicaltreatment', -            name='find', -            field=models.ForeignKey(blank=True, db_constraint=False, null=True, on_delete=django.db.models.deletion.DO_NOTHING, related_name='+', to='archaeological_finds.Find'), -        ), -        migrations.AddField(              model_name='treatment',              name='creation_date',              field=models.DateTimeField(default=virtualtime.virtual_datetime.now),          ),          migrations.AddField(              model_name='treatment', -            name='find', -            field=models.ForeignKey(blank=True, help_text='Related find for non-destructive treatment', null=True, on_delete=django.db.models.deletion.CASCADE, related_name='treatments', to='archaeological_finds.Find', verbose_name='Find'), +            name='finds', +            field=models.ManyToManyField(blank=True, help_text='Related finds for non-destructive treatment', related_name='treatments', to='archaeological_finds.Find', verbose_name='Finds'), +        ), +        migrations.AddField( +            model_name='treatmenttype', +            name='destructive', +            field=models.BooleanField(default=False, verbose_name='Destructive'),          ),      ] diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index e53ad6e6d..3483113d7 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -91,6 +91,7 @@ post_delete.connect(post_save_cache, sender=ConservatoryState)  class TreatmentType(HierarchicalType):      order = models.IntegerField(_(u"Order"), default=10)      virtual = models.BooleanField(_(u"Virtual")) +    destructive = models.BooleanField(_(u"Destructive"), default=False)      upstream_is_many = models.BooleanField(          _(u"Upstream is many"), default=False,          help_text=_( diff --git a/archaeological_finds/models_treatments.py b/archaeological_finds/models_treatments.py index 0bf3cad38..61d4ce5be 100644 --- a/archaeological_finds/models_treatments.py +++ b/archaeological_finds/models_treatments.py @@ -148,9 +148,9 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,      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) -    find = models.ForeignKey( -        "Find", verbose_name=_(u"Find"), related_name='treatments', blank=True, -        null=True, help_text=_(u"Related find for non-destructive treatment")) +    finds = models.ManyToManyField( +        "Find", verbose_name=_(u"Finds"), related_name='treatments', blank=True, +        help_text=_(u"Related finds for non-destructive treatment"))      container = models.ForeignKey(Container, verbose_name=_(u"Container"),                                    blank=True, null=True)      estimated_cost = models.FloatField(_(u"Estimated cost"), @@ -181,6 +181,7 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,              ("change_own_treatment", u"Can change own Treatment"),              ("delete_own_treatment", u"Can delete own Treatment"),          ) +        ordering = ("start_date", )      def __unicode__(self):          if self.cached_label: @@ -193,6 +194,10 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,      def short_class_name(self):          return _(u"TREATMENT") +    @property +    def limited_finds(self): +        return self.finds.all()[:15] +      def natural_key(self):          return (self.external_id, ) @@ -300,21 +305,30 @@ class Treatment(DashboardFormItem, ValueGetter, BaseHistorizedItem,          updated = []          if hasattr(items, "items"):              items = items.items.all() + +        tps = list(self.treatment_types.all()) +        has_destructive_tp = bool([tp for tp in tps if tp.destructive])          for item in items: -            new = item.duplicate(user) -            item.downstream_treatment = self -            item.save() -            new.upstream_treatment = self -            for k in extra_args_for_new: -                setattr(new, k, extra_args_for_new[k]) -            new.save() -            updated.append(new.pk) -            # update baskets -            for basket in \ -                    FindBasket.objects.filter(items__pk=item.pk).all(): -                basket.items.remove(item) -                basket.items.add(new) +            if not has_destructive_tp: +                self.finds.add(item) +            else: +                new = item.duplicate(user) +                item.downstream_treatment = self +                item.save() +                new.upstream_treatment = self +                for k in extra_args_for_new: +                    setattr(new, k, extra_args_for_new[k]) +                new.save() +                updated.append(new.pk) +                # update baskets +                for basket in \ +                        FindBasket.objects.filter(items__pk=item.pk).all(): +                    basket.items.remove(item) +                    basket.items.add(new) +          # manage containers +        if not self.container: +            return          for find in Find.objects.filter(upstream_treatment=self).all():              if find.container != self.container:                  find.container = self.container diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html index 021ea5652..a3ad9fca5 100644 --- a/archaeological_finds/templates/ishtar/sheet_find.html +++ b/archaeological_finds/templates/ishtar/sheet_find.html @@ -167,8 +167,41 @@  </div>  {% endif %} -{% if item.upstream_treatment or item.downstream_treatment %} +{% if item.upstream_treatment or item.downstream_treatment or item.treatments.count %}  <h3>{% trans "Treatments"%}</h3> +    <table id='{{window_id}}-treatments' class="table table-striped"> +        <tr> +            <th> </th> +            <th>{% trans "Year - index" %}</th> +            <th>{% trans "Label" %}</th> +            <th>{% trans "Type" %}</th> +            <th>{% trans "State" %}</th> +            <th>{% trans "Related finds (max. 15 displayed)" %}</th> +            <th>{% trans "Doer" %}</th> +            <th>{% trans "Container" %}</th> +            <th>{% trans "Start date" %}</th> +            <th>{% trans "End date" %}</th> +        </tr> +        {% for treatment in item.treatments.all %} +        <tr> +            <td> +                <a class="display_details" href="#" +                   onclick="load_window('{% url 'show-treatment' treatment.id %}/');"> +                    <i class="fa fa-info-circle" aria-hidden="true"></i> +                </a> +            </td> +            <td class='string'>{{ treatment.year }} - {{treatment.index}}</td> +            <td class='string'>{{ treatment.label|default_if_none:"-" }}</td> +            <td class='string'>{{ treatment.treatment_types_lbl }}</td> +            <td class='string'>{{ treatment.treatment_state|default_if_none:"-" }}</td> +            <td class='item-list'>{% for it in treatment.limited_finds %}<span>{{it}} {{it|link_to_window}}</span>{% endfor %}</td> +            <td class='string'>{{ treatment.person|default_if_none:"-" }}</td> +            <td class='string'>{{ treatment.container|default_if_none:"-" }}</td> +            <td class='string'>{{ treatment.start_date|default_if_none:"-" }}</td> +            <td class='string'>{{ treatment.end_date|default_if_none:"-" }}</td> +        </tr> +        {% endfor %} +    </table>  {% if item.upstream_treatment %}  <h3>{% trans "Upstream treatment" %}</h3> @@ -197,7 +230,7 @@      <td class='string'>{{ treatment.label|default_if_none:"-" }}</td>      <td class='string'>{{ treatment.treatment_types_lbl }}</td>      <td class='string'>{{ treatment.treatment_state|default_if_none:"-" }}</td> -    <td class='item-list'>{% for item in items %}<span>{{item}} {{ item|link_to_window}}</span>{% endfor %}</td> +    <td class='item-list'>{% for it in items %}<span>{{it}} {{it|link_to_window}}</span>{% endfor %}</td>      <td class='string'>{{ treatment.person|default_if_none:"-" }}</td>      <td class='string'>{{ treatment.container|default_if_none:"-" }}</td>      <td class='string'>{{ treatment.start_date|default_if_none:"-" }}</td> @@ -235,7 +268,7 @@      <td class='string'>{{ treatment.label|default_if_none:"-" }}</td>      <td class='string'>{{ treatment.treatment_types_lbl }}</td>      <td class='string'>{{ treatment.treatment_state|default_if_none:"-" }}</td> -    <td class='item-list'>{% for item in items %}<span>{{item}} {{ item|link_to_window}}</span>{% endfor %}</td> +    <td class='item-list'>{% for it in items %}<span>{{it}} {{ it|link_to_window}}</span>{% endfor %}</td>      <td class='string'>{{ treatment.person|default_if_none:"" }}</td>      <td class='string'>{{ treatment.container|default_if_none:"-" }}</td>      <td class='string'>{{ treatment.start_date|default_if_none:"" }}</td> diff --git a/archaeological_finds/templates/ishtar/sheet_treatment.html b/archaeological_finds/templates/ishtar/sheet_treatment.html index e9c9c0758..94569b5f6 100644 --- a/archaeological_finds/templates/ishtar/sheet_treatment.html +++ b/archaeological_finds/templates/ishtar/sheet_treatment.html @@ -53,6 +53,11 @@      {% include "ishtar/blocks/sheet_json.html" %}  </div> +{% trans "Related finds" as finds %} +{% if item.finds.count %} +{% dynamic_table_document finds 'finds_for_treatment' 'treatments' item.pk 'TABLE_COLS_FOR_OPE' output %} +{% endif %} +  {% trans "Upstream finds" as finds %}  {% if item.upstream.count %}  {% dynamic_table_document finds 'finds_for_treatment' 'downstream_treatment' item.pk 'TABLE_COLS_FOR_OPE' output %} | 
