diff options
| -rw-r--r-- | archaeological_warehouse/models.py | 23 | ||||
| -rw-r--r-- | archaeological_warehouse/templates/ishtar/sheet_warehouse.html | 25 | ||||
| -rw-r--r-- | archaeological_warehouse/urls.py | 4 | ||||
| -rw-r--r-- | archaeological_warehouse/views.py | 8 | ||||
| -rw-r--r-- | ishtar_common/templatetags/window_tables.py | 6 | ||||
| -rw-r--r-- | ishtar_common/views_item.py | 8 | 
6 files changed, 65 insertions, 9 deletions
| diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py index 4b7201bcc..a8a38c34d 100644 --- a/archaeological_warehouse/models.py +++ b/archaeological_warehouse/models.py @@ -31,6 +31,7 @@ from django.db.models.signals import post_save, post_delete, m2m_changed  from django.template.defaultfilters import slugify  from ishtar_common.utils import ugettext_lazy as _, pgettext_lazy +from django.apps import apps  from ishtar_common.data_importer import post_importer_action  from ishtar_common.model_managers import ExternalIdManager, UUIDModelManager  from ishtar_common.models import Document, GeneralType, get_external_id, \ @@ -155,6 +156,28 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem,          return self.name      @property +    def number_divisions(self): +        return Container.objects.filter( +            location=self.pk, container_type__stationary=True).count() + +    @property +    def number_containers(self): +        return Container.objects.filter( +            location=self.pk, container_type__stationary=False).count() + +    @property +    def number_finds(self): +        Find = apps.get_model("archaeological_finds", "Find") +        return Find.objects.filter( +            container__location_id=self.pk).count() + +    @property +    def number_owned_finds(self): +        Find = apps.get_model("archaeological_finds", "Find") +        return Find.objects.filter( +            container_ref__location_id=self.pk).count() + +    @property      def short_label(self):          return self.name diff --git a/archaeological_warehouse/templates/ishtar/sheet_warehouse.html b/archaeological_warehouse/templates/ishtar/sheet_warehouse.html index aec248b07..8e143aae9 100644 --- a/archaeological_warehouse/templates/ishtar/sheet_warehouse.html +++ b/archaeological_warehouse/templates/ishtar/sheet_warehouse.html @@ -60,12 +60,28 @@          <div class='row'> -            {% include "ishtar/blocks/sheet_creation_section.html" %} +            <dl class="col-6 col-md-3 flex-wrap"> +                <dt>{% trans "Number of container" %}</dt> +                <dd>{{item.number_containers}}</dd> +            </dl> +            <dl class="col-6 col-md-3 flex-wrap"> +                <dt>{% trans "Number of divisions" %}</dt> +                <dd>{{item.number_divisions}}</dd> +            </dl> +            <dl class="col-6 col-md-3 flex-wrap"> +                <dt>{% trans "Number of finds" %}</dt> +                <dd>{{item.number_finds}}</dd> +            </dl> +            <dl class="col-6 col-md-3 flex-wrap"> +                <dt>{% trans "Number of owned finds" %}</dt> +                <dd>{{item.number_owned_finds}}</dd> +            </dl>              {% field_flex_detail "Person in charge" item.person_in_charge %}              {% field_flex_detail "Organization" item.organization %} -            {% trans "Default divisions" as def_div_label %} +            {% trans "Default divisions (imports)" as def_div_label %}              {% field_flex def_div_label item.default_location_types|join:", " %}              {% field_flex_full "Comment" item.comment "<pre>" "</pre>" %} +            {% include "ishtar/blocks/sheet_creation_section.html" %}              {% include "ishtar/blocks/sheet_json.html" %}          </div> @@ -87,10 +103,11 @@      <div class="tab-pane fade" id="{{window_id}}-content"           role="tabpanel" aria-labelledby="{{window_id}}-content-tab">          {% if item.containers.count %} +        <h4>{% trans "Divisions" %}</h4> +        {% dynamic_table_document '' 'divisions' 'location_id' item.pk 'TABLE_COLS' output %}          <h4>{% trans "Containers" %}</h4> -        {% dynamic_table_document '' 'containers' 'location_id' item.pk 'TABLE_COLS' output %} +        {% dynamic_table_document '' 'non-divisions' 'location_id' item.pk 'TABLE_COLS' output %}          {% else %} -          <div class="alert alert-info">              <i class="fa fa-exclamation-triangle"></i>              {% trans "No container inside this warehouse" %} diff --git a/archaeological_warehouse/urls.py b/archaeological_warehouse/urls.py index c1b589315..2f43d74a6 100644 --- a/archaeological_warehouse/urls.py +++ b/archaeological_warehouse/urls.py @@ -46,6 +46,10 @@ urlpatterns = [          views.new_container, name='new-container'),      url(r'get-container/(?P<type>.+)?$', views.get_container,          name='get-container'), +    url(r'get-divisions-container/(?P<type>.+)?$', +        views.get_divisions_container, name='get-divisions-container'), +    url(r'get-non-divisions-container/(?P<type>.+)?$', +        views.get_non_divisions_container, name='get-non-divisions-container'),      url(r'get-warehouse/(?P<type>.+)?$', views.get_warehouse,          name='get-warehouse'),      url(r'get-warehouse-shortcut/(?P<type>.+)?$', diff --git a/archaeological_warehouse/views.py b/archaeological_warehouse/views.py index 3a11c0e05..34def58cf 100644 --- a/archaeological_warehouse/views.py +++ b/archaeological_warehouse/views.py @@ -46,6 +46,14 @@ from archaeological_warehouse.wizards import PackagingWizard, WarehouseSearch, \  get_container = get_item(models.Container, 'get_container', 'container',                           search_form=forms.ContainerSelect) +get_divisions_container = get_item( +    models.Container, 'get_container', 'container', +    search_form=forms.ContainerSelect, +    base_request={"container_type__stationary": 'True'}) +get_non_divisions_container = get_item( +    models.Container, 'get_container', 'container', +    search_form=forms.ContainerSelect, +    base_request={"container_type__stationary": 'False'})  show_container = show_item(models.Container, 'container')  get_warehouse = get_item(models.Warehouse, 'get_warehouse', 'warehouse', diff --git a/ishtar_common/templatetags/window_tables.py b/ishtar_common/templatetags/window_tables.py index a46f404ba..8193f1061 100644 --- a/ishtar_common/templatetags/window_tables.py +++ b/ishtar_common/templatetags/window_tables.py @@ -65,6 +65,9 @@ ASSOCIATED_MODELS['base_treatments'] = (      Treatment, 'get-treatment', '')  ASSOCIATED_MODELS['treatment_files'] = (TreatmentFile, 'get-treatmentfile', '')  ASSOCIATED_MODELS['containers'] = (Container, 'get-container', '') +ASSOCIATED_MODELS['divisions'] = (Container, 'get-divisions-container', '') +ASSOCIATED_MODELS['non-divisions'] = ( +    Container, 'get-non-divisions-container', '')  ASSOCIATED_MODELS['warehouses'] = (Warehouse, 'get-warehouse', '')  ASSOCIATED_MODELS['documents'] = (Document, 'get-document', '') @@ -88,7 +91,8 @@ def dynamic_table_document(          t = get_template('ishtar/blocks/window_tables/dynamic_documents.html')          context = {              'caption': caption, -            'name':  '{}{}{}'.format(slugify(caption), key, int(time.time())), +            'name':  '{}{}{}'.format(slugify(caption), key, +                                     int(time.time() * 1000)),              'source': source + source_attrs,              'source_full': source_full,              'simple_source': source, diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 33d817a25..1ef98e3c2 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -705,11 +705,11 @@ def _manage_bool_fields(model, bool_fields, reversed_bool_fields, dct, or_reqs):      for k in bool_fields:          if k not in dct:              continue -        elif dct[k] == u"1": +        elif dct[k] == "1":              dct.pop(k)              continue -        dct[k] = dct[k].replace(u'"', u'') -        if dct[k] in [u"2", u"yes", str(_(u"Yes")).lower()]: +        dct[k] = dct[k].replace('"', '') +        if dct[k] in ["2", "yes", str(_("Yes")).lower(), "True"]:              dct[k] = True          else:              dct[k] = False @@ -1399,7 +1399,7 @@ def get_item(model, func_name, default_name, extra_request_keys=None,      :param own_table_cols:      :param relation_types_prefix:      :param do_not_deduplicate: duplication of id can occurs on large queryset a -    mecanism of deduplication is used. But duplicate ids can be normal (for +    mechanism of deduplication is used. But duplicate ids can be normal (for      instance for record_relations view).      :param model_for_perms: use another model to check permission      :param alt_query_own: name of alternate method to get query_own | 
