diff options
| -rw-r--r-- | ishtar/furnitures/models.py | 79 | ||||
| -rw-r--r-- | ishtar/templates/sheet_context_proto.html | 115 | ||||
| -rw-r--r-- | ishtar/templates/sheet_contextrecord.html | 136 | ||||
| -rw-r--r-- | ishtar/templates/sheet_contextrecord_window.html | 3 | 
4 files changed, 202 insertions, 131 deletions
| diff --git a/ishtar/furnitures/models.py b/ishtar/furnitures/models.py index 9d1873770..f9e9080df 100644 --- a/ishtar/furnitures/models.py +++ b/ishtar/furnitures/models.py @@ -37,6 +37,8 @@ from simple_history.models import HistoricalRecords as BaseHistoricalRecords  from ishtar import settings +JOINT = u" - " +  # HistoricalRecords enhancement: don't save identical versions  class HistoricalRecords(BaseHistoricalRecords):      def create_historical_record(self, instance, type): @@ -289,7 +291,7 @@ class Departement(models.Model):          ordering = ['number']      def __unicode__(self): -        return unicode(self.number) + u" - " + self.label +        return unicode(self.number) + JOINT + self.label  class Address(BaseHistorizedItem):      address = models.TextField(_(u"Address"), null=True, blank=True) @@ -366,7 +368,8 @@ class Person(Address, OwnPerms) :          )      def __unicode__(self): -        lbl = u"%s %s - " % (self.name, self.surname) +        lbl = u"%s %s" % (self.name, self.surname) +        lbl += JOINT          if self.attached_to:              lbl += unicode(self.attached_to)          elif self.email: @@ -474,7 +477,7 @@ class File(BaseHistorizedItem, OwnPerms):                                 unicode(self.numeric_reference))))          items += [unicode(getattr(self, k))[:36]                    for k in ['internal_reference',] if getattr(self, k)] -        return u" - ".join(items) +        return JOINT.join(items)      @classmethod      def get_query_owns(cls, user): @@ -577,7 +580,7 @@ class Operation(BaseHistorizedItem, OwnPerms):              items[0] = unicode(self.towns.all()[0])          items.append("-".join((unicode(self.year),                                 unicode(self.operation_code)))) -        return u" - ".join(items) +        return JOINT.join(items)      def is_own(self, person):          return False @@ -614,12 +617,11 @@ class Parcel(LightHistorizedItem):          verbose_name_plural = _(u"Parcels")      def short_label(self): -        return u" - ".join([unicode(item) for item in \ -                               [self.town, self.section, self.parcel_number] -                                          if item]) +        return JOINT.join([unicode(item) for item in [self.section, +                                                   self.parcel_number] if item])      def __unicode__(self): -        return u" - ".join([unicode(item) for item in \ +        return JOINT.join([unicode(item) for item in \         [self.associated_file, self.operation, self.section, self.parcel_number]                                            if item]) @@ -727,7 +729,25 @@ class ContextRecord(BaseHistorizedItem, OwnPerms):          )      def __unicode__(self): -        return u"%s - %s" % (self.parcel, self.label) +        return JOINT.join((unicode(self.parcel), self.label)) + +    def full_label(self): +        if not self.parcel.operation: +            return unicode(self) +        return self._real_label() or self._temp_label() + +    def _real_label(self): +        if not self.parcel.operation.code_patriarche: +            return +        return JOINT.join((self.parcel.operation.code_patriarche, +                           self.label)) + +    def _temp_label(self): +        if self.parcel.operation.code_patriarche: +            return +        return JOINT.join([unicode(lbl) for lbl in [self.parcel.operation.year, +                                           self.parcel.operation.operation_code, +                                           self.label] if lbl])  class SourceType(GeneralType):      class Meta: @@ -758,7 +778,7 @@ class BaseItem(BaseHistorizedItem, OwnPerms):      label = models.CharField(_(u"Label"), max_length=60)      description = models.TextField(_(u"Description"))      context_record = models.ForeignKey(ContextRecord, -                            verbose_name=_(u"Context Record")) +              related_name='base_items', verbose_name=_(u"Context Record"))      is_isolated = models.NullBooleanField(_(u"Is isolated?"), blank=True,                                            null=True)      documentations = models.ManyToManyField(Source) @@ -777,6 +797,28 @@ class BaseItem(BaseHistorizedItem, OwnPerms):      def __unicode__(self):          return self.label +    def get_last_item(self): +        #TODO: manage virtuals - property(last_item) ? +        return self.item.filter().order_by("-order").all()[0] + +    def full_label(self): +        return self._real_label() or self._temp_label() + +    def _real_label(self): +        if not self.context_record.parcel.operation.code_patriarche: +            return +        return JOINT.join((self.context_record.parcel.operation.code_patriarche, +                           self.context_record.label, +                           self.label)) + +    def _temp_label(self): +        if self.context_record.parcel.operation.code_patriarche: +            return +        return JOINT.join((self.context_record.parcel.year, +                           #TODO:self.index +                           self.context_record.label, +                           self.label)) +  class Item(BaseHistorizedItem, OwnPerms):      TABLE_COLS = ['base_items.context_record.parcel.town',                    'base_items.context_record.parcel.operation.year', @@ -816,6 +858,11 @@ class Item(BaseHistorizedItem, OwnPerms):      def __unicode__(self):          return self.label +    def material_type_label(self): +        #TODO to complete cf. #372 and sheet_contextrecord template +        return unicode(self.material_type) + +  class ParcelOwner(LightHistorizedItem):      owner = models.ForeignKey(Person, verbose_name=_(u"Owner"))      parcel = models.ForeignKey(Parcel, verbose_name=_(u"Parcel")) @@ -827,7 +874,7 @@ class ParcelOwner(LightHistorizedItem):          verbose_name_plural = _(u"Parcel owners")      def __unicode__(self): -        return self.owner + u" - " + self.parcel +        return self.owner + JOINT + self.parcel  class WarehouseType(GeneralType):      class Meta: @@ -900,7 +947,7 @@ related_name='+', verbose_name=_(u"Person in charge of the scientific part"))          )      def __unicode__(self): -        return u" - ".join([unicode(item) +        return JOINT.join([unicode(item)            for item in [self.operation, self.associated_file, self.act_object]            if item]) @@ -932,14 +979,14 @@ if settings.COUNTRY == 'fr':          department = models.ForeignKey(Departement, verbose_name=u"Département")          def __unicode__(self): -            return u"%s - %s" % (self.name, unicode(self.department)) +            return JOINT.join((self.name, unicode(self.department)))      class Canton(models.Model):          name = models.CharField(u"Nom", max_length=30)          arrondissement = models.ForeignKey(Arrondissement,                                             verbose_name=u"Arrondissement")          def __unicode__(self): -            return u"%s - %s" % (self.name, unicode(self.arrondissement)) +            return JOINT.join((self.name, unicode(self.arrondissement)))  class Town(models.Model):      name = models.CharField(_(u"Name"), max_length=100) @@ -1011,7 +1058,7 @@ class Author(models.Model):          verbose_name_plural = _(u"Authors")      def __unicode__(self): -        return self.person + u" - " + self.source +        return self.person + JOINT + self.source  class Property(LightHistorizedItem):      item = models.ForeignKey(Item, verbose_name=_(u"Item")) @@ -1026,5 +1073,5 @@ class Property(LightHistorizedItem):          verbose_name_plural = _(u"Properties")      def __unicode__(self): -        return self.person + u" - " + self.item +        return self.person + JOINT + self.item diff --git a/ishtar/templates/sheet_context_proto.html b/ishtar/templates/sheet_context_proto.html deleted file mode 100644 index 365a766b5..000000000 --- a/ishtar/templates/sheet_context_proto.html +++ /dev/null @@ -1,115 +0,0 @@ -{% extends "sheet.html" %} -{% load i18n %} -{% block content %} -<div class='tool'>{%trans "Export as:"%} <a href='{% url show-file item.operation.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-file item.operation.pk "pdf" %}'>{%trans "PDF file"%}</a></div> - -<h3>{% trans "Context Unit"%}</h3> - -{% if item.operation.patriarche_code %}<p><label>{%trans "Complete_label:"%}</label> <span class='value'>{{ item.operation.complete_label }}</span></p>{%endif%}<!-- Displayed as Patriarche_code/Context_unit_label --> -{% if item.operation.patriarche_code_not_recorded %}<p><label>{%trans "Patriarche OA code not yet recorded !"%}</label></p> -<p><label>{%trans "Temporary_label:"%}</label> <span class='value'>{{ item.operation.temporary_label }}<!-- Displayed as Ope_year/Ope_number/Context_unit_label --> -{%endif%} -<p><label>{% trans "Type:" %}</label> <span class='value'>{{ item.unit_type }}</span></p> -<p><label>{% trans "Chronology:" %}</label> <span class='value'>{{ item.period.all|join:", " }}</span></p> -<p><label>{% trans "Place:" %}</label> <span class='value'>{{ item.place }}</span></p>     -<p><label>{% trans "Parcel:" %}</label> <span class='value'>{{ item.section_and_parcel }}</span></p> - -<h3>{% trans "Description"%}</h3> - -<p><label>{% trans "Description:" %}</label> <span class='value'>{{ item.description }}</span></p>  -{% if item.lenght %}<p><label>{% trans "Length (cm):" %}</label> <span class='value'>{{ item.length }}</span></p>{%endif%} -{% if item.width %}<p><label>{% trans "Width (cm):" %}</label> <span class='value'>{{ item.width }}</span></p>{%endif%} -{% if item.depth %}<p><label>{% trans "Depth (cm):" %}</label> <span class='value'>{{ item.depth }}</span></p>{%endif%} - -<h3>{% trans "Interpretation"%}</h3> - -{% if item.activity %}<p><label>{% trans "Activity:" %}</label> <span class='value'>{{ item.activity }}</span></p>{%endif%} -{% if item.identification %}<p><label>{% trans "Identification:" %}</label> <span class='value'>{{ item.identification }}</span></p>{%endif%} -{% if item.interpretation %}<p><label>{% trans "Interpretation:" %}</label> <span class='value'>{{ item.interpretation }}</span></p>{%endif%} - -{% if item.TAQ or item.TAQ_estimated or item.TPQ or item.TPQ_estimated %} -<h3>{% trans "Datations"%}</h3> -{% if item.TAQ %}<p><label>{% trans "TAQ:" %}</label> <span class='value'>{{ item.TAQ }}</span></p>{%endif%} -{% if item.TAQ_estimated %}<p><label>{% trans "TAQ estimated:" %}</label> <span class='value'>{{ item.TAQ_estimated }}</span></p>{%endif%} -{% if item.TPQ %}<p><label>{% trans "TPQ:" %}</label> <span class='value'>{{ item.TPQ }}</span></p>{%endif%} -{% if item.TPQ_estimated %}<p><label>{% trans "TPQ estimated:" %}</label> <span class='value'>{{ item.TPQ_estimated }}</span></p>{%endif%} -{%endif%} -     -{% if item.related_operation %}<!-- If an Operation is linked to that context then a resume is displayed --> -<h3>{% trans "Operation resume"%}</h3> -<p><label>{%trans "Year:"%}</label> <span class='value'>{{ item.operation.year }}</span></p> -<p><label>{%trans "Numerical reference:"%}</label> <span class='value'>{{ item.operation.numeric_reference }}</span></p> -{% if item.operation.patriarche_code %}<p><label>{%trans "Patriarche OA code:"%}</label> <span class='value'>{{ item.operation.patriarche_code }}</span></p>{%endif%} -{% if item.operation.patriarche_code_not_recorded %}<p><label>{%trans "Patriarche OA code not yet recorded !"%}</label></p>{%endif%} -<p><label>{%trans "Operation's name:"%}</label> <span class='value'>{{ item.operation.internal_reference }}</span></p> -<p><label>{%trans "Head scientist:"%}</label> <span class='value'>{{ item.operation.head_scientist.full_label }}</span></p> -<p><label>{%trans "State:"%}</label> <span class='value'>{% if item.operation.is_active %}{%trans "Active file"%}</span></p> -{% else %}{%trans "Closed operation"%}</span></p> -<p><label>{%trans "Closing date:"%}</label> <span class='value'>{{ item.operation.closing.date }} <strong>{%trans "by" %}</strong> {{ item.operation.closing.user }}</span></p> -{% endif %} -<p><label>{%trans "Type:"%}</label> <span class='value'>{{ item.operation.operation_type }}</span></p> -<p><label>{%trans "Remains:"%}</label> <span class='value'>{{ item.operation.remains.all|join:", " }}</span></p> -<p><label>{%trans "Periods:"%}</label> <span class='value'>{{ item.operation.periods.all|join:", " }}</span></p> -{% if item.operation.comment %}<p><label>{%trans "Comment:"%}</label> <span class='value'>{{ item.operation.comment }}</span></p>{%endif%} -<h3>{% trans "Localisation"%}</h3> -<p><label>{%trans "Towns:"%}</label> <span class='value'>{{ item.operation.towns.all|join:", " }}</span></p> -<p><label>{%trans "Related operation:"%}</label> <span class='value'><a href='{% url show-operation item.related_operation.pk ''%}'>{{ item.related_operation }}</a></span></p><!-- Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related operation --> -{% else %}<p><label>{%trans "No operation linked to this context unit !"%}</label></p> -{% endif %} - -<h3>{% trans "Documentation"%}</h3> -<table> -  <caption>{%trans "Documents"%}</caption> -  <tr> -    <th>{% trans "Title" %}</th> -    <th>{% trans "Type" %}</th> -    <th>{% trans "Authors" %}</th> -    <th>{% trans "Localisation" %}</th> -  </tr> -  {% for doc in item.operation.doc.all %} -  <tr> -    <td>{{ doc.title }}</td> -    <td class='string'>{{doc.type}}</td> -    <td>{{ doc.author.all|join:", " }}</td> -    <td>{{ doc.localisation }}</td> -  </tr> -  {% empty %} -  <tr><td colspan="4" class='no_items'>{% trans "No document associated to this context unit" %}</td></tr> -  {% endfor %} -</table> - -<h3>{% trans "Finds"%}</h3><!-- The list of finds must be listed here --> -<table> -  <caption>{%trans "Finds"%}</caption> -  <tr> -    <th>{% trans "Find_complete_Label" %}</th> -    <th>{% trans "Find_complete_material_type_Label" %}</th> -    <th>{% trans "Context_record" %}</th>  -    <th>{% trans "Periods" %}</th> -    <th>{% trans "Description" %}</th> -    <th>{% trans "Weight" %}</th> -    <th>{% trans "Numbers" %}</th> -    <th>{% trans "Parcel" %}</th> -    <th class='link'> </th> -  </tr> -  {% for find in item.find.all %} -  <tr> -    {% if item.operation.patriarche_code %}<th>{% trans "item.find.complete_label" %}</th><!-- Displayed as (Patriarche operation code)-(Record unit label)-(Finds label). -->{%endif%} -    {% if item.operation.patriarche_code_not_recorded %}<th>{% trans "item.find.not_patriarche_complete_label" %}</th><!-- Displayed as (Year)-(index)-(Record unit label)-(Finds label). -->{%endif%} -    {% if item.operation.patriarche_code %}<th>{% trans "item.find.material_type_complete_label" %}</th><!-- Displayed as (Patriarche operation code)-(Record unit label)-(material code)-(Finds label indexed by material type). -->{%endif%} -    {% if item.operation.patriarche_code_not_recorded %}<th>{% trans "item.find.material_type_not_patriarche_complete_label" %}</th><!-- Displayed as (Year)-(index)-(Record unit label)-(material code)-(Finds label indexed by material type). -->{%endif%} - -    <td class='string'>{{item.find.context_record}}</td> -    <td>{{ item.find.period.all|join:", " }}</td> -    <td>{{ item.find.description }}</td> -    <td>{{ item.find.weight }}</td> -    <td>{{ item.find.numbers }}</td> -    <td>{{ item.find.record_unit.section_and_parcel }}</td><!-- Displayed as (Section)-(parcel number). A record unit can be linked to only one parcel. --> -    <td class='link'><a href="#{#{%url show-find item.find.pk%}#}">{% trans "Details" %}</a></td> -  </tr> -  {% empty %} -  <tr><td colspan="9" class='no_items'>{% trans "No find associated to this operation" %}</td></tr> -  {% endfor %} -</table> - -{% endblock %} diff --git a/ishtar/templates/sheet_contextrecord.html b/ishtar/templates/sheet_contextrecord.html new file mode 100644 index 000000000..0f7259f3a --- /dev/null +++ b/ishtar/templates/sheet_contextrecord.html @@ -0,0 +1,136 @@ +{% extends "sheet.html" %} +{% load i18n %} +{% block content %} +<div class='tool'>{%trans "Export as:"%} <a href='{% url show-file item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-file item.pk "pdf" %}'>{%trans "PDF file"%}</a></div> + +<h3>{% trans "Context Record"%}</h3> + +{% if item.parcel.operation.code_patriarche %} +<p><label>{%trans "Complete label:"%}</label> +{% else %} +<p class='alert'><label>{%trans "Patriarche OA code not yet recorded!"%}</label></p> +<p><label>{%trans "Temporary label:"%}</label> +{%endif%} +<span class='value'>{{item.full_label}}</span></p> +{%if item.unit %} +<p><label>{% trans "Type:" %}</label> <span class='value'>{{ item.unit }}</span></p> +{%endif%} +<p><label>{% trans "Chronology:" %}</label> <span class='value'>{{ item.datings.all|join:", " }}</span></p> +<p><label>{% trans "Place:" %}</label> <span class='value'>{{ item.parcel.town }}</span></p> +<p><label>{% trans "Parcel:" %}</label> <span class='value'>{{ item.parcel.short_label }}</span></p> + +{% if item.description or item.lenght or item.width or item.depth %} +<h3>{% trans "Description"%}</h3> + +<p><label>{% trans "Description:" %}</label> <span class='value'>{{ item.description }}</span></p>  +{% if item.lenght %}<p><label>{% trans "Length (cm):" %}</label> <span class='value'>{{ item.length }}</span></p>{%endif%} +{% if item.width %}<p><label>{% trans "Width (cm):" %}</label> <span class='value'>{{ item.width }}</span></p>{%endif%} +{% if item.depth %}<p><label>{% trans "Depth (cm):" %}</label> <span class='value'>{{ item.depth }}</span></p>{%endif%} +{% endif %} + +{% if item.activity or item.identification or item.interpretation %} +<h3>{% trans "Interpretation"%}</h3> + +{% if item.activity %}<p><label>{% trans "Activity:" %}</label> <span class='value'>{{ item.activity }}</span></p>{%endif%} +{% if item.identification %}<p><label>{% trans "Identification:" %}</label> <span class='value'>{{ item.identification }}</span></p>{%endif%} +{% if item.interpretation %}<p><label>{% trans "Interpretation:" %}</label> <span class='value'>{{ item.interpretation }}</span></p>{%endif%} +{% endif %} + +{% if item.taq or item.taq_estimated or item.tpq or item.tpq_estimated %} +<h3>{% trans "Datations"%}</h3> +{% if item.taq %}<p><label>{% trans "TAQ:" %}</label> <span class='value'>{{ item.taq }}</span></p>{%endif%} +{% if item.taq_estimated %}<p><label>{% trans "TAQ estimated:" %}</label> <span class='value'>{{ item.taq_estimated }}</span></p>{%endif%} +{% if item.tpq %}<p><label>{% trans "TPQ:" %}</label> <span class='value'>{{ item.tpq }}</span></p>{%endif%} +{% if item.tpq_estimated %}<p><label>{% trans "TPQ estimated:" %}</label> <span class='value'>{{ item.tpq_estimated }}</span></p>{%endif%} +{%endif%} + +{% if item.parcel.operation %} +<h3>{% trans "Operation resume"%}</h3> +<p><label>{%trans "Year:"%}</label> <span class='value'>{{ item.parcel.operation.year }}</span></p> +<p><label>{%trans "Numerical reference:"%}</label> <span class='value'>{{ item.parcel.operation.numeric_reference }}</span></p> +{% if item.parcel.operation.code_patriarche %} +<p><label>{%trans "Patriarche OA code:"%}</label> +<span class='value'>{{ item.parcel.operation.code_patriarche }}</span></p> +{% else %}<p class='alert'><label>{%trans "Patriarche OA code not yet recorded!"%}</label></p> +{%endif%} +<p><label>{%trans "Operation's name:"%}</label> +<span class='value'>{{ item.parcel.operation.internal_reference }}</span></p> +<p><label>{%trans "Head scientist:"%}</label> +<span class='value'>{{ item.parcel.operation.in_charge.full_label }}</span></p> +<p><label>{%trans "State:"%}</label> +{% if item.parcel.operation.is_active %} +<span class='value'>{%trans "Active file"%}</span></p> +{% else %} +<span class='value'>{%trans "Closed operation"%}</span></p> +<p><label>{%trans "Closing date:"%}</label> <span class='value'>{{ item.parcel.operation.closing.date }} +<strong>{%trans "by" %}</strong> {{ item.parcel.operation.closing.user }}</span></p> +{% endif %} +<p><label>{%trans "Type:"%}</label> <span class='value'>{{ item.parcel.operation.operation_type }}</span></p> +<p><label>{%trans "Remains:"%}</label> <span class='value'>{{ item.parcel.operation.remains.all|join:", " }}</span></p> +<p><label>{%trans "Periods:"%}</label> <span class='value'>{{ item.parcel.operation.periods.all|join:", " }}</span></p> +{% if item.parcel.operation.comment %}<p><label>{%trans "Comment:"%}</label> <span class='value'>{{ item.parcel.operation.comment }}</span></p>{%endif%} +<h3>{% trans "Localisation"%}</h3> +<p><label>{%trans "Towns:"%}</label> <span class='value'>{{ item.parcel.operation.towns.all|join:", " }}</span></p> +<p><label>{%trans "Related operation:"%}</label> +<span class='value'><a href="#" onclick='load_window("{% url show-operation item.parcel.operation.pk ''%}");'>{{ item.parcel.operation }}</a></span></p> +{# TODO: Displayed as Year/index/Commune/Common_name This should be a link to the file sheet of the related operation #} +{% else %}<p class='alert'><label>{%trans "No operation linked to this context unit!"%}</label></p> +{% endif %} + +<table> +  <caption>{%trans "Documents"%}</caption> +  <tr> +    <th>{% trans "Title" %}</th> +    <th>{% trans "Type" %}</th> +    <th>{% trans "Authors" %}</th> +    <th>{% trans "Localisation" %}</th> +  </tr> +  {% for doc in item.parcel.operation.documents.all %} +  <tr> +    <td>{{ doc.title }}</td> +    <td class='string'>{{doc.type}}</td> +    <td>{{ doc.author.all|join:", " }}</td> +    <td>{{ doc.localisation }}</td> +  </tr> +  {% empty %} +  <tr><td colspan="4" class='no_items'>{% trans "No document associated to this context record" %}</td></tr> +  {% endfor %} +</table> + +<table> +  <caption>{%trans "Finds"%}</caption> +  <tr> +    <th>{% trans "Find" %}</th> +    <th>{% trans "Material type" %}</th> +    <th>{% trans "Context record" %}</th>  +    <th>{% trans "Periods" %}</th> +    <th>{% trans "Description" %}</th> +    <th>{% trans "Weight" %}</th> +    <th>{% trans "Numbers" %}</th> +    <th>{% trans "Parcel" %}</th> +    <th class='link'> </th> +  </tr> +  {% for find in item.base_items.all %} +  <tr> +    <td>{{ find.full_label }}</td> +{# Displayed as (Patriarche operation code)-(Record unit label)-(Finds label). #} +{# or displayed as (Year)-(index)-(Record unit label)-(Finds label). #} +    <td>{{ find.get_last_item.material_type_label }}</td> +{# Displayed as (Patriarche operation code)-(Record unit label)-(material code)-(Finds label indexed by material type). #} +{# or displayed as (Year)-(index)-(Record unit label)-(material code)-(Finds label indexed by material type) #} + +    <td class='string'>{{find.context_record.short_label}}</td> +    <td>{{ find.get_last_item.dating}}</td>{# TODO .all|join:", " ? #} +    <td>{{ find.get_last_item.description }}</td> +    <td>{{ find.get_last_item.weight }}</td> +    <td>{{ find.get_last_item.item_number }}</td> +    <td>{{ item.context_record.parcel.short_label }}</td> +    <td class='link'><a href="#">{% trans "Details" %}</a></td> +    {#<a href="#" onclick='load_window("{% url show-find find.pk%}");'>{%trans "Details"%}</a></td>#} +  </tr> +  {% empty %} +  <tr><td colspan="9" class='no_items'>{% trans "No find associated to this operation" %}</td></tr> +  {% endfor %} +</table> + +{% endblock %} diff --git a/ishtar/templates/sheet_contextrecord_window.html b/ishtar/templates/sheet_contextrecord_window.html new file mode 100644 index 000000000..7ff65d1e7 --- /dev/null +++ b/ishtar/templates/sheet_contextrecord_window.html @@ -0,0 +1,3 @@ +{% extends "sheet_contextrecord.html" %} +{% block main_head %}{%endblock%} +{% block main_foot %}{%endblock%} | 
