summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-12 15:46:33 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-02-12 15:46:33 +0100
commit596c193c38c5eef0ad0798d690e65215744346bf (patch)
tree7a14e50be1d8af2f5a8bcbfb99b77cfe917eed1f
parentc2e1c00a99f3b4cd8783999403924a4e349d8eec (diff)
downloadIshtar-596c193c38c5eef0ad0798d690e65215744346bf.tar.bz2
Ishtar-596c193c38c5eef0ad0798d690e65215744346bf.zip
Add documents to containers
-rw-r--r--archaeological_finds/templates/ishtar/sheet_find.html2
-rw-r--r--archaeological_warehouse/migrations/0033_auto_20190212_1524.py40
-rw-r--r--archaeological_warehouse/models.py17
-rw-r--r--archaeological_warehouse/templates/ishtar/sheet_container.html52
-rw-r--r--ishtar_common/forms_common.py8
-rw-r--r--ishtar_common/models.py13
-rw-r--r--ishtar_common/templates/ishtar/sheet_document.html1
7 files changed, 98 insertions, 35 deletions
diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html
index 1af09b030..03295a8e2 100644
--- a/archaeological_finds/templates/ishtar/sheet_find.html
+++ b/archaeological_finds/templates/ishtar/sheet_find.html
@@ -89,8 +89,6 @@
<div class="clearfix">
<div class="card float-left col-12 col-md-6 col-lg-4">
{% include "ishtar/blocks/window_image.html" %}
- <div class="card-body">
- </div>
</div>
{% endif %}
diff --git a/archaeological_warehouse/migrations/0033_auto_20190212_1524.py b/archaeological_warehouse/migrations/0033_auto_20190212_1524.py
new file mode 100644
index 000000000..0af79c8bd
--- /dev/null
+++ b/archaeological_warehouse/migrations/0033_auto_20190212_1524.py
@@ -0,0 +1,40 @@
+# -*- coding: utf-8 -*-
+# Generated by Django 1.11.10 on 2019-02-12 15:24
+from __future__ import unicode_literals
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('ishtar_common', '0084_auto_20190206_1522'),
+ ('archaeological_warehouse', '0032_auto_20190206_1442'),
+ ]
+
+ operations = [
+ migrations.RemoveField(
+ model_name='container',
+ name='image',
+ ),
+ migrations.RemoveField(
+ model_name='container',
+ name='thumbnail',
+ ),
+ migrations.AddField(
+ model_name='container',
+ name='documents',
+ field=models.ManyToManyField(blank=True, related_name='containers', to='ishtar_common.Document', verbose_name='Documents'),
+ ),
+ migrations.AddField(
+ model_name='container',
+ name='main_image',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_containers', to='ishtar_common.Document', verbose_name='Image principale'),
+ ),
+ migrations.AlterField(
+ model_name='warehouse',
+ name='main_image',
+ field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='main_image_warehouses', to='ishtar_common.Document', verbose_name='Image principale'),
+ ),
+ ]
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index a0da12601..42a9bb310 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -30,7 +30,7 @@ from django.utils.translation import ugettext_lazy as _, pgettext_lazy
from ishtar_common.data_importer import post_importer_action
from ishtar_common.models import Document, GeneralType, get_external_id, \
LightHistorizedItem, OwnPerms, Address, Person, post_save_cache, \
- ImageModel, DashboardFormItem, ExternalIdManager, ShortMenuItem, \
+ DashboardFormItem, ExternalIdManager, ShortMenuItem, \
document_attached_changed, SearchAltName
from ishtar_common.utils import cached_label_changed
@@ -316,7 +316,7 @@ post_save.connect(post_save_cache, sender=ContainerType)
post_delete.connect(post_save_cache, sender=ContainerType)
-class Container(LightHistorizedItem, ImageModel, OwnPerms):
+class Container(LightHistorizedItem, OwnPerms):
SLUG = 'container'
SHOW_URL = 'show-container'
TABLE_COLS = ['reference', 'container_type__label', 'cached_location',
@@ -393,6 +393,13 @@ class Container(LightHistorizedItem, ImageModel, OwnPerms):
external_id = models.TextField(_(u"External ID"), blank=True, null=True)
auto_external_id = models.BooleanField(
_(u"External ID is set automatically"), default=False)
+ documents = models.ManyToManyField(
+ Document, related_name='containers', verbose_name=_(u"Documents"),
+ blank=True)
+ main_image = models.ForeignKey(
+ Document, related_name='main_image_containers',
+ on_delete=models.SET_NULL,
+ verbose_name=_(u"Main image"), blank=True, null=True)
class Meta:
verbose_name = _(u"Container")
@@ -431,6 +438,9 @@ class Container(LightHistorizedItem, ImageModel, OwnPerms):
]
return u" | ".join(locas)
+ def _get_base_image_path(self):
+ return self.responsible._get_base_image_path() + u"/" + self.external_id
+
@classmethod
def get_query_owns(cls, ishtaruser):
return Q(history_creator=ishtaruser.user_ptr) | \
@@ -631,6 +641,9 @@ class Container(LightHistorizedItem, ImageModel, OwnPerms):
post_save.connect(cached_label_changed, sender=Container)
+m2m_changed.connect(document_attached_changed,
+ sender=Container.documents.through)
+
class ContainerLocalisation(models.Model):
container = models.ForeignKey(Container, verbose_name=_(u"Container"),
diff --git a/archaeological_warehouse/templates/ishtar/sheet_container.html b/archaeological_warehouse/templates/ishtar/sheet_container.html
index 262d7145b..27cbf9bee 100644
--- a/archaeological_warehouse/templates/ishtar/sheet_container.html
+++ b/archaeological_warehouse/templates/ishtar/sheet_container.html
@@ -8,34 +8,38 @@
{% endblock %}
{% block content %}
-<div class="row">
- <div class="offset-lg-4 col-lg-4 offset-md-3 col-md-6 offset-sm-1 col-sm-10 col-12">
- <div class="card">
- {% include "ishtar/blocks/window_image.html" %}
- <div class="card-body">
- <p class="card-text">
- <p class="window-refs">{{ item.reference|default:"" }}</p>
- <p class="window-refs">{{ item.container_type|default:"" }}</p>
- <p class="window-refs">{{ item.responsible.name }} - {{ item.index }}</p>
- <p class="window-refs">{{ item.old_reference|default:"" }}</p>
- {% include "ishtar/blocks/sheet_external_id.html" %}
- </p>
- </div>
- </div>
+<div class="clearfix">
+ {% if item.main_image %}
+ <div class="card float-left col-12 col-md-4">
+ {% include "ishtar/blocks/window_image.html" %}
+ </div>
+ {% endif %}
+ {% if item.main_image %}
+ <div class="float-left col-12 col-md-6 col-lg-8 text-center">{# </div>> #}
+ {% else %}
+ <div class="float-left col-6 col-md-3 text-center">
+ {% endif %}
+ <p class="window-refs">{{ item.reference|default:"" }}</p>
+ <p class="window-refs">{{ item.container_type|default:"" }}</p>
+ <p class="window-refs">{{ item.responsible.name }} - {{ item.index }}</p>
+ <p class="window-refs">{{ item.old_reference|default:"" }}</p>
+ {% include "ishtar/blocks/sheet_external_id.html" %}
+ </div>
+ {% if item.main_image %}
+ <div class="row float-left col-12 col-md-6 col-lg-8 text-center">{# </div>> #}
+ {% else %}
+ <div class="float-left row col-6 col-md-8">
+ {% endif %}
+ {% field_flex_detail "Responsible warehouse" item.responsible %}
+ {% field_flex_detail "Location (warehouse)" item.location %}
+ {% include "ishtar/blocks/sheet_creation_section.html" %}
+ {% field_flex "Location" item.precise_location %}
+ {% field_flex_full "Comment" item.comment "<pre>" "</pre>" %}
+ {% include "ishtar/blocks/sheet_json.html" %}
</div>
</div>
-<div class="row">
- {% field_flex_detail "Responsible warehouse" item.responsible %}
- {% field_flex_detail "Location (warehouse)" item.location %}
- {% include "ishtar/blocks/sheet_creation_section.html" %}
- {% field_flex "Location" item.precise_location %}
- {% field_flex_full "Comment" item.comment "<pre>" "</pre>" %}
-</div>
-
-{% include "ishtar/blocks/sheet_json.html" %}
-
{% if item.finds.count %}
<h4>{% trans "Content" %}</h4>
{% dynamic_table_document finds 'finds' 'container' item.pk 'TABLE_COLS' output 'large' %}
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 16c6d269e..fadda7593 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -51,6 +51,7 @@ from ishtar_common.utils import is_downloadable, clean_session_cache, \
from archaeological_operations.models import Operation
from archaeological_context_records.models import ContextRecord
from archaeological_finds.models import Find
+from archaeological_warehouse.models import Container
def get_town_field(label=_(u"Town"), required=True):
@@ -1270,6 +1271,12 @@ class DocumentSelect(TableSelect):
validators=[models.valid_id(Find)])
find__denomination = forms.CharField(label=_(u"Find - denomination"),
required=False)
+ container = forms.IntegerField(
+ label=_(u"Container"), required=False,
+ widget=widgets.JQueryAutoComplete(
+ reverse_lazy('autocomplete-container'),
+ associated_model=Container),
+ validators=[models.valid_id(Container)])
TYPES = [
FieldType('source_type', models.SourceType),
@@ -1278,6 +1285,7 @@ class DocumentSelect(TableSelect):
PROFILE_FILTER = {
'context_record': ['context_record'],
'find': ['find'],
+ 'warehouse': ['container']
}
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index a37c1f6bc..b03604e26 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -3831,12 +3831,12 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel):
# other will be symbolic links
RELATED_MODELS = [
'treatment_files', 'treatments', 'finds', 'context_records',
- 'operations', 'sites', 'warehouses', 'files'
+ 'operations', 'sites', 'warehouses', 'containers', 'files'
]
# same fields but in order for forms
RELATED_MODELS_ALT = [
'finds', 'context_records', 'operations', 'sites', 'files',
- 'warehouses', 'treatments', 'treatment_files',
+ 'warehouses', 'containers', 'treatments', 'treatment_files',
]
SLUG = 'document'
LINK_SPLIT = u"<||>"
@@ -3926,6 +3926,10 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel):
pgettext_lazy("key for text search", u"file"),
'files__cached_label__iexact'
),
+ 'container': SearchAltName(
+ pgettext_lazy("key for text search", u"container"),
+ 'containers__cached_label__iexact'
+ ),
'site': SearchAltName(
pgettext_lazy("key for text search", u"site"),
'sites__cached_label__iexact'
@@ -3937,11 +3941,6 @@ class Document(BaseHistorizedItem, OwnPerms, ImageModel):
}
objects = ExternalIdManager()
-
- RELATED_MODELS_ALT = [
- 'finds', 'context_records', 'operations', 'sites', 'files',
- 'warehouses', 'treatments', 'treatment_files',
- ]
RELATIVE_SESSION_NAMES = [
('find', 'finds__pk'),
('contextrecord', 'context_records__pk'),
diff --git a/ishtar_common/templates/ishtar/sheet_document.html b/ishtar_common/templates/ishtar/sheet_document.html
index af94f8fbe..48d21ff00 100644
--- a/ishtar_common/templates/ishtar/sheet_document.html
+++ b/ishtar_common/templates/ishtar/sheet_document.html
@@ -57,6 +57,7 @@
{% field_flex_full "Treatments" item.treatments|add_links %}
{% field_flex_full "Treatment files" item.treatment_files|add_links %}
{% field_flex_full "Warehouses" item.warehouses|add_links %}
+{% field_flex_full "Containers" item.containers|add_links %}
{% endif %}
{% endblock %}