From 5889915d68867862c2f37866e8f8bf949c01e06e Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Mon, 28 Oct 2013 19:31:45 +0100 Subject: Templates: list all dependant documents New template tags for displaying table of documents --- archaeological_context_records/models.py | 12 +++++++++ .../templates/ishtar/sheet_contextrecord.html | 26 +++++------------- archaeological_finds/models.py | 17 ++++++++++++ archaeological_operations/models.py | 29 +++++++++++++++++++- .../templates/ishtar/sheet_operation.html | 31 +++++++--------------- .../ishtar/blocks/window_tables/documents.html | 21 +++++++++++++++ ishtar_common/templatetags/window_tables.py | 12 +++++++++ 7 files changed, 106 insertions(+), 42 deletions(-) create mode 100644 ishtar_common/templates/ishtar/blocks/window_tables/documents.html create mode 100644 ishtar_common/templatetags/window_tables.py diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 0a970b8ce..b33b86e8c 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -19,6 +19,7 @@ from django.conf import settings from django.contrib.gis.db import models +from django.core.urlresolvers import reverse from django.utils.translation import ugettext_lazy as _, ugettext, pgettext from ishtar_common.models import GeneralType, BaseHistorizedItem, \ @@ -157,6 +158,10 @@ class ContextRecord(BaseHistorizedItem, OwnPerms): return settings.JOINT.join([unicode(item) for item in [self.parcel, self.label] if item]) + @property + def show_url(self): + return reverse('show-contextrecord', args=[self.pk, '']) + def full_label(self): if not self.operation: return unicode(self) @@ -218,6 +223,10 @@ class ContextRecord(BaseHistorizedItem, OwnPerms): def get_total_number(cls): return cls.objects.filter(operation__start_date__isnull=False).count() + def find_docs_q(self): + from archaeological_finds.models import FindSource + return FindSource.objects.filter(find__base_finds__context_record=self) + class ContextRecordSource(Source): class Meta: verbose_name = _(u"Context record documentation") @@ -225,3 +234,6 @@ class ContextRecordSource(Source): context_record = models.ForeignKey(ContextRecord, verbose_name=_(u"Context record"), related_name="source") + @property + def owner(self): + return self.context_record diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html index 741201daa..4284b7eef 100644 --- a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html +++ b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html @@ -1,5 +1,5 @@ {% extends "ishtar/sheet.html" %} -{% load i18n %} +{% load i18n window_tables %} {% block head_sheet %} {{block.super}} @@ -92,25 +92,8 @@ {% else %}

