diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-06-06 17:11:33 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-06-06 17:11:33 +0200 | 
| commit | 07940735df99aff66b6646fbde7975da26749048 (patch) | |
| tree | 8a5b3794b713c6f740e0a1e0014469ada3688fcb | |
| parent | 6dfabea03aa0c92206c77d99a07c775e80f787e8 (diff) | |
| download | Ishtar-07940735df99aff66b6646fbde7975da26749048.tar.bz2 Ishtar-07940735df99aff66b6646fbde7975da26749048.zip | |
Show treatments in find sheet
| -rw-r--r-- | archaeological_finds/models.py | 40 | ||||
| -rw-r--r-- | archaeological_finds/templates/ishtar/sheet_find.html | 98 | ||||
| -rw-r--r-- | ishtar_common/static/media/style.css | 14 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/blocks/window_field.html | 6 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/blocks/window_field_multiple.html | 6 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/blocks/window_field_url.html | 6 | ||||
| -rw-r--r-- | ishtar_common/templatetags/link_to_window.py | 8 | ||||
| -rw-r--r-- | ishtar_common/templatetags/window_field.py | 27 | 
8 files changed, 152 insertions, 53 deletions
| diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index 0a1e59a68..b84b7614f 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -304,10 +304,10 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):      find_number = models.IntegerField(_("Find number"), blank=True, null=True)      upstream_treatment = models.ForeignKey(          "Treatment", blank=True, null=True, -        related_name='downstream_treatment', +        related_name='downstream',          verbose_name=_("Upstream treatment"))      downstream_treatment = models.ForeignKey( -        "Treatment", blank=True, null=True, related_name='upstream_treatment', +        "Treatment", blank=True, null=True, related_name='upstream',          verbose_name=_("Downstream treatment"))      datings = models.ManyToManyField(Dating, verbose_name=_(u"Dating"),                                       related_name='find') @@ -413,6 +413,42 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms, ShortMenuItem):              bf.context_record.operation.get_reference(),              self.index) +    def upstream_treatments(self): +        treatments = [] +        base_finds = [bf.pk for bf in self.base_finds.all()] +        if self.upstream_treatment and \ +                self.upstream_treatment.pk not in treatments: +            treatments.append((self.upstream_treatment.upstream.distinct( +                ).order_by('label').all(), self.upstream_treatment)) +            for upstream in self.upstream_treatment.upstream.all(): +                if upstream.pk != self.pk and not [ +                        bf.pk for bf in upstream.base_finds.all() +                        if bf.pk in base_finds]: +                    continue +                for items, treatment in upstream.upstream_treatments(): +                    if treatment.pk not in treatments: +                        treatments.append((treatment.upstream.order_by( +                            'label').all(), treatment)) +        return treatments + +    def downstream_treatments(self): +        treatments = [] +        base_finds = [bf.pk for bf in self.base_finds.all()] +        if self.downstream_treatment and \ +                self.downstream_treatment.pk not in treatments: +            treatments.append((self.downstream_treatment.downstream.distinct( +                 ).order_by('label').all(), self.downstream_treatment)) +            for downstream in self.downstream_treatment.downstream.all(): +                if downstream.pk != self.pk and not [ +                        bf.pk for bf in downstream.base_finds.all() +                        if bf.pk in base_finds]: +                    continue +                for items, treatment in downstream.downstream_treatments(): +                    if treatment.pk not in treatments: +                        treatments.append((treatment.downstream.order_by( +                            'label').all(), treatment)) +        return treatments +      def get_department(self):          bf = self.get_first_base_find()          if not bf: diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html index 429a7da2b..ff3dc55dd 100644 --- a/archaeological_finds/templates/ishtar/sheet_find.html +++ b/archaeological_finds/templates/ishtar/sheet_find.html @@ -1,5 +1,5 @@  {% extends "ishtar/sheet.html" %} -{% load i18n window_field from_dict %} +{% load i18n window_field from_dict link_to_window %}  {% block head_sheet %}  {{block.super}} @@ -28,42 +28,82 @@  <a href='{{item.image.url}}' rel="prettyPhoto" title="{{item.label}}"><img src='{{item.thumbnail.url}}'/></a>  {% endif%} -{% field "Free-ID" item.label %} -{% field "Previous ID" item.previous_id %} -{% field "Description" item.description %} -{% field "Created by" item.history_creator.ishtaruser.full_label %} -{% field "Administrative index" item.administrative_index %} -{% field_multiple "Material types" item.material_types %} -{% field "Dating" item.dating %} -{% field "Length (cm)" item.length %} -{% field "Width (cm)" item.width %} -{% field "Height (cm)" item.height %} -{% field "Diameter (cm)" item.diameter %} -{% field "Volume (l)" item.volume %} +<ul class='form-flex'> +{% field_li "Free-ID" item.label %} +{% field_li "Previous ID" item.previous_id %} +{% field_li "Description" item.description %} +{% field_li "Created by" item.history_creator.ishtaruser.full_label %} +{% field_li "Administrative index" item.administrative_index %} +{% field_li_multiple "Material types" item.material_types %} +{% field_li "Dating" item.dating %} +{% field_li "Length (cm)" item.length %} +{% field_li "Width (cm)" item.width %} +{% field_li "Height (cm)" item.height %} +{% field_li "Diameter (cm)" item.diameter %} +{% field_li "Volume (l)" item.volume %}  {% if item.weight %}{% with item.weight|add:' '|add:item.weight_unit as weight %} -{% field "Weight" weight %} +{% field_li "Weight" weight %}  {% endwith %}{% endif %} -{% field "Weight" item.weight %} +{% field_li "Weight" item.weight %} -{% field "Find number" item.find_number %} -{% field "Conservatory state" item.conservatory_state %} -{% field_multiple "Type of preservation to consider" item.preservation_to_considers %} -{% field_multiple "Object types" item.object_types %} -{% field_multiple "Integrity" item.integrities %} +{% field_li "Find number" item.find_number %} +{% field_li "Conservatory state" item.conservatory_state %} +{% field_li_multiple "Type of preservation to consider" item.preservation_to_considers %} +{% field_li_multiple "Object types" item.object_types %} +{% field_li_multiple "Integrity" item.integrities %}  {% if item.CHECK_DICT %} -{% field "Checked" item.checked|from_dict:item.CHECK_DICT %} +{% field_li "Checked" item.checked|from_dict:item.CHECK_DICT %}  {% endif%}  {% if item.history_object and item.history_object.CHECK_DICT %} -{% field "Checked" item.checked|from_dict:item.history_object.CHECK_DICT %} +{% field_li "Checked" item.checked|from_dict:item.history_object.CHECK_DICT %}  {% endif%} +{% field_li "Container" item.container %} +</ul> -{% if item.upstream_treatment %}<p><label>{%trans "Upstream treatment"%}{% trans ":"%}</label> -<span class='value'>{{item.upstream_treatment}} ({% for up in item.upstream_treatment.upstream_treatment.all %}{% if forloop.counter0 %}, {%endif %}{{up}}{% endfor %})</span></p>{% endif%} -{% if item.downstream_treatment %}<p><label>{%trans "Downstream treatment"%}{% trans ":"%}</label> -<span class='value'>{{item.downstream_treatment}} ({% for dt in item.downstream_treatment.downstream_treatment.all %}{% if forloop.counter0 %}, {%endif %}{{dt}}{% endfor %})</span></p>{% endif%} -{% if item.container %}<p><label>{%trans "Container"%}{% trans ":"%}</label> -<span class='value'>{{item.container}}</span></p>{% endif%} +{% if item.upstream_treatment %} +<table class='simple' id='{{window_id}}-upstream'> +  <caption>{% trans "Upstream treatment" %}</caption> +  <tr> +    <th>{% trans "Type" %}</th> +    <th>{% trans "Related find" %}</th> +    <th>{% trans "Person" %}</th> +    <th>{% trans "Start date" %}</th> +    <th>{% trans "End date" %}</th> +  </tr> +  {% for items, treatment in item.upstream_treatments %} +  <tr> +    <td class='string'>{{ treatment.treatment_type }}</td> +    <td class='string'>{% for item in items %}{% if not forloop.first %} ; {% endif %} {{item}} {{ item|link_to_window}}{% endfor %}</td> +    <td class='string'>{{ treatment.person|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> +{% endif %} + +{% if item.downstream_treatment %} +<table class='simple' id='{{window_id}}-downstream'> +  <caption>{% trans "Downstream treatment" %}</caption> +  <tr> +    <th>{% trans "Type" %}</th> +    <th>{% trans "Related find" %}</th> +    <th>{% trans "Person" %}</th> +    <th>{% trans "Start date" %}</th> +    <th>{% trans "End date" %}</th> +  </tr> +  {% for items, treatment in item.downstream_treatments %} +  <tr> +    <td class='string'>{{ treatment.treatment_type }}</td> +    <td class='string'>{% for item in items %}{% if not forloop.first %} ; {% endif %} {{item}} {{ item|link_to_window}}{% endfor %}</td> +    <td class='string'>{{ treatment.person|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> +{% endif %}  <h3>{% trans "Associated base finds"%}</h3> @@ -103,7 +143,7 @@  {% endfor %}  {% if not item.source.count %} -  <p class='alert'>{% trans "No document associated to this find" %}</p> +  <em>{% trans "No document associated to this find" %}</em>  {% else %}  <table class='simple' id='{{window_id}}-docs'>    <caption>{%trans "Documents"%}</caption> diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index 09f74f28d..155d4ce9d 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -546,21 +546,20 @@ ul.form-flex {      margin: 0;  } -  ul.form-flex li{      width: 395px;  }  @media screen and (min-width: 1051px) {      div.form, -    ul.form-flex { +    ul.form-flex{          width: 800px;      }  }  @media screen and (min-width: 1400px) {      div.form, -    ul.form-flex { +    ul.form-flex{          width: 1200px;      }  } @@ -571,6 +570,10 @@ ul.form-flex label {      padding-left: 10px;  } +#window ul.form-flex label { +    width: 150px; +} +  .form table{      padding:0.2em;      margin-left:auto; @@ -946,6 +949,11 @@ table.confirm tr.spacer td:last-child{      width:465px;  } +#window ul.form-flex span.value { +    display: inline-table; +    width: 230px; +} +  .strong{      font-weight:bold;  } diff --git a/ishtar_common/templates/ishtar/blocks/window_field.html b/ishtar_common/templates/ishtar/blocks/window_field.html index 14cf1c21e..969f32dbb 100644 --- a/ishtar_common/templates/ishtar/blocks/window_field.html +++ b/ishtar_common/templates/ishtar/blocks/window_field.html @@ -1,3 +1,3 @@ -{% load i18n %} -{% if data %}<p><label>{% trans caption %}{% trans ":"%}</label> -<span class='value'>{{pre_data|safe}}{{data|linebreaksbr}}{{post_data|safe}}</span></p>{% endif%} +{% load i18n %}{% if data %}{% if li %}<li>{% else %}<p>{% endif %}<label>{% trans caption %}{% trans ":"%}</label> +<span class='value'>{{pre_data|safe}}{{data|linebreaksbr}}{{post_data|safe}}</span>{% if li %}</li>{% else %}</p>{% endif %} +{% endif %} diff --git a/ishtar_common/templates/ishtar/blocks/window_field_multiple.html b/ishtar_common/templates/ishtar/blocks/window_field_multiple.html index 30903b0d5..d1ee25c7b 100644 --- a/ishtar_common/templates/ishtar/blocks/window_field_multiple.html +++ b/ishtar_common/templates/ishtar/blocks/window_field_multiple.html @@ -1,8 +1,6 @@ -{% load i18n %} -{% if data.count %}<p><label>{% trans caption %}{% trans ":"%}</label> +{% load i18n %}{% if data.count %}{% if li %}<li>{% else %}<p>{% endif %}<label>{% trans caption %}{% trans ":"%}</label>      <span class='value'>{% for d in data.all %}          {% if forloop.counter0 %}, {% endif %}{{ d }}      {% endfor %}</span> -</p> +{% if li %}</li>{% else %}</p>{% endif %}  {% endif %} - diff --git a/ishtar_common/templates/ishtar/blocks/window_field_url.html b/ishtar_common/templates/ishtar/blocks/window_field_url.html index b91f318b6..637366d1d 100644 --- a/ishtar_common/templates/ishtar/blocks/window_field_url.html +++ b/ishtar_common/templates/ishtar/blocks/window_field_url.html @@ -1,3 +1,3 @@ -{% load i18n %} -{% if link %}<p><label>{% trans caption %}{% trans ":"%}</label> -<span class='value'><a target="_blank" href='{{link|safe}}'>{% if link_name %}{{link_name}}{% else %}{% trans "link" %}{% endif %}</a></span></p>{% endif%} +{% load i18n %}{% if link %}{% if li %}<li>{% else %}<p>{% endif %}<p><label>{% trans caption %}{% trans ":"%}</label> +<span class='value'><a target="_blank" href='{{link|safe}}'>{% if link_name %}{{link_name}}{% else %}{% trans "link" %}{% endif %}</a></span>{% if li %}</li>{% else %}</p>{% endif %} +{% endif%} diff --git a/ishtar_common/templatetags/link_to_window.py b/ishtar_common/templatetags/link_to_window.py index 5ff928bb1..009a089d2 100644 --- a/ishtar_common/templatetags/link_to_window.py +++ b/ishtar_common/templatetags/link_to_window.py @@ -3,6 +3,7 @@  from django.core.urlresolvers import reverse  from django.template import Library +from django.utils.safestring import mark_safe  from django.utils.translation import ugettext as _  register = Library() @@ -10,10 +11,11 @@ register = Library()  @register.filter  def link_to_window(item): -    return u' <a class="display_details" href="#" '\ -        'onclick="load_window(\'{}\')">{}</a>'.format( +    return mark_safe( +        u' <a class="display_details" href="#" ' +        u'onclick="load_window(\'{}\')">{}</a>'.format(              reverse(item.SHOW_URL, args=[item.pk, '']), -            _("Details")) +            _("Details")))  @register.filter diff --git a/ishtar_common/templatetags/window_field.py b/ishtar_common/templatetags/window_field.py index 34071f60f..269686a91 100644 --- a/ishtar_common/templatetags/window_field.py +++ b/ishtar_common/templatetags/window_field.py @@ -5,22 +5,37 @@ register = template.Library()  @register.inclusion_tag('ishtar/blocks/window_field.html') -def field(caption, data, pre_data='', post_data=''): +def field(caption, data, pre_data='', post_data='', li=False):      if data in (True, False):          data = _(unicode(data))      return {'caption': caption, 'data': data, "pre_data": pre_data, -            'post_data': post_data} +            'post_data': post_data, 'li': li} + + +@register.inclusion_tag('ishtar/blocks/window_field.html') +def field_li(caption, data, pre_data='', post_data=''): +    return field(caption, data, pre_data, post_data, li=True)  @register.inclusion_tag('ishtar/blocks/window_field_url.html') -def field_url(caption, link, link_name=''): +def field_url(caption, link, link_name='', li=False):      if not link:          return u''      if not link.startswith('http://'):          link = 'http://' + link -    return {'caption': caption, 'link': link, "link_name": link_name} +    return {'caption': caption, 'link': link, "link_name": link_name, 'li': li} + + +@register.inclusion_tag('ishtar/blocks/window_field_url.html') +def field_li_url(caption, link, link_name=''): +    return field_url(caption, link, link_name, li=True) + + +@register.inclusion_tag('ishtar/blocks/window_field_multiple.html') +def field_multiple(caption, data, li=False): +    return {'caption': caption, 'data': data, 'li': li}  @register.inclusion_tag('ishtar/blocks/window_field_multiple.html') -def field_multiple(caption, data): -    return {'caption': caption, 'data': data} +def field_li_multiple(caption, data): +    return field_multiple(caption, data, li=True) | 