{% endif %} - - - - - - - - - {% for doc in item.source.all %} - - - - - - - {% empty %} - - {% endfor %} -
{%trans "Documents"%}
{% trans "Title" %}{% trans "Type" %}{% trans "Authors" %}{% trans "Link" %}
{{ doc.title }}{{doc.source_type}}{{ doc.authors.all|join:", " }}{% if doc.associated_url %}{% trans "Link"%}{% endif %}
{% trans "No document associated to this context record" %}
+{% trans "Document from this context record" as cr_docs %} +{% if item.source.count %} {% table_document cr_docs item.source.all %}{% endif %} @@ -151,4 +134,7 @@ {% endfor %}
{%trans "Finds"%}
+{% trans "Documents from associated finds" as find_docs %} +{% if item.find_docs_q.count %} {% table_document find_docs item.find_docs_q.all %}{% endif %} + {% endblock %} diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index f694ed562..53af78f8b 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -19,6 +19,7 @@ from django.conf import settings from django.contrib.gis.db import models +from django.core.urlresolvers import reverse from django.db.models import Max from django.utils.translation import ugettext_lazy as _, ugettext @@ -197,6 +198,14 @@ class Find(BaseHistorizedItem, ImageModel, OwnPerms): def __unicode__(self): return self.label + @property + def short_label(self): + return self.reference + + @property + def show_url(self): + return reverse('show-find', args=[self.pk, '']) + def get_first_base_find(self): q= self.base_finds if not q.count(): @@ -300,6 +309,10 @@ class FindSource(Source): find = models.ForeignKey(Find, verbose_name=_(u"Find"), related_name="source") + @property + def owner(self): + return self.find + class TreatmentType(GeneralType): virtual = models.BooleanField(_(u"Virtual")) class Meta: @@ -346,6 +359,10 @@ class TreatmentSource(Source): treatment = models.ForeignKey(Treatment, verbose_name=_(u"Treatment"), related_name="source") + @property + def owner(self): + return self.treatment + class Property(LightHistorizedItem): find = models.ForeignKey(Find, verbose_name=_(u"Find")) administrative_act = models.ForeignKey(AdministrativeAct, diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index c805f9a3d..3d6eaa15a 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -22,6 +22,7 @@ from itertools import groupby from django.conf import settings from django.contrib.gis.db import models +from django.core.urlresolvers import reverse from django.db.models import Q, Count, Sum, Max, Avg from django.db.models.signals import post_save, m2m_changed from django.utils.translation import ugettext_lazy as _, ugettext @@ -156,6 +157,16 @@ class Operation(BaseHistorizedItem, OwnPerms): def short_class_name(self): return _(u"OPE") + @property + def short_label(self): + if settings.COUNTRY == 'fr': + return self.code_patriarche + return unicode(self) + + @property + def show_url(self): + return reverse('show-operation', args=[self.pk, '']) + @property def reference(self): if self.code_patriarche: @@ -187,7 +198,19 @@ class Operation(BaseHistorizedItem, OwnPerms): def grouped_parcels(self): return Parcel.grouped_parcels(list(self.parcels.all())) - associated_file_short_label_lbl = _(u"Archaelogical file") + def context_record_docs_q(self): + from archaeological_context_records.models import ContextRecordSource + return ContextRecordSource.objects.filter( + context_record__operation=self) + + def find_docs_q(self): + from archaeological_finds.models import FindSource + print FindSource.objects.filter( + find__base_finds__context_record__operation=self).query + return FindSource.objects.filter( + find__base_finds__context_record__operation=self) + + associated_file_short_label_lbl = _(u"Archaeological file") @property def associated_file_short_label(self): if not self.associated_file: @@ -309,6 +332,10 @@ class OperationSource(Source): TABLE_COLS = ['operation.year', 'operation.operation_code'] + \ Source.TABLE_COLS + @property + def owner(self): + return self.operation + class ActType(GeneralType): TYPE = (('F', _(u'Archaelogical file')), ('O', _(u'Operation')), diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html index 0672cf22f..2768fd96c 100644 --- a/archaeological_operations/templates/ishtar/sheet_operation.html +++ b/archaeological_operations/templates/ishtar/sheet_operation.html @@ -1,5 +1,5 @@ {% extends "ishtar/sheet.html" %} -{% load i18n %} +{% load i18n window_tables %} {% block head_sheet %} {{block.super}} @@ -117,26 +117,8 @@ {% endfor %} -

{% trans "Scientific documentation"%}

- - - - - - - - - {% for doc in item.source.all %} - - - - - - - {% empty %} - - {% endfor %} -
{%trans "Documents"%}
{% trans "Title" %}{% trans "Type" %}{% trans "Authors" %}{% trans "Link" %}
{{ doc.title }}{{doc.source_type}}{{ doc.authors.all|join:", " }}{% if doc.associated_url %}{% trans "Link"%}{% endif %}
{% trans "No scientific document associated to this operation" %}
+{% trans "Document from this operation" as operation_docs %} +{% if item.source.count %} {% table_document operation_docs item.source.all %}{% endif %} @@ -161,6 +143,10 @@ {% endfor %}
{%trans "Context records"%}
{% trans "No context record associated to this operation" %}
+ +{% trans "Documents from associated context records" as cr_docs %} +{% if item.context_record_docs_q.count %} {% table_document cr_docs item.context_record_docs_q.all %}{% endif %} +
@@ -206,4 +192,7 @@
{%trans "Finds"%}
+{% trans "Documents from associated finds" as find_docs %} +{% if item.find_docs_q.count %} {% table_document find_docs item.find_docs_q.all %}{% endif %} + {% endblock %} diff --git a/ishtar_common/templates/ishtar/blocks/window_tables/documents.html b/ishtar_common/templates/ishtar/blocks/window_tables/documents.html new file mode 100644 index 000000000..9405bc3e8 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/window_tables/documents.html @@ -0,0 +1,21 @@ +{% load i18n %} + + + + + + + + + + {% for doc in data %} + + + + + + + + {% endfor %} +
{{caption}}
{% trans "Title" %}{% trans "Type" %}{% trans "Authors" %}{% trans "Related to" %}{% trans "Link" %}
{{ doc.title }}{{doc.source_type}}{{ doc.authors.all|join:", " }}{{doc.owner.short_label}}{% if doc.associated_url %}{% trans "Link"%}{% endif %}
+ diff --git a/ishtar_common/templatetags/window_tables.py b/ishtar_common/templatetags/window_tables.py new file mode 100644 index 000000000..5c19eb6df --- /dev/null +++ b/ishtar_common/templatetags/window_tables.py @@ -0,0 +1,12 @@ + +from django import template +from django.utils.translation import ugettext as _ +import re + +register = template.Library() + +@register.inclusion_tag('ishtar/blocks/window_tables/documents.html') +def table_document(caption, data): + return {'caption':caption, 'data':data} + + -- cgit v1.2.3