diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-03 17:30:58 +0200 |
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2016-04-03 17:30:58 +0200 |
| commit | 95c2cf33370ac73cfab6963d54d2a5bc8728d7a8 (patch) | |
| tree | a9d415d60bb689c6af40c4427d40c9ca8177f3ca | |
| parent | 4f4ea768d9d72b96bcf826c525ed1b066191b11b (diff) | |
| parent | c50c0e4e5701b9926fbdad82b4ae54964a9283bb (diff) | |
| download | Ishtar-95c2cf33370ac73cfab6963d54d2a5bc8728d7a8.tar.bz2 Ishtar-95c2cf33370ac73cfab6963d54d2a5bc8728d7a8.zip | |
Merge branch 'master' into v0.9
35 files changed, 704 insertions, 549 deletions
diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot index 8a74c7110..e01054c0d 100644 --- a/archaeological_context_records/locale/django.pot +++ b/archaeological_context_records/locale/django.pot @@ -590,11 +590,11 @@ msgstr "" msgid "Document from this context record" msgstr "" -#: templates/ishtar/sheet_contextrecord.html:129 +#: templates/ishtar/sheet_contextrecord.html:131 msgid "Finds" msgstr "" -#: templates/ishtar/sheet_contextrecord.html:134 +#: templates/ishtar/sheet_contextrecord.html:136 msgid "Documents from associated finds" msgstr "" diff --git a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html index f7296848b..ecd80e36f 100644 --- a/archaeological_context_records/templates/ishtar/sheet_contextrecord.html +++ b/archaeological_context_records/templates/ishtar/sheet_contextrecord.html @@ -124,14 +124,18 @@ {% endif %} {% trans "Document from this context record" as cr_docs %} -{% if item.source.count %} {% table_document cr_docs item.source.all %}{% endif %} +{% if item.source.count %} +{% dynamic_table_document cr_docs 'context_records_docs' 'context_record' item.pk '' output %} +{% endif %} {% trans "Finds" as finds %} {% if item.base_finds.count %} {% dynamic_table_document finds 'finds_for_ope' 'base_finds__context_record' item.pk 'TABLE_COLS_FOR_OPE' output %} {% endif %} -{% trans "Documents from associated finds" as find_docs %} -{% if item.find_docs_q.count %} {% table_document find_docs item.find_docs_q.all %}{% endif %} +{% trans "Documents from associated finds" as finds_docs %} +{% if item.find_docs_q.count %} +{% dynamic_table_document finds_docs 'finds_docs' 'find__base_finds__context_record' item.pk '' output %} +{% endif %} {% endblock %} diff --git a/archaeological_files/templates/ishtar/administrativeact_document.html b/archaeological_files/templates/ishtar/administrativeact_document.html index cdb2b45be..5d71519f0 100644 --- a/archaeological_files/templates/ishtar/administrativeact_document.html +++ b/archaeological_files/templates/ishtar/administrativeact_document.html @@ -10,7 +10,7 @@ <form action="." method="post">{% csrf_token %} <div class='form'> <table> -{{ search_form.as_table }} +{{ search_form.as_p }} </table> <h4>{% trans "Choose the type of document" %}</h4> <table> diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 83a9e2da3..3cfe13ea9 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -36,7 +36,7 @@ import models from ishtar_common import widgets from ishtar_common.forms import FormSet, FloatField, \ - get_form_selection, reverse_lazy, TableSelect, get_now + get_form_selection, reverse_lazy, TableSelect, get_now, FinalForm from ishtar_common.forms_common import get_town_field, SourceSelect @@ -314,6 +314,11 @@ ResultFindFormSet = formset_factory(ResultFindForm, can_delete=True, ResultFindFormSet.form_label = _(u"Resulting finds") +class FindDeletionForm(FinalForm): + confirm_msg = " " + confirm_end_msg = _(u"Would you like to delete this find?") + + class UpstreamFindFormSelection(FindFormSelection): form_label = _(u"Upstream find") diff --git a/archaeological_finds/ishtar_menu.py b/archaeological_finds/ishtar_menu.py index ea8cd2c1f..daa12a37b 100644 --- a/archaeological_finds/ishtar_menu.py +++ b/archaeological_finds/ishtar_menu.py @@ -50,6 +50,11 @@ MENU_SECTIONS = [ # model=models.Treatment, # access_controls=['add_treatment', # 'add_own_treatment']), + MenuItem( + 'find_deletion', _(u"Deletion"), + model=models.Find, + access_controls=['change_find', + 'change_own_find']), SectionItem( 'find_source', _(u"Documentation"), childs=[ diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot index 6ff8bc10a..5705ef914 100644 --- a/archaeological_finds/locale/django.pot +++ b/archaeological_finds/locale/django.pot @@ -4,6 +4,7 @@ # Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015. # Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata # Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata msgid "" msgstr "" @@ -212,39 +213,43 @@ msgstr "" msgid "Resulting finds" msgstr "" -#: forms.py:318 +#: forms.py:319 +msgid "Would you like to delete this find?" +msgstr "" + +#: forms.py:323 msgid "Upstream find" msgstr "" -#: forms.py:325 +#: forms.py:330 msgid "Archaeological find search" msgstr "" -#: forms.py:327 +#: forms.py:332 msgid "You should select an archaeological find." msgstr "" -#: forms.py:332 +#: forms.py:337 msgid "Year of the operation" msgstr "" -#: forms.py:334 +#: forms.py:339 msgid "Period of the archaelogical find" msgstr "" -#: forms.py:336 +#: forms.py:341 msgid "Material type of the archaelogical find" msgstr "" -#: forms.py:338 +#: forms.py:343 msgid "Description of the archaelogical find" msgstr "" -#: forms.py:350 +#: forms.py:355 msgid "Documentation search" msgstr "" -#: forms.py:352 +#: forms.py:357 msgid "You should select a document." msgstr "" @@ -252,20 +257,20 @@ msgstr "" msgid "Search" msgstr "" -#: ishtar_menu.py:40 ishtar_menu.py:57 +#: ishtar_menu.py:40 ishtar_menu.py:62 msgid "Creation" msgstr "" -#: ishtar_menu.py:45 ishtar_menu.py:62 +#: ishtar_menu.py:45 ishtar_menu.py:67 msgid "Modification" msgstr "" -#: ishtar_menu.py:54 -msgid "Documentation" +#: ishtar_menu.py:54 ishtar_menu.py:72 +msgid "Deletion" msgstr "" -#: ishtar_menu.py:67 -msgid "Deletion" +#: ishtar_menu.py:59 +msgid "Documentation" msgstr "" #: models.py:39 @@ -544,15 +549,19 @@ msgstr "" msgid "Find modification" msgstr "" -#: views.py:129 +#: views.py:126 +msgid "Find deletion" +msgstr "" + +#: views.py:135 msgid "Find: new source" msgstr "" -#: views.py:137 +#: views.py:143 msgid "Find: source modification" msgstr "" -#: views.py:143 +#: views.py:149 msgid "Find: source deletion" msgstr "" diff --git a/archaeological_finds/models.py b/archaeological_finds/models.py index 9308be593..b52aabbf2 100644 --- a/archaeological_finds/models.py +++ b/archaeological_finds/models.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2012-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as diff --git a/archaeological_finds/urls.py b/archaeological_finds/urls.py index e38520329..acf9c46a6 100644 --- a/archaeological_finds/urls.py +++ b/archaeological_finds/urls.py @@ -38,6 +38,9 @@ urlpatterns = patterns( url(r'find_modification/(?P<step>.+)?$', check_rights(['change_find', 'change_own_find'])( views.find_modification_wizard), name='find_modification'), + url(r'find_deletion/(?P<step>.+)?$', + check_rights(['change_find', 'change_own_find'])( + views.find_deletion_wizard), name='find_deletion'), url(r'find_modify/(?P<pk>.+)/$', views.find_modify, name='find_modify'), url(r'find_source_creation/(?P<step>.+)?$', diff --git a/archaeological_finds/views.py b/archaeological_finds/views.py index f09b3099b..afe6715a8 100644 --- a/archaeological_finds/views.py +++ b/archaeological_finds/views.py @@ -63,13 +63,13 @@ get_find = get_item( models.Find, 'get_find', 'find', reversed_bool_fields=['image__isnull'], base_request={'downstream_treatment__isnull': True}, - extra_request_keys=find_extra_keys) + extra_request_keys=find_extra_keys.copy()) get_find_for_ope = get_item( models.Find, 'get_find', 'find', reversed_bool_fields=['image__isnull'], base_request={'downstream_treatment__isnull': True}, - extra_request_keys=find_extra_keys, + extra_request_keys=find_extra_keys.copy(), own_table_cols=models.Find.TABLE_COLS_FOR_OPE) show_findsource = show_item(models.FindSource, 'findsource') @@ -120,6 +120,12 @@ def find_modify(request, pk): reverse('find_modification', kwargs={'step': 'find-find_modification'})) +find_deletion_wizard = FindDeletionWizard.as_view([ + ('selec-find_deletion', FindFormSelection), + ('final-find_deletion', FindDeletionForm)], + label=_(u"Find deletion"), + url_name='find_deletion',) + find_source_creation_wizard = FindSourceWizard.as_view([ ('selec-find_source_creation', SourceFindFormSelection), diff --git a/archaeological_finds/wizards.py b/archaeological_finds/wizards.py index 1dc6ff348..61636aa25 100644 --- a/archaeological_finds/wizards.py +++ b/archaeological_finds/wizards.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2012-2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2012-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU Affero General Public License as @@ -75,6 +75,14 @@ class FindModificationWizard(FindWizard): filter_owns = {'selec-find_modification': ['pk']} +class FindDeletionWizard(DeletionWizard): + model = models.Find + fields = ['label', 'material_types', 'datings', 'find_number', + 'object_types', 'description', 'conservatory_state', 'mark', + 'preservation_to_considers', 'integrities', 'volume', + 'weight', 'length', 'width', 'height', 'diameter', 'comment'] + + class TreatmentWizard(Wizard): model = models.Treatment diff --git a/archaeological_operations/admin.py b/archaeological_operations/admin.py index 34e6da2ca..9f886bc62 100644 --- a/archaeological_operations/admin.py +++ b/archaeological_operations/admin.py @@ -30,6 +30,10 @@ class AdministrativeActAdmin(HistorizedObjectAdmin): 'act_type') list_filter = ('act_type',) search_fields = ('year', 'index') + readonly_fields = ('in_charge', 'operator', 'scientist', 'signatory', + 'operation', 'associated_file', 'imports', + 'departments_label', 'towns_label', + 'history_modifier', 'history_creator') model = models.AdministrativeAct admin.site.register(models.AdministrativeAct, AdministrativeActAdmin) diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 84af8f287..6ef3d5a21 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -235,15 +235,26 @@ class ParcelFormSet(FormSet): values[number] = {} values[number][field] = value + if field == 'parcel': + if not value: + continue + try: + parcel = models.Parcel.objects.get(pk=value) + except models.Parcel.DoesNotExist: + continue + ordering_keys[number] = [ + parcel.town, parcel.year, parcel.section, + parcel.parcel_number] + continue if number not in ordering_keys: ordering_keys[number] = ['', '', '', ''] if field == 'town': ordering_keys[number][0] = value - if field == 'year': + elif field == 'year': ordering_keys[number][1] = value - if field == 'section': + elif field == 'section': ordering_keys[number][2] = value - if field == 'parcel_number': + elif field == 'parcel_number': ordering_keys[number][3] = value reverse_ordering_keys = {} @@ -365,6 +376,17 @@ class RecordRelationsForm(forms.Form): for rel, opes in nc]) return rendered + def clean(self): + cleaned_data = self.cleaned_data + if (cleaned_data.get('relation_type', None) and + not cleaned_data.get('right_record', None)): + raise forms.ValidationError(_(u"You should select an operation.")) + if (not cleaned_data.get('relation_type', None) and + cleaned_data.get('right_record', None)): + raise forms.ValidationError( + _(u"You should select a relation type.")) + return cleaned_data + @classmethod def get_formated_datas(cls, cleaned_datas): result, current, deleted = [], [], [] @@ -466,12 +488,12 @@ class OperationSelect(TableSelect): report_processing = forms.ChoiceField(label=_(u"Report processing"), choices=[]) virtual_operation = forms.NullBooleanField(label=_(u"Virtual operation")) - # archaeological_sites = forms.IntegerField( - # label=_("Archaelogical site"), - # widget=widgets.JQueryAutoComplete( - # reverse_lazy('autocomplete-archaeologicalsite'), - # associated_model=models.ArchaeologicalSite), - # validators=[valid_id(models.ArchaeologicalSite)]) + archaeological_sites = forms.IntegerField( + label=_("Archaelogical site"), + widget=widgets.JQueryAutoComplete( + reverse_lazy('autocomplete-archaeologicalsite'), + associated_model=models.ArchaeologicalSite), + validators=[valid_id(models.ArchaeologicalSite)]) history_creator = forms.IntegerField( label=_(u"Created by"), widget=widgets.JQueryAutoComplete( @@ -670,7 +692,7 @@ class OperationFormGeneral(forms.Form): 'operator': Organization, 'operation_type': models.OperationType, 'report_processing': models.ReportState, - 'archaeological_site': models.ArchaeologicalSite} + } pk = forms.IntegerField(required=False, widget=forms.HiddenInput) if settings.COUNTRY == 'fr': code_patriarche = forms.IntegerField(label=u"Code PATRIARCHE", @@ -683,10 +705,6 @@ class OperationFormGeneral(forms.Form): initial=lambda: datetime.datetime.now().year, validators=[validators.MinValueValidator(1900), validators.MaxValueValidator(2100)]) - operation_code = forms.IntegerField( - label=_(u"Operation code"), - initial=models.Operation.get_available_operation_code, - widget=OperationCodeInput(attrs={'readonly': 'readonly'})) scientist = forms.IntegerField( label=_("Head scientist"), widget=widgets.JQueryAutoComplete( @@ -719,9 +737,9 @@ class OperationFormGeneral(forms.Form): label=_(u"Total surface (m2)"), validators=[validators.MinValueValidator(0), validators.MaxValueValidator(999999999)]) - archaeological_site = widgets.MultipleAutocompleteField( - model=models.ArchaeologicalSite, - label=_("Associated archaeological sites"), new=True, required=False) + # archaeological_site = widgets.MultipleAutocompleteField( + # model=models.ArchaeologicalSite, + # label=_("Associated archaeological sites"), new=True, required=False) start_date = forms.DateField( label=_(u"Start date"), required=False, widget=widgets.JQueryDate) excavation_end_date = forms.DateField( @@ -768,10 +786,12 @@ class OperationFormGeneral(forms.Form): models.ReportState.get_help() self.fields['record_quality'].choices = \ [('', '--')] + list(models.QUALITY) - # data POSTED - if kwargs and kwargs['data'] \ - and 'readonly' in self.fields['operation_code'].widget.attrs: - self.fields['operation_code'].widget.attrs.pop('readonly') + if 'operation_code' in self.fields: + self.fields.keyOrder = list(self.fields.keyOrder) + self.fields.keyOrder.pop(self.fields.keyOrder.index( + 'operation_code')) + self.fields.keyOrder.insert(self.fields.keyOrder.index('year'), + 'operation_code') def clean(self): cleaned_data = self.cleaned_data @@ -787,7 +807,9 @@ class OperationFormGeneral(forms.Form): _(u"The excavation end date cannot be before the start " u"date.")) year = self.cleaned_data.get("year") - operation_code = cleaned_data.get("operation_code") + operation_code = cleaned_data.get("operation_code", None) + if not operation_code: + return self.cleaned_data ops = models.Operation.objects.filter(year=year, operation_code=operation_code) # manage unique operation ID @@ -917,6 +939,32 @@ SelectedParcelGeneralFormSet = formset_factory(ParcelForm, can_delete=True, formset=ParcelFormSet) SelectedParcelGeneralFormSet.form_label = _("Parcels") +""" +class SelectedParcelFormSet(forms.Form): + form_label = _("Parcels") + base_model = 'parcel' + associated_models = {'parcel': models.Parcel} + parcel = forms.MultipleChoiceField( + label=_("Parcel"), required=False, choices=[], + widget=forms.CheckboxSelectMultiple) + + def __init__(self, *args, **kwargs): + parcels = None + print(kwargs) + if 'data' in kwargs and 'PARCELS' in kwargs['data']: + parcels = kwargs['data']['PARCELS'] + # clean data if not "real" data + prefix_value = kwargs['prefix'] + '-parcel' + if not [k for k in kwargs['data'].keys() + if k.startswith(prefix_value) and kwargs['data'][k]]: + kwargs['data'] = None + if 'files' in kwargs: + kwargs.pop('files') + super(SelectedParcelFormSet, self).__init__(*args, **kwargs) + if parcels: + self.fields['parcel'].choices = [('', '--')] + parcels +""" + class RemainForm(forms.Form): form_label = _("Remain types") @@ -1000,7 +1048,8 @@ class ArchaeologicalSiteBasicForm(forms.Form): reverse_lazy('autocomplete-archaeologicalsite'), associated_model=models.ArchaeologicalSite, new=True), - validators=[valid_id(models.ArchaeologicalSite)]) + validators=[valid_id(models.ArchaeologicalSite)], + required=False) ArchaeologicalSiteFormSet = formset_factory(ArchaeologicalSiteBasicForm, diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index b78e36c6c..969d77335 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -4,15 +4,16 @@ # Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015. # Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata # Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata msgid "" msgstr "" -#: forms.py:66 forms.py:333 forms.py:892 forms.py:914 forms.py:918 -#: models.py:780 templates/ishtar/blocks/window_tables/parcels.html:8 +#: forms.py:66 forms.py:333 forms.py:903 forms.py:925 forms.py:929 +#: models.py:782 templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Parcels" msgstr "" -#: forms.py:69 forms.py:185 forms.py:868 models.py:770 +#: forms.py:69 forms.py:185 forms.py:879 models.py:772 #: templates/ishtar/blocks/window_tables/parcels.html:5 #: templates/ishtar/dashboards/dashboard_operation.html:302 #: templates/ishtar/dashboards/dashboard_operation.html:315 @@ -21,18 +22,18 @@ msgstr "" msgid "Town" msgstr "" -#: forms.py:71 forms.py:411 forms.py:682 forms.py:1099 models.py:158 -#: models.py:587 models.py:768 +#: forms.py:71 forms.py:422 forms.py:693 forms.py:1111 models.py:158 +#: models.py:589 models.py:770 #: templates/ishtar/blocks/window_tables/parcels.html:6 msgid "Year" msgstr "" -#: forms.py:74 models.py:771 +#: forms.py:74 models.py:773 #: templates/ishtar/blocks/window_tables/parcels.html:7 msgid "Section" msgstr "" -#: forms.py:77 models.py:772 +#: forms.py:77 models.py:774 msgid "Parcel number" msgstr "" @@ -64,8 +65,8 @@ msgstr "" msgid "Relation type" msgstr "" -#: forms.py:345 ishtar_menu.py:30 models.py:237 models.py:488 models.py:513 -#: models.py:528 models.py:579 models.py:767 wizards.py:338 wizards.py:349 +#: forms.py:345 ishtar_menu.py:30 models.py:237 models.py:490 models.py:515 +#: models.py:530 models.py:581 models.py:769 wizards.py:338 wizards.py:349 #: templates/ishtar/sheet_operation.html:6 msgid "Operation" msgstr "" @@ -74,27 +75,35 @@ msgstr "" msgid ":" msgstr "" -#: forms.py:395 +#: forms.py:372 forms.py:548 forms.py:1083 +msgid "You should select an operation." +msgstr "" + +#: forms.py:376 +msgid "You should select a relation type." +msgstr "" + +#: forms.py:406 msgid "Current relations" msgstr "" -#: forms.py:397 +#: forms.py:408 msgid "Deleted relations" msgstr "" -#: forms.py:401 templates/ishtar/sheet_operation.html:115 +#: forms.py:412 templates/ishtar/sheet_operation.html:115 msgid "Relations" msgstr "" -#: forms.py:412 +#: forms.py:423 msgid "Numeric reference" msgstr "" -#: forms.py:417 forms.py:1109 +#: forms.py:428 forms.py:1121 msgid "Parcel (section/number)" msgstr "" -#: forms.py:420 forms.py:1112 models.py:489 +#: forms.py:431 forms.py:1124 models.py:491 #: templates/ishtar/dashboards/dashboard_operation.html:273 #: templates/ishtar/dashboards/dashboard_operation.html:286 #: templates/ishtar/dashboards/dashboard_operation.html:453 @@ -102,397 +111,389 @@ msgstr "" msgid "Department" msgstr "" -#: forms.py:421 forms.py:953 models.py:77 +#: forms.py:432 forms.py:964 models.py:77 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6 msgid "Name" msgstr "" -#: forms.py:423 forms.py:604 forms.py:680 forms.py:1076 models.py:166 +#: forms.py:434 forms.py:615 forms.py:691 forms.py:1088 models.py:166 msgid "Operation type" msgstr "" -#: forms.py:425 +#: forms.py:436 msgid "Is open?" msgstr "" -#: forms.py:434 forms.py:710 models.py:155 +#: forms.py:445 forms.py:717 models.py:155 msgid "In charge" msgstr "" -#: forms.py:441 models.py:573 +#: forms.py:452 models.py:575 msgid "Scientist in charge" msgstr "" -#: forms.py:443 forms.py:606 forms.py:701 models.py:153 +#: forms.py:454 forms.py:617 forms.py:708 models.py:153 msgid "Operator" msgstr "" -#: forms.py:450 forms.py:958 models.py:81 models.py:168 +#: forms.py:461 forms.py:969 models.py:81 models.py:168 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Remains" msgstr "" -#: forms.py:451 forms.py:937 forms.py:955 models.py:79 models.py:173 +#: forms.py:462 forms.py:948 forms.py:966 models.py:79 models.py:173 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7 msgid "Periods" msgstr "" -#: forms.py:452 +#: forms.py:463 msgid "Started before" msgstr "" -#: forms.py:454 +#: forms.py:465 msgid "Started after" msgstr "" -#: forms.py:456 +#: forms.py:467 msgid "Ended before" msgstr "" -#: forms.py:458 +#: forms.py:469 msgid "Ended after" msgstr "" -#: forms.py:461 +#: forms.py:472 msgid "Search within relations" msgstr "" -#: forms.py:463 forms.py:752 models.py:219 +#: forms.py:474 forms.py:759 models.py:219 msgid "Comment" msgstr "" -#: forms.py:464 +#: forms.py:475 msgid "Abstract (full text search)" msgstr "" -#: forms.py:465 forms.py:754 models.py:231 +#: forms.py:476 forms.py:761 models.py:231 msgid "Record quality" msgstr "" -#: forms.py:466 forms.py:733 models.py:185 +#: forms.py:477 forms.py:740 models.py:185 msgid "Report processing" msgstr "" -#: forms.py:468 forms.py:757 models.py:226 +#: forms.py:479 forms.py:764 models.py:226 msgid "Virtual operation" msgstr "" -#: forms.py:476 forms.py:1116 +#: forms.py:481 forms.py:1009 +msgid "Archaelogical site" +msgstr "" + +#: forms.py:487 forms.py:1128 msgid "Created by" msgstr "" -#: forms.py:482 forms.py:1122 +#: forms.py:493 forms.py:1134 msgid "Modified by" msgstr "" -#: forms.py:524 forms.py:1069 views.py:231 +#: forms.py:535 forms.py:1081 views.py:231 msgid "Operation search" msgstr "" -#: forms.py:537 forms.py:1071 -msgid "You should select an operation." -msgstr "" - -#: forms.py:568 +#: forms.py:579 msgid "Associated file" msgstr "" -#: forms.py:572 forms.py:816 models.py:584 wizards.py:76 +#: forms.py:583 forms.py:827 models.py:586 wizards.py:76 msgid "Archaelogical file" msgstr "" -#: forms.py:579 forms.py:581 models.py:233 +#: forms.py:590 forms.py:592 models.py:233 msgid "Abstract" msgstr "" -#: forms.py:584 +#: forms.py:595 msgid "months" msgstr "" -#: forms.py:584 +#: forms.py:595 msgid "years" msgstr "" -#: forms.py:586 models.py:139 +#: forms.py:597 models.py:139 msgid "Creation date" msgstr "" -#: forms.py:587 +#: forms.py:598 msgid "Start of field work" msgstr "" -#: forms.py:589 +#: forms.py:600 msgid "All" msgstr "" -#: forms.py:590 +#: forms.py:601 msgid "Preventive" msgstr "" -#: forms.py:591 +#: forms.py:602 msgid "Research" msgstr "" -#: forms.py:595 +#: forms.py:606 msgid "Slicing" msgstr "" -#: forms.py:598 +#: forms.py:609 msgid "Department detail" msgstr "" -#: forms.py:600 +#: forms.py:611 msgid "Date get from" msgstr "" -#: forms.py:602 +#: forms.py:613 msgid "Preventive/Research" msgstr "" -#: forms.py:608 +#: forms.py:619 msgid "Date after" msgstr "" -#: forms.py:610 +#: forms.py:621 msgid "Date before" msgstr "" -#: forms.py:612 +#: forms.py:623 msgid "With reports" msgstr "" -#: forms.py:613 +#: forms.py:624 msgid "With finds" msgstr "" -#: forms.py:665 forms.py:1169 templates/ishtar/sheet_administrativeact.html:11 +#: forms.py:676 forms.py:1181 templates/ishtar/sheet_administrativeact.html:11 #: templates/ishtar/sheet_operation.html:32 msgid "General" msgstr "" -#: forms.py:678 models.py:218 +#: forms.py:689 models.py:218 msgid "Generic name" msgstr "" -#: forms.py:687 forms.py:812 models.py:159 models.py:368 -msgid "Operation code" -msgstr "" - -#: forms.py:691 +#: forms.py:698 msgid "Head scientist" msgstr "" -#: forms.py:707 models.py:217 +#: forms.py:714 models.py:217 msgid "Operator reference" msgstr "" -#: forms.py:719 +#: forms.py:726 msgid "Total surface (m2)" msgstr "" -#: forms.py:724 -msgid "Associated archaeological sites" -msgstr "" - -#: forms.py:726 models.py:49 models.py:142 models.py:938 +#: forms.py:733 models.py:49 models.py:142 models.py:940 msgid "Start date" msgstr "" -#: forms.py:728 models.py:144 +#: forms.py:735 models.py:144 msgid "Excavation end date" msgstr "" -#: forms.py:731 models.py:145 +#: forms.py:738 models.py:145 msgid "Report delivery date" msgstr "" -#: forms.py:782 +#: forms.py:791 msgid "" "If you want to set an excavation end date you have to provide a start date." msgstr "" -#: forms.py:787 +#: forms.py:796 msgid "The excavation end date cannot be before the start date." msgstr "" -#: forms.py:802 +#: forms.py:813 #, python-format msgid "" "Operation code already exist for year: %(year)d - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:806 +#: forms.py:817 msgid "Bad operation code" msgstr "" -#: forms.py:838 +#: forms.py:823 models.py:159 models.py:368 +msgid "Operation code" +msgstr "" + +#: forms.py:849 msgid "Preventive informations - excavation" msgstr "" -#: forms.py:839 models.py:171 +#: forms.py:850 models.py:171 #: templates/ishtar/dashboards/dashboard_operation.html:495 msgid "Cost (euros)" msgstr "" -#: forms.py:840 models.py:176 +#: forms.py:851 models.py:176 msgid "Scheduled man-days" msgstr "" -#: forms.py:842 models.py:179 +#: forms.py:853 models.py:179 msgid "Optional man-days" msgstr "" -#: forms.py:844 models.py:182 +#: forms.py:855 models.py:182 msgid "Effective man-days" msgstr "" -#: forms.py:854 +#: forms.py:865 msgid "Preventive informations - diagnostic" msgstr "" -#: forms.py:857 models.py:201 +#: forms.py:868 models.py:201 msgid "Prescription on zoning" msgstr "" -#: forms.py:859 models.py:204 +#: forms.py:870 models.py:204 msgid "Prescription on large area" msgstr "" -#: forms.py:862 models.py:206 +#: forms.py:873 models.py:206 msgid "Prescription on geoarchaeological context" msgstr "" -#: forms.py:866 forms.py:888 models.py:170 models.py:597 +#: forms.py:877 forms.py:899 models.py:170 models.py:599 msgid "Towns" msgstr "" -#: forms.py:895 models.py:779 models.py:936 +#: forms.py:906 models.py:781 models.py:938 msgid "Parcel" msgstr "" -#: forms.py:922 models.py:43 +#: forms.py:933 models.py:43 msgid "Remain types" msgstr "" -#: forms.py:926 models.py:42 +#: forms.py:937 models.py:42 msgid "Remain type" msgstr "" -#: forms.py:941 +#: forms.py:952 msgid "Period" msgstr "" -#: forms.py:952 models.py:76 +#: forms.py:963 models.py:76 msgid "Reference" msgstr "" -#: forms.py:977 +#: forms.py:988 msgid "This reference already exists." msgstr "" -#: forms.py:994 models.py:85 +#: forms.py:1005 models.py:85 msgid "Archaeological site" msgstr "" -#: forms.py:998 -msgid "Archaelogical site" -msgstr "" - -#: forms.py:1008 models.py:86 models.py:223 +#: forms.py:1020 models.py:86 models.py:223 #: templates/ishtar/sheet_operation.html:126 msgid "Archaeological sites" msgstr "" -#: forms.py:1012 +#: forms.py:1024 msgid "Associated archaelogical sites" msgstr "" -#: forms.py:1018 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 +#: forms.py:1030 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 msgid "Search" msgstr "" -#: forms.py:1023 +#: forms.py:1035 msgid "Would you like to close this operation?" msgstr "" -#: forms.py:1028 +#: forms.py:1040 msgid "Would you like to delete this operation?" msgstr "" -#: forms.py:1037 forms.py:1100 models.py:515 models.py:564 +#: forms.py:1049 forms.py:1112 models.py:517 models.py:566 msgid "Index" msgstr "" -#: forms.py:1063 +#: forms.py:1075 #, python-format msgid "" "Index already exists for operation: %(operation)s - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:1075 +#: forms.py:1087 msgid "Operation's town" msgstr "" -#: forms.py:1078 +#: forms.py:1090 msgid "Operation's year" msgstr "" -#: forms.py:1089 +#: forms.py:1101 msgid "Documentation search" msgstr "" -#: forms.py:1091 +#: forms.py:1103 msgid "You should select a document." msgstr "" -#: forms.py:1106 forms.py:1172 models.py:539 models.py:558 +#: forms.py:1118 forms.py:1184 models.py:541 models.py:560 msgid "Act type" msgstr "" -#: forms.py:1107 forms.py:1260 +#: forms.py:1119 forms.py:1272 msgid "Indexed?" msgstr "" -#: forms.py:1113 forms.py:1177 models.py:588 +#: forms.py:1125 forms.py:1189 models.py:590 #: templates/ishtar/blocks/window_tables/administrativacts.html:8 msgid "Object" msgstr "" -#: forms.py:1149 views.py:373 +#: forms.py:1161 views.py:373 msgid "Administrative act search" msgstr "" -#: forms.py:1164 forms.py:1218 forms.py:1285 +#: forms.py:1176 forms.py:1230 forms.py:1297 msgid "You should select an administrative act." msgstr "" -#: forms.py:1180 models.py:585 +#: forms.py:1192 models.py:587 msgid "Signature date" msgstr "" -#: forms.py:1195 +#: forms.py:1207 msgid "Would you like to delete this administrative act?" msgstr "" -#: forms.py:1200 +#: forms.py:1212 msgid "Template" msgstr "" -#: forms.py:1224 forms.py:1228 +#: forms.py:1236 forms.py:1240 msgid "This document is not intended for this type of act." msgstr "" -#: forms.py:1246 +#: forms.py:1258 msgid "Doc generation" msgstr "" -#: forms.py:1248 +#: forms.py:1260 msgid "Generate the associated doc?" msgstr "" -#: forms.py:1269 ishtar_menu.py:121 views.py:407 +#: forms.py:1281 ishtar_menu.py:121 views.py:407 msgctxt "admin act register" msgid "Register" msgstr "" @@ -513,7 +514,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:58 models.py:604 +#: ishtar_menu.py:58 models.py:606 #: templates/ishtar/sheet_administrativeact.html:6 msgid "Administrative act" msgstr "" @@ -547,11 +548,11 @@ msgstr "" msgid "Operations" msgstr "" -#: models.py:48 models.py:64 models.py:1400 +#: models.py:48 models.py:64 models.py:1402 msgid "Order" msgstr "" -#: models.py:50 models.py:939 +#: models.py:50 models.py:941 msgid "End date" msgstr "" @@ -615,7 +616,7 @@ msgstr "" msgid "In charge scientist" msgstr "" -#: models.py:163 models.py:763 +#: models.py:163 models.py:765 msgid "File" msgstr "" @@ -664,7 +665,7 @@ msgstr "" msgid "Intercommunal" msgstr "" -#: models.py:351 models.py:527 +#: models.py:351 models.py:529 msgid "Archaeological file" msgstr "" @@ -676,189 +677,189 @@ msgstr "" msgid "This operation code already exists for this year" msgstr "" -#: models.py:459 +#: models.py:461 msgid "Inverse relation" msgstr "" -#: models.py:463 +#: models.py:465 msgid "Operation relation type" msgstr "" -#: models.py:464 +#: models.py:466 msgid "Operation relation types" msgstr "" -#: models.py:477 +#: models.py:479 msgid "Operation record relation" msgstr "" -#: models.py:478 +#: models.py:480 msgid "Operation record relations" msgstr "" -#: models.py:499 +#: models.py:501 msgid "Operation documentation" msgstr "" -#: models.py:500 +#: models.py:502 msgid "Operation documentations" msgstr "" -#: models.py:503 +#: models.py:505 msgid "Can view all Operation sources" msgstr "" -#: models.py:505 +#: models.py:507 msgid "Can view own Operation source" msgstr "" -#: models.py:507 +#: models.py:509 msgid "Can add own Operation source" msgstr "" -#: models.py:509 +#: models.py:511 msgid "Can change own Operation source" msgstr "" -#: models.py:511 +#: models.py:513 msgid "Can delete own Operation source" msgstr "" -#: models.py:530 +#: models.py:532 msgid "Intended to" msgstr "" -#: models.py:532 +#: models.py:534 msgid "Code" msgstr "" -#: models.py:535 +#: models.py:537 msgid "Associated template" msgstr "" -#: models.py:536 +#: models.py:538 msgid "Indexed" msgstr "" -#: models.py:540 +#: models.py:542 msgid "Act types" msgstr "" -#: models.py:562 +#: models.py:564 msgid "Person in charge of the operation" msgstr "" -#: models.py:568 +#: models.py:570 msgid "Archaeological preventive operator" msgstr "" -#: models.py:576 +#: models.py:578 msgid "Signatory" msgstr "" -#: models.py:594 +#: models.py:596 msgid "Departments" msgstr "" -#: models.py:595 +#: models.py:597 msgid "Cached values get from associated departments" msgstr "" -#: models.py:598 +#: models.py:600 msgid "Cached values get from associated towns" msgstr "" -#: models.py:605 templates/ishtar/sheet_operation.html:134 +#: models.py:607 templates/ishtar/sheet_operation.html:134 msgid "Administrative acts" msgstr "" -#: models.py:608 +#: models.py:610 msgid "Can view all Administrative acts" msgstr "" -#: models.py:610 +#: models.py:612 msgid "Can view own Administrative act" msgstr "" -#: models.py:612 +#: models.py:614 msgid "Can add own Administrative act" msgstr "" -#: models.py:614 +#: models.py:616 msgid "Can change own Administrative act" msgstr "" -#: models.py:616 +#: models.py:618 msgid "Can delete own Administrative act" msgstr "" -#: models.py:625 +#: models.py:627 #: templates/ishtar/blocks/window_tables/administrativacts.html:5 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:5 msgid "Ref." msgstr "" -#: models.py:708 +#: models.py:710 msgid "This index already exists for this year" msgstr "" -#: models.py:774 +#: models.py:776 msgid "External ID" msgstr "" -#: models.py:776 +#: models.py:778 msgid "Address - Locality" msgstr "" -#: models.py:934 +#: models.py:936 msgid "Owner" msgstr "" -#: models.py:942 +#: models.py:944 msgid "Parcel owner" msgstr "" -#: models.py:943 +#: models.py:945 msgid "Parcel owners" msgstr "" -#: models.py:969 +#: models.py:971 msgid "Recorded" msgstr "" -#: models.py:970 +#: models.py:972 msgid "Effective" msgstr "" -#: models.py:971 +#: models.py:973 msgid "Active" msgstr "" -#: models.py:972 +#: models.py:974 msgid "Field completed" msgstr "" -#: models.py:973 +#: models.py:975 msgid "Associated report" msgstr "" -#: models.py:974 +#: models.py:976 msgid "Closed" msgstr "" -#: models.py:975 +#: models.py:977 msgid "Documented and closed" msgstr "" -#: models.py:1401 +#: models.py:1403 msgid "Is preventive" msgstr "" -#: models.py:1404 +#: models.py:1406 msgid "Operation type old" msgstr "" -#: models.py:1405 +#: models.py:1407 msgid "Operation types old" msgstr "" @@ -1110,10 +1111,18 @@ msgstr "" msgid "Context records" msgstr "" -#: templates/ishtar/sheet_operation.html:155 +#: templates/ishtar/sheet_operation.html:148 +msgid "Documents from associated context records" +msgstr "" + +#: templates/ishtar/sheet_operation.html:153 msgid "Finds" msgstr "" +#: templates/ishtar/sheet_operation.html:158 +msgid "Documents from associated finds" +msgstr "" + #: templates/ishtar/sheet_operationsource.html:6 msgid "Operation source" msgstr "" diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 945af21a4..d0a010d6a 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -427,6 +427,8 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem, # put a default year if start_date is defined if self.start_date and not self.year: self.year = self.start_date.year + if self.operation_code is None: + self.operation_code = self.get_available_operation_code(self.year) return super(Operation, self).save(*args, **kwargs) m2m_changed.connect(cached_label_changed, sender=Operation.towns.through) diff --git a/archaeological_operations/templates/ishtar/sheet_operation.html b/archaeological_operations/templates/ishtar/sheet_operation.html index 14210046b..d1cd1578c 100644 --- a/archaeological_operations/templates/ishtar/sheet_operation.html +++ b/archaeological_operations/templates/ishtar/sheet_operation.html @@ -145,21 +145,19 @@ {% dynamic_table_document context_records 'context_records_for_ope' 'operation' item.pk 'TABLE_COLS_FOR_OPE' output %} {% endif %} -{% comment %} {% trans "Documents from associated context records" as cr_docs %} {% if item.context_record_docs_q.count %} {% dynamic_table_document cr_docs 'context_records_docs' 'context_record__operation' item.pk '' output %} {% endif %} -{% endcomment %} {% trans "Finds" as finds %} {% if item.finds %} {% dynamic_table_document finds 'finds_for_ope' 'base_finds__context_record__operation' item.pk 'TABLE_COLS_FOR_OPE' output %} {% endif %} -{% comment %} -{% trans "Documents from associated finds" as find_docs %} -{% if item.find_docs_q.count %} {% table_document find_docs item.find_docs_q.all %}{% endif %} -{% endcomment %} +{% trans "Documents from associated finds" as finds_docs %} +{% if item.find_docs_q.count %} +{% dynamic_table_document finds_docs 'finds_docs' 'find__base_finds__context_record__operation' item.pk '' output %} +{% endif %} {% endblock %} diff --git a/archaeological_warehouse/ishtar_menu.py b/archaeological_warehouse/ishtar_menu.py index f9f0daf33..2da50e7ce 100644 --- a/archaeological_warehouse/ishtar_menu.py +++ b/archaeological_warehouse/ishtar_menu.py @@ -27,13 +27,13 @@ from archaeological_finds.models import Treatment MENU_SECTIONS = [ - (60, SectionItem('find_management', _(u"Find"), - profile_restriction='warehouse', - childs=[ - MenuItem('warehouse_packaging', _(u"Packaging"), - model=Treatment, - access_controls=['add_treatment', 'add_own_treatment']), - ])), + # (60, SectionItem('find_management', _(u"Find"), + # profile_restriction='warehouse', + # childs=[ + # MenuItem('warehouse_packaging', _(u"Packaging"), + # model=Treatment, + # access_controls=['add_treatment', 'add_own_treatment']), + # ])), ] """ (60, SectionItem('warehouse', _(u"Warehouse"), diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot index 99f03fed7..cb0992a12 100644 --- a/archaeological_warehouse/locale/django.pot +++ b/archaeological_warehouse/locale/django.pot @@ -74,7 +74,7 @@ msgstr "" msgid "Add a new container" msgstr "" -#: forms.py:132 ishtar_menu.py:33 views.py:94 +#: forms.py:132 views.py:94 msgid "Packaging" msgstr "" @@ -90,10 +90,6 @@ msgstr "" msgid "Packaged finds" msgstr "" -#: ishtar_menu.py:30 -msgid "Find" -msgstr "" - #: models.py:31 msgid "Warehouse types" msgstr "" diff --git a/example_project/settings.py b/example_project/settings.py index 98eb14e9e..88738b479 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -237,6 +237,8 @@ JQUERY_UI_URL = STATIC_URL + "js/jquery-ui/" if DEBUG_TOOLBAR: + if '..' not in sys.path: + sys.path.insert(0, '..') global DEBUG_TOOLBAR_PANELS global DEBUG_TOOLBAR_CONFIG MIDDLEWARE_CLASSES += ['debug_toolbar.middleware.DebugToolbarMiddleware'] diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 5863baab2..ae72d173f 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -223,8 +223,8 @@ class BaseOrganizationForm(forms.ModelForm): class PersonSelect(TableSelect): - name = forms.CharField(label=_(u"Name"), max_length=30) - surname = forms.CharField(label=_(u"Surname"), max_length=20) + name = forms.CharField(label=_(u"Name"), max_length=200) + surname = forms.CharField(label=_(u"Surname"), max_length=50) email = forms.CharField(label=_(u"Email"), max_length=75) person_types = forms.ChoiceField(label=_(u"Type"), choices=[]) attached_to = forms.IntegerField( @@ -254,11 +254,11 @@ class SimplePersonForm(NewItemForm): form_label = _("Identity") associated_models = {'attached_to': models.Organization} title = forms.ChoiceField(label=_("Title"), choices=models.Person.TYPE) - surname = forms.CharField(label=_(u"Surname"), max_length=20, + surname = forms.CharField(label=_(u"Surname"), max_length=50, validators=[name_validator]) - name = forms.CharField(label=_(u"Name"), max_length=30, + name = forms.CharField(label=_(u"Name"), max_length=200, validators=[name_validator]) - raw_name = forms.CharField(label=_(u"Raw name"), max_length=255, + raw_name = forms.CharField(label=_(u"Raw name"), max_length=300, required=False) address = forms.CharField(label=_(u"Address"), widget=forms.Textarea, required=False) diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 6f2d58879..0610c5e95 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -422,7 +422,7 @@ msgstr "" msgid "Account management" msgstr "" -#: ishtar_menu.py:34 models.py:853 views.py:1115 +#: ishtar_menu.py:34 models.py:853 views.py:1120 msgid "Global variables" msgstr "" @@ -454,11 +454,11 @@ msgstr "" msgid "Imports" msgstr "" -#: ishtar_menu.py:99 views.py:1123 +#: ishtar_menu.py:99 views.py:1128 msgid "New import" msgstr "" -#: ishtar_menu.py:103 views.py:1137 +#: ishtar_menu.py:103 views.py:1142 msgid "Current imports" msgstr "" @@ -644,15 +644,15 @@ msgstr "" msgid "Operation source" msgstr "" -#: models.py:1259 views.py:940 views.py:991 +#: models.py:1259 views.py:945 views.py:996 msgid "Archaeological files" msgstr "" -#: models.py:1261 views.py:943 views.py:999 +#: models.py:1261 views.py:948 views.py:1004 msgid "Context records" msgstr "" -#: models.py:1263 views.py:945 views.py:1002 +#: models.py:1263 views.py:950 views.py:1007 msgid "Finds" msgstr "" @@ -1163,34 +1163,34 @@ msgstr "" msgid "Organization deletion" msgstr "" -#: views.py:637 templates/base.html:80 +#: views.py:642 templates/base.html:80 #: templates/ishtar/sheet_organization.html:35 #: templatetags/link_to_window.py:16 msgid "Details" msgstr "" -#: views.py:868 views.py:922 +#: views.py:873 views.py:927 msgid "Operation not permitted." msgstr "" -#: views.py:870 +#: views.py:875 #, python-format msgid "New %s" msgstr "" -#: views.py:941 views.py:995 +#: views.py:946 views.py:1000 msgid "Operations" msgstr "" -#: views.py:1184 templates/ishtar/import_list.html:43 +#: views.py:1189 templates/ishtar/import_list.html:43 msgid "Link unmatched items" msgstr "" -#: views.py:1199 +#: views.py:1204 msgid "Delete import" msgstr "" -#: views.py:1258 views.py:1274 +#: views.py:1263 views.py:1279 msgid "Corporation manager" msgstr "" @@ -1198,11 +1198,11 @@ msgstr "" msgid "Search..." msgstr "" -#: widgets.py:602 templatetags/window_tables.py:80 +#: widgets.py:602 templatetags/window_tables.py:68 msgid "No results" msgstr "" -#: widgets.py:603 templatetags/window_tables.py:81 +#: widgets.py:603 templatetags/window_tables.py:69 msgid "Loading..." msgstr "" @@ -1571,7 +1571,11 @@ msgstr "" msgid "." msgstr "" -#: templates/blocks/form_flex_snippet.html:10 +#: templates/blocks/form_flex_snippet.html:12 +msgid "Show / hide advanced search" +msgstr "" + +#: templates/blocks/form_flex_snippet.html:18 #: templates/blocks/form_snippet.html:9 msgid "Help" msgstr "" diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js index c50d050ef..9af5cf2b0 100644 --- a/ishtar_common/static/js/ishtar.js +++ b/ishtar_common/static/js/ishtar.js @@ -41,6 +41,16 @@ $(document).ready(function(){ {item:'operation', value:$("#current_operation").val()} ); }); + $("#current_contextrecord").change(function(){ + $.post('/' + url_path + 'update-current-item/', + {item:'contextrecord', value:$("#current_contextrecord").val()} + ); + }); + $("#current_find").change(function(){ + $.post('/' + url_path + 'update-current-item/', + {item:'find', value:$("#current_find").val()} + ); + }); if ($(document).height() < 1.5*$(window).height()){ $('#to_bottom_arrow').hide(); $('#to_top_arrow').hide(); @@ -177,3 +187,11 @@ function closeAllWindows(){ jQuery("#window > div").hide("slow"); jQuery("#window").html(""); } + +function show_hide_flex(id){ + if ($(id).is(':hidden')){ + $(id).css('display', 'flex'); + } else { + $(id).hide(); + } +} diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index 2a0079706..4467a0639 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -167,7 +167,7 @@ button, input[type=submit], button.submit{ border:1px solid #FFF; margin:6px; font-size:0.9em; - padding:4px 3px; + padding:4px 8px; border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; @@ -179,6 +179,18 @@ button:hover, input[type=submit]:hover{ border:1px solid #922; } +button.ui-widget-header { + font-weight: normal; + border:1px solid #f8b950; + background: #f8b950; +} + +button.ui-widget-header:hover { + color:#fff; + border:1px solid #f8b950; + background: #f8b950; +} + textarea, input[type=text], input[type=password], @@ -204,7 +216,7 @@ input[role=textbox]:focus{ border:1px solid #D14; } -.hidden{ +ul.form-flex.hidden, .hidden{ display:none; } @@ -266,7 +278,7 @@ div#validation-bar.big{ } a.button{ - padding:0.5em; + padding: 8px; } #reset_wizards{ diff --git a/ishtar_common/static/template.odt b/ishtar_common/static/template.odt Binary files differindex d1d0515bf..87b578800 100644 --- a/ishtar_common/static/template.odt +++ b/ishtar_common/static/template.odt diff --git a/ishtar_common/templates/blocks/JQueryJqGrid.html b/ishtar_common/templates/blocks/JQueryJqGrid.html index 1639c70f2..063a3c1da 100644 --- a/ishtar_common/templates/blocks/JQueryJqGrid.html +++ b/ishtar_common/templates/blocks/JQueryJqGrid.html @@ -1,6 +1,6 @@ {% load i18n %} -<button id='search_{{name}}' class='submit'>{% trans "Search" %}</button> +<button id='search_{{name}}' class='submit ui-widget-header'>{% trans "Search" %}</button> {% if url_new %} <p><a href="#" onclick="open_window('{{url_new}}');">{{new_message}}</a></p> diff --git a/ishtar_common/templates/blocks/form_flex_snippet.html b/ishtar_common/templates/blocks/form_flex_snippet.html index 03d8b15f0..97ac37b44 100644 --- a/ishtar_common/templates/blocks/form_flex_snippet.html +++ b/ishtar_common/templates/blocks/form_flex_snippet.html @@ -1,14 +1,25 @@ {% load i18n %} -<ul class='form-flex'> - {% if form.non_field_errors %}<li class='errors'> + {% if form.non_field_errors %}<p class='errors'> {{form.non_field_errors}} - </li>{%endif%} - {% for field in form %}{% if not field.is_hidden %} + </p>{%endif%} + {% for hidden in form.hidden_fields %}{{ hidden }}{% endfor %} + {% for field in form.visible_fields %} +{% if forloop.counter0 == 0 %} +<ul class='form-flex head-form'> +{% endif %} +{% if forloop.counter0 == 6 %} +</ul> +<p class='center'><a href='#' onclick='show_hide_flex(".tail-form");return false'>{% trans "Show / hide advanced search" %}</a></p> +<ul class='form-flex tail-form hidden'> +{% endif %} <li{% if field.field.required %} class='required'{% endif %}> {{ field.label_tag }} <p class='input'>{{ field.errors }}{{field|safe}}</p>{% if field.help_text %} <a href="#{{field.auto_id}}" class="help_display" title="{% trans "Help"%}">?</a> <div class="help_text" id="{{field.auto_id}}_help"> {{field.help_text}}</div> - {%endif%}</li>{% else %}{{field}}{% endif %}{% endfor %} + {%endif%}</li> +{% if forloop.last %} </ul> +{% endif %} +{% endfor %} diff --git a/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html b/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html index 76172d3ac..7239b64fc 100644 --- a/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html +++ b/ishtar_common/templates/ishtar/blocks/window_tables/dynamic_documents.html @@ -7,10 +7,10 @@ <div id='foot_{{name}}' class='gridfooter'> {% if source_full %} {% trans "Export as CSV" %} ({{encoding}}) -<a href='{{simple_source}}csv{{ source_attrs }}' target='_blank'>{% trans "simple" %}</a> - -<a href='{{source_full}}csv{{ source_attrs }}' target='_blank'>{% trans "full" %}</a> +<a href='{{simple_source}}csv{{ source_attrs|safe }}' target='_blank'>{% trans "simple" %}</a> - +<a href='{{source_full}}csv{{ source_attrs|safe }}' target='_blank'>{% trans "full" %}</a> {% else %} -<a href="{{simple_source}}csv{{ source_attrs }}" target="_blank">{% trans "Export as CSV" %} ({{encoding}})</a> +<a href="{{simple_source}}csv{{ source_attrs|safe }}" target="_blank">{% trans "Export as CSV" %} ({{encoding}})</a> {% endif %} </div> @@ -19,7 +19,7 @@ setTimeout( function(){ $("#grid_{{name}}").jqGrid({ - url:'{{source}}', + url:'{{source|safe}}', datatype: "json", mtype: 'GET', colNames:['id', '', {{col_names|safe}}], diff --git a/ishtar_common/templatetags/window_tables.py b/ishtar_common/templatetags/window_tables.py index 687b2cf49..cdd681b52 100644 --- a/ishtar_common/templatetags/window_tables.py +++ b/ishtar_common/templatetags/window_tables.py @@ -6,11 +6,18 @@ from django.conf import settings from django.core.urlresolvers import resolve from django.template.defaultfilters import slugify from django.template.loader import get_template +from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ from ishtar_common.forms import reverse_lazy from ishtar_common.widgets import JQueryJqGrid +from archaeological_files.models import File +from archaeological_operations.models import OperationSource, Operation +from archaeological_context_records.models import ContextRecord, \ + ContextRecordSource +from archaeological_finds.models import Find, FindSource + register = template.Library() @@ -19,40 +26,21 @@ def table_document(caption, data): return {'caption': caption, 'data': data} ASSOCIATED_MODELS = {} -try: - from archaeological_files.models import File - ASSOCIATED_MODELS['files'] = (File, 'get-file', '') -except: - pass - -try: - from archaeological_operations.models import OperationSource, Operation - ASSOCIATED_MODELS['operation_docs'] = (OperationSource, - 'get-operationsource', '') - ASSOCIATED_MODELS['operations'] = (Operation, 'get-operation', '') -except: - pass - -try: - from archaeological_context_records.models import ContextRecord, \ - ContextRecordSource - ASSOCIATED_MODELS['context_records'] = (ContextRecord, 'get-contextrecord', - 'get-contextrecord-full') - ASSOCIATED_MODELS['context_records_for_ope'] = ( - ContextRecord, - 'get-contextrecord-for-ope', 'get-contextrecord-full') - ASSOCIATED_MODELS['context_records_docs'] = (ContextRecordSource, - 'get-contextrecordsource', '') -except: - pass - -try: - from archaeological_finds.models import Find - ASSOCIATED_MODELS['finds'] = (Find, 'get-find', 'get-find-full') - ASSOCIATED_MODELS['finds_for_ope'] = ( - Find, 'get-find-for-ope', 'get-find-full') -except: - pass +ASSOCIATED_MODELS['files'] = (File, 'get-file', '') +ASSOCIATED_MODELS['operation_docs'] = (OperationSource, + 'get-operationsource', '') +ASSOCIATED_MODELS['operations'] = (Operation, 'get-operation', '') +ASSOCIATED_MODELS['context_records'] = (ContextRecord, 'get-contextrecord', + 'get-contextrecord-full') +ASSOCIATED_MODELS['context_records_for_ope'] = ( + ContextRecord, + 'get-contextrecord-for-ope', 'get-contextrecord-full') +ASSOCIATED_MODELS['context_records_docs'] = (ContextRecordSource, + 'get-contextrecordsource', '') +ASSOCIATED_MODELS['finds'] = (Find, 'get-find', 'get-find-full') +ASSOCIATED_MODELS['finds_for_ope'] = ( + Find, 'get-find-for-ope', 'get-find-full') +ASSOCIATED_MODELS['finds_docs'] = (FindSource, 'get-findsource', '') @register.simple_tag(takes_context=True) @@ -64,7 +52,7 @@ def dynamic_table_document(context, caption, associated_model, key, value, grid = JQueryJqGrid(None, None, model, table_cols=table_cols) source = unicode(reverse_lazy(url)) source_full = unicode(reverse_lazy(url_full)) if url_full else '' - source_attrs = '?{}={}'.format(key, value) + source_attrs = mark_safe('?submited=1&{}={}'.format(key, value)) if output == 'html': col_names, extra_cols = grid.get_cols() t = get_template('ishtar/blocks/window_tables/dynamic_documents.html') diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 5ea53374d..54eb9164f 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -572,7 +572,12 @@ def get_item(model, func_name, default_name, extra_request_keys=[], datas = [] if old: items = [item.get_previous(old) for item in items] + c_ids = [] for item in items: + # manual deduplicate when distinct is not enough + if item.pk in c_ids: + continue + c_ids.append(item.pk) data = [item.pk] for keys in table_cols: if type(keys) not in (list, tuple): diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index 57aa8cf69..b8b104a61 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> # Copyright (C) 2007 skam <massimo dot scamarcia at gmail.com> # (http://djangosnippets.org/snippets/233/) diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po index d86fd954a..7d679c1f8 100644 --- a/translations/fr/archaeological_context_records.po +++ b/translations/fr/archaeological_context_records.po @@ -603,11 +603,11 @@ msgstr "Pas d'opération rattachée à cette UE !" msgid "Document from this context record" msgstr "Document associé à cette Unité d'Enregistrement" -#: templates/ishtar/sheet_contextrecord.html:129 +#: templates/ishtar/sheet_contextrecord.html:131 msgid "Finds" msgstr "Mobilier" -#: templates/ishtar/sheet_contextrecord.html:134 +#: templates/ishtar/sheet_contextrecord.html:136 msgid "Documents from associated finds" msgstr "Documents du mobilier associé" diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po index 6de4b7686..6a9ed4c3c 100644 --- a/translations/fr/archaeological_finds.po +++ b/translations/fr/archaeological_finds.po @@ -4,13 +4,14 @@ # Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015. # Étienne Loks <etienne.loks@iggdrasil.net>, 2015. #zanata # Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata msgid "" msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2016-02-24 10:49-0500\n" -"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n" +"PO-Revision-Date: 2016-03-07 12:02-0500\n" +"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" @@ -223,39 +224,43 @@ msgstr "Description précise" msgid "Resulting finds" msgstr "Mobiliers résultants" -#: forms.py:318 +#: forms.py:319 +msgid "Would you like to delete this find?" +msgstr "Souhaitez vous supprimer ce mobilier ?" + +#: forms.py:323 msgid "Upstream find" msgstr "Mobilier amont" -#: forms.py:325 +#: forms.py:330 msgid "Archaeological find search" msgstr "Recherche de mobilier" -#: forms.py:327 +#: forms.py:332 msgid "You should select an archaeological find." msgstr "Vous devez sélectionner du mobilier." -#: forms.py:332 +#: forms.py:337 msgid "Year of the operation" msgstr "Année de l'opération" -#: forms.py:334 +#: forms.py:339 msgid "Period of the archaelogical find" msgstr "Période du mobilier" -#: forms.py:336 +#: forms.py:341 msgid "Material type of the archaelogical find" msgstr "Type de matériau du mobilier" -#: forms.py:338 +#: forms.py:343 msgid "Description of the archaelogical find" msgstr "Description du mobilier" -#: forms.py:350 +#: forms.py:355 msgid "Documentation search" msgstr "Recherche de document" -#: forms.py:352 +#: forms.py:357 msgid "You should select a document." msgstr "Vous devez sélectionner un document." @@ -263,22 +268,22 @@ msgstr "Vous devez sélectionner un document." msgid "Search" msgstr "Recherche" -#: ishtar_menu.py:40 ishtar_menu.py:57 +#: ishtar_menu.py:40 ishtar_menu.py:62 msgid "Creation" msgstr "Ajout" -#: ishtar_menu.py:45 ishtar_menu.py:62 +#: ishtar_menu.py:45 ishtar_menu.py:67 msgid "Modification" msgstr "Modification" -#: ishtar_menu.py:54 -msgid "Documentation" -msgstr "Documentation" - -#: ishtar_menu.py:67 +#: ishtar_menu.py:54 ishtar_menu.py:72 msgid "Deletion" msgstr "Suppression" +#: ishtar_menu.py:59 +msgid "Documentation" +msgstr "Documentation" + #: models.py:39 msgid "Code" msgstr "Code" @@ -555,15 +560,19 @@ msgstr "Nouveau mobilier" msgid "Find modification" msgstr "Modification de mobilier" -#: views.py:129 +#: views.py:126 +msgid "Find deletion" +msgstr "Suppression de mobilier" + +#: views.py:135 msgid "Find: new source" msgstr "Mobilier : nouvelle documentation associée" -#: views.py:137 +#: views.py:143 msgid "Find: source modification" msgstr "Mobilier : modification de documentation associée" -#: views.py:143 +#: views.py:149 msgid "Find: source deletion" msgstr "Mobilier : suppression de mobilier associé" diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index 96e211cb1..eb5ab5738 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -10,19 +10,19 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2016-02-25 07:05-0500\n" +"PO-Revision-Date: 2016-03-16 03:20-0400\n" "Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n" "Language-Team: \n" "Language: fr\n" "Plural-Forms: nplurals=2; plural=n>1;\n" "X-Generator: Zanata 3.8.2\n" -#: forms.py:66 forms.py:333 forms.py:892 forms.py:914 forms.py:918 -#: models.py:780 templates/ishtar/blocks/window_tables/parcels.html:8 +#: forms.py:66 forms.py:333 forms.py:903 forms.py:925 forms.py:929 +#: models.py:782 templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Parcels" msgstr "Parcelles" -#: forms.py:69 forms.py:185 forms.py:868 models.py:770 +#: forms.py:69 forms.py:185 forms.py:879 models.py:772 #: templates/ishtar/blocks/window_tables/parcels.html:5 #: templates/ishtar/dashboards/dashboard_operation.html:302 #: templates/ishtar/dashboards/dashboard_operation.html:315 @@ -31,18 +31,18 @@ msgstr "Parcelles" msgid "Town" msgstr "Commune" -#: forms.py:71 forms.py:411 forms.py:682 forms.py:1099 models.py:158 -#: models.py:587 models.py:768 +#: forms.py:71 forms.py:422 forms.py:693 forms.py:1111 models.py:158 +#: models.py:589 models.py:770 #: templates/ishtar/blocks/window_tables/parcels.html:6 msgid "Year" msgstr "Année" -#: forms.py:74 models.py:771 +#: forms.py:74 models.py:773 #: templates/ishtar/blocks/window_tables/parcels.html:7 msgid "Section" msgstr "Section" -#: forms.py:77 models.py:772 +#: forms.py:77 models.py:774 msgid "Parcel number" msgstr "Numéro de parcelle" @@ -74,8 +74,8 @@ msgstr "Il y a des parcelles identiques." msgid "Relation type" msgstr "Type de relation" -#: forms.py:345 ishtar_menu.py:30 models.py:237 models.py:488 models.py:513 -#: models.py:528 models.py:579 models.py:767 wizards.py:338 wizards.py:349 +#: forms.py:345 ishtar_menu.py:30 models.py:237 models.py:490 models.py:515 +#: models.py:530 models.py:581 models.py:769 wizards.py:338 wizards.py:349 #: templates/ishtar/sheet_operation.html:6 msgid "Operation" msgstr "Opération" @@ -84,27 +84,35 @@ msgstr "Opération" msgid ":" msgstr ": " -#: forms.py:395 +#: forms.py:372 forms.py:548 forms.py:1083 +msgid "You should select an operation." +msgstr "Vous devez sélectionner une opération." + +#: forms.py:376 +msgid "You should select a relation type." +msgstr "Vous devez sélectionner un type de relation." + +#: forms.py:406 msgid "Current relations" msgstr "Relations actuelles" -#: forms.py:397 +#: forms.py:408 msgid "Deleted relations" msgstr "Relations supprimées" -#: forms.py:401 templates/ishtar/sheet_operation.html:115 +#: forms.py:412 templates/ishtar/sheet_operation.html:115 msgid "Relations" msgstr "Relations" -#: forms.py:412 +#: forms.py:423 msgid "Numeric reference" msgstr "Identifiant numérique" -#: forms.py:417 forms.py:1109 +#: forms.py:428 forms.py:1121 msgid "Parcel (section/number)" msgstr "Parcelle (section/numéro)" -#: forms.py:420 forms.py:1112 models.py:489 +#: forms.py:431 forms.py:1124 models.py:491 #: templates/ishtar/dashboards/dashboard_operation.html:273 #: templates/ishtar/dashboards/dashboard_operation.html:286 #: templates/ishtar/dashboards/dashboard_operation.html:453 @@ -112,223 +120,215 @@ msgstr "Parcelle (section/numéro)" msgid "Department" msgstr "Département" -#: forms.py:421 forms.py:953 models.py:77 +#: forms.py:432 forms.py:964 models.py:77 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6 msgid "Name" msgstr "Nom" -#: forms.py:423 forms.py:604 forms.py:680 forms.py:1076 models.py:166 +#: forms.py:434 forms.py:615 forms.py:691 forms.py:1088 models.py:166 msgid "Operation type" msgstr "Type d'opération" -#: forms.py:425 +#: forms.py:436 msgid "Is open?" msgstr "Est ouvert ?" -#: forms.py:434 forms.py:710 models.py:155 +#: forms.py:445 forms.py:717 models.py:155 msgid "In charge" msgstr "Responsable" -#: forms.py:441 models.py:573 +#: forms.py:452 models.py:575 msgid "Scientist in charge" msgstr "Responsable scientifique" -#: forms.py:443 forms.py:606 forms.py:701 models.py:153 +#: forms.py:454 forms.py:617 forms.py:708 models.py:153 msgid "Operator" msgstr "Opérateur" -#: forms.py:450 forms.py:958 models.py:81 models.py:168 +#: forms.py:461 forms.py:969 models.py:81 models.py:168 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Remains" msgstr "Vestiges" -#: forms.py:451 forms.py:937 forms.py:955 models.py:79 models.py:173 +#: forms.py:462 forms.py:948 forms.py:966 models.py:79 models.py:173 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7 msgid "Periods" msgstr "Périodes" -#: forms.py:452 +#: forms.py:463 msgid "Started before" msgstr "Commencé avant" -#: forms.py:454 +#: forms.py:465 msgid "Started after" msgstr "Commencé après" -#: forms.py:456 +#: forms.py:467 msgid "Ended before" msgstr "Terminé avant" -#: forms.py:458 +#: forms.py:469 msgid "Ended after" msgstr "Terminé après" -#: forms.py:461 +#: forms.py:472 msgid "Search within relations" msgstr "Recherche parmi les relations" -#: forms.py:463 forms.py:752 models.py:219 +#: forms.py:474 forms.py:759 models.py:219 msgid "Comment" msgstr "Commentaire" -#: forms.py:464 +#: forms.py:475 msgid "Abstract (full text search)" msgstr "Résumé (recherche texte intégral)" -#: forms.py:465 forms.py:754 models.py:231 +#: forms.py:476 forms.py:761 models.py:231 msgid "Record quality" msgstr "Qualité d'enregistrement" -#: forms.py:466 forms.py:733 models.py:185 +#: forms.py:477 forms.py:740 models.py:185 msgid "Report processing" msgstr "Traitement du rapport" -#: forms.py:468 forms.py:757 models.py:226 +#: forms.py:479 forms.py:764 models.py:226 msgid "Virtual operation" msgstr "Opération virtuelle" -#: forms.py:476 forms.py:1116 +#: forms.py:481 forms.py:1009 +msgid "Archaelogical site" +msgstr "Entité Archéologique" + +#: forms.py:487 forms.py:1128 msgid "Created by" msgstr "Créé par" -#: forms.py:482 forms.py:1122 +#: forms.py:493 forms.py:1134 msgid "Modified by" msgstr "Modifié par" -#: forms.py:524 forms.py:1069 views.py:231 +#: forms.py:535 forms.py:1081 views.py:231 msgid "Operation search" msgstr "Recherche d'opérations" -#: forms.py:537 forms.py:1071 -msgid "You should select an operation." -msgstr "Vous devez sélectionner une opération." - -#: forms.py:568 +#: forms.py:579 msgid "Associated file" msgstr "Dossier associé" -#: forms.py:572 forms.py:816 models.py:584 wizards.py:76 +#: forms.py:583 forms.py:827 models.py:586 wizards.py:76 msgid "Archaelogical file" msgstr "Dossier" -#: forms.py:579 forms.py:581 models.py:233 +#: forms.py:590 forms.py:592 models.py:233 msgid "Abstract" msgstr "Résumé" -#: forms.py:584 +#: forms.py:595 msgid "months" msgstr "mois" -#: forms.py:584 +#: forms.py:595 msgid "years" msgstr "années" -#: forms.py:586 models.py:139 +#: forms.py:597 models.py:139 msgid "Creation date" msgstr "Date de création" -#: forms.py:587 +#: forms.py:598 msgid "Start of field work" msgstr "Début du travail de terrain" -#: forms.py:589 +#: forms.py:600 msgid "All" -msgstr "Tous" +msgstr "Tout" -#: forms.py:590 +#: forms.py:601 msgid "Preventive" msgstr "Préventif" -#: forms.py:591 +#: forms.py:602 msgid "Research" -msgstr "Programmée" +msgstr "Programmé" -#: forms.py:595 +#: forms.py:606 msgid "Slicing" msgstr "Découpage" -#: forms.py:598 +#: forms.py:609 msgid "Department detail" msgstr "Détail par département" -#: forms.py:600 +#: forms.py:611 msgid "Date get from" msgstr "Date obtenue depuis" -#: forms.py:602 +#: forms.py:613 msgid "Preventive/Research" msgstr "Préventif/Programmé" -#: forms.py:608 +#: forms.py:619 msgid "Date after" msgstr "Date après" -#: forms.py:610 +#: forms.py:621 msgid "Date before" msgstr "Date avant" -#: forms.py:612 +#: forms.py:623 msgid "With reports" msgstr "Avec un rapport" -#: forms.py:613 +#: forms.py:624 msgid "With finds" msgstr "Avec du mobilier" -#: forms.py:665 forms.py:1169 templates/ishtar/sheet_administrativeact.html:11 +#: forms.py:676 forms.py:1181 templates/ishtar/sheet_administrativeact.html:11 #: templates/ishtar/sheet_operation.html:32 msgid "General" msgstr "Général" -#: forms.py:678 models.py:218 +#: forms.py:689 models.py:218 msgid "Generic name" msgstr "Nom générique" -#: forms.py:687 forms.py:812 models.py:159 models.py:368 -msgid "Operation code" -msgstr "Code de l'opération" - -#: forms.py:691 +#: forms.py:698 msgid "Head scientist" msgstr "Responsable scientifique" -#: forms.py:707 models.py:217 +#: forms.py:714 models.py:217 msgid "Operator reference" msgstr "Référence de l'opérateur" -#: forms.py:719 +#: forms.py:726 msgid "Total surface (m2)" msgstr "Surface totale (m2)" -#: forms.py:724 -msgid "Associated archaeological sites" -msgstr "Entités archéologiques associées" - -#: forms.py:726 models.py:49 models.py:142 models.py:938 +#: forms.py:733 models.py:49 models.py:142 models.py:940 msgid "Start date" msgstr "Date de début" -#: forms.py:728 models.py:144 +#: forms.py:735 models.py:144 msgid "Excavation end date" msgstr "Date de fin de chantier" -#: forms.py:731 models.py:145 +#: forms.py:738 models.py:145 msgid "Report delivery date" msgstr "Date de livraison du rapport" -#: forms.py:782 +#: forms.py:791 msgid "" "If you want to set an excavation end date you have to provide a start date." msgstr "" "Avant de renseigner la date de fin de chantier, il est nécessaire de " "renseigner une date de début." -#: forms.py:787 +#: forms.py:796 msgid "The excavation end date cannot be before the start date." msgstr "" "La date de fin de chantier ne peut être antérieure à la date de début." -#: forms.py:802 +#: forms.py:813 #, python-format msgid "" "Operation code already exist for year: %(year)d - use a value bigger than " @@ -337,109 +337,109 @@ msgstr "" "Ce code d'opération existe déjà pour l'année %(year)d - utilisez une valeur " "plus grande que %(last_val)d" -#: forms.py:806 +#: forms.py:817 msgid "Bad operation code" msgstr "Mauvais code d'opération" -#: forms.py:838 +#: forms.py:823 models.py:159 models.py:368 +msgid "Operation code" +msgstr "Code de l'opération" + +#: forms.py:849 msgid "Preventive informations - excavation" msgstr "Information archéologie préventive - fouille" -#: forms.py:839 models.py:171 +#: forms.py:850 models.py:171 #: templates/ishtar/dashboards/dashboard_operation.html:495 msgid "Cost (euros)" msgstr "Coût (euros)" -#: forms.py:840 models.py:176 +#: forms.py:851 models.py:176 msgid "Scheduled man-days" msgstr "Jours-hommes prévus" -#: forms.py:842 models.py:179 +#: forms.py:853 models.py:179 msgid "Optional man-days" msgstr "Jours-hommes optionnels" -#: forms.py:844 models.py:182 +#: forms.py:855 models.py:182 msgid "Effective man-days" msgstr "Jours-hommes effectifs" -#: forms.py:854 +#: forms.py:865 msgid "Preventive informations - diagnostic" msgstr "Information archéologie préventive - diagnostic" -#: forms.py:857 models.py:201 +#: forms.py:868 models.py:201 msgid "Prescription on zoning" msgstr "Prescription sur zonage" -#: forms.py:859 models.py:204 +#: forms.py:870 models.py:204 msgid "Prescription on large area" msgstr "Prescription sur une vaste surface" -#: forms.py:862 models.py:206 +#: forms.py:873 models.py:206 msgid "Prescription on geoarchaeological context" msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:866 forms.py:888 models.py:170 models.py:597 +#: forms.py:877 forms.py:899 models.py:170 models.py:599 msgid "Towns" msgstr "Communes" -#: forms.py:895 models.py:779 models.py:936 +#: forms.py:906 models.py:781 models.py:938 msgid "Parcel" msgstr "Parcelle" -#: forms.py:922 models.py:43 +#: forms.py:933 models.py:43 msgid "Remain types" msgstr "Types de vestige" -#: forms.py:926 models.py:42 +#: forms.py:937 models.py:42 msgid "Remain type" msgstr "Type de vestige" -#: forms.py:941 +#: forms.py:952 msgid "Period" msgstr "Période" -#: forms.py:952 models.py:76 +#: forms.py:963 models.py:76 msgid "Reference" msgstr "Référence" -#: forms.py:977 +#: forms.py:988 msgid "This reference already exists." msgstr "Cette référence existe déjà." -#: forms.py:994 models.py:85 +#: forms.py:1005 models.py:85 msgid "Archaeological site" msgstr "Entité archéologique" -#: forms.py:998 -msgid "Archaelogical site" -msgstr "Entité Archéologique" - -#: forms.py:1008 models.py:86 models.py:223 +#: forms.py:1020 models.py:86 models.py:223 #: templates/ishtar/sheet_operation.html:126 msgid "Archaeological sites" msgstr "Entités archéologiques" -#: forms.py:1012 +#: forms.py:1024 msgid "Associated archaelogical sites" msgstr "Entités archéologiques associées" -#: forms.py:1018 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 +#: forms.py:1030 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 msgid "Search" msgstr "Recherche" -#: forms.py:1023 +#: forms.py:1035 msgid "Would you like to close this operation?" msgstr "Voulez-vous clore cette opération ?" -#: forms.py:1028 +#: forms.py:1040 msgid "Would you like to delete this operation?" msgstr "Voulez-vous supprimer cette opération ?" -#: forms.py:1037 forms.py:1100 models.py:515 models.py:564 +#: forms.py:1049 forms.py:1112 models.py:517 models.py:566 msgid "Index" msgstr "Index" -#: forms.py:1063 +#: forms.py:1075 #, python-format msgid "" "Index already exists for operation: %(operation)s - use a value bigger than " @@ -448,68 +448,68 @@ msgstr "" "Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur " "plus grande que %(last_val)d" -#: forms.py:1075 +#: forms.py:1087 msgid "Operation's town" msgstr "Commune de l'opération" -#: forms.py:1078 +#: forms.py:1090 msgid "Operation's year" msgstr "Année de l'opération" -#: forms.py:1089 +#: forms.py:1101 msgid "Documentation search" msgstr "Recherche de document" -#: forms.py:1091 +#: forms.py:1103 msgid "You should select a document." msgstr "Vous devez sélectionner un document." -#: forms.py:1106 forms.py:1172 models.py:539 models.py:558 +#: forms.py:1118 forms.py:1184 models.py:541 models.py:560 msgid "Act type" msgstr "Type d'acte" -#: forms.py:1107 forms.py:1260 +#: forms.py:1119 forms.py:1272 msgid "Indexed?" msgstr "Indexé ?" -#: forms.py:1113 forms.py:1177 models.py:588 +#: forms.py:1125 forms.py:1189 models.py:590 #: templates/ishtar/blocks/window_tables/administrativacts.html:8 msgid "Object" msgstr "Objet" -#: forms.py:1149 views.py:373 +#: forms.py:1161 views.py:373 msgid "Administrative act search" msgstr "Recherche d'actes administratifs" -#: forms.py:1164 forms.py:1218 forms.py:1285 +#: forms.py:1176 forms.py:1230 forms.py:1297 msgid "You should select an administrative act." msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1180 models.py:585 +#: forms.py:1192 models.py:587 msgid "Signature date" msgstr "Date de signature" -#: forms.py:1195 +#: forms.py:1207 msgid "Would you like to delete this administrative act?" msgstr "Voulez-vous supprimer cet acte administratif ?" -#: forms.py:1200 +#: forms.py:1212 msgid "Template" msgstr "Patron" -#: forms.py:1224 forms.py:1228 +#: forms.py:1236 forms.py:1240 msgid "This document is not intended for this type of act." msgstr "Ce document n'est pas destiné à ce type d'acte." -#: forms.py:1246 +#: forms.py:1258 msgid "Doc generation" msgstr "Génération de document" -#: forms.py:1248 +#: forms.py:1260 msgid "Generate the associated doc?" msgstr "Générer le document associé ?" -#: forms.py:1269 ishtar_menu.py:121 views.py:407 +#: forms.py:1281 ishtar_menu.py:121 views.py:407 msgctxt "admin act register" msgid "Register" msgstr "Registre" @@ -530,7 +530,7 @@ msgstr "Clôture" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:58 models.py:604 +#: ishtar_menu.py:58 models.py:606 #: templates/ishtar/sheet_administrativeact.html:6 msgid "Administrative act" msgstr "Acte administratif" @@ -564,11 +564,11 @@ msgstr "Informations générales" msgid "Operations" msgstr "Opérations" -#: models.py:48 models.py:64 models.py:1400 +#: models.py:48 models.py:64 models.py:1402 msgid "Order" msgstr "Ordre" -#: models.py:50 models.py:939 +#: models.py:50 models.py:941 msgid "End date" msgstr "Date de fin" @@ -632,7 +632,7 @@ msgstr "Date de clôture" msgid "In charge scientist" msgstr "Responsable scientifique" -#: models.py:163 models.py:763 +#: models.py:163 models.py:765 msgid "File" msgstr "Dossier" @@ -683,7 +683,7 @@ msgstr "OPE" msgid "Intercommunal" msgstr "Intercommunal" -#: models.py:351 models.py:527 +#: models.py:351 models.py:529 msgid "Archaeological file" msgstr "Dossier archéologique" @@ -695,189 +695,189 @@ msgstr "Code patriarche" msgid "This operation code already exists for this year" msgstr "Ce code d'opération existe déjà pour cette année." -#: models.py:459 +#: models.py:461 msgid "Inverse relation" msgstr "Relation inverse" -#: models.py:463 +#: models.py:465 msgid "Operation relation type" msgstr "Type de relation entre opérations" -#: models.py:464 +#: models.py:466 msgid "Operation relation types" msgstr "Types de relation entre opérations" -#: models.py:477 +#: models.py:479 msgid "Operation record relation" msgstr "Relation entre opérations" -#: models.py:478 +#: models.py:480 msgid "Operation record relations" msgstr "Relations entre opérations" -#: models.py:499 +#: models.py:501 msgid "Operation documentation" msgstr "Documentation d'une opération" -#: models.py:500 +#: models.py:502 msgid "Operation documentations" msgstr "Documentations des opérations" -#: models.py:503 +#: models.py:505 msgid "Can view all Operation sources" msgstr "Peut voir toutes les Documentations d'opération" -#: models.py:505 +#: models.py:507 msgid "Can view own Operation source" msgstr "Peut voir sa propre Documentation d'opération" -#: models.py:507 +#: models.py:509 msgid "Can add own Operation source" msgstr "Peut ajouter sa propre Documentation d'opération" -#: models.py:509 +#: models.py:511 msgid "Can change own Operation source" msgstr "Peut modifier sa propre Documentation d'opération" -#: models.py:511 +#: models.py:513 msgid "Can delete own Operation source" msgstr "Peut supprimer sa propre Documentation d'opération" -#: models.py:530 +#: models.py:532 msgid "Intended to" msgstr "Destiné à" -#: models.py:532 +#: models.py:534 msgid "Code" msgstr "Code" -#: models.py:535 +#: models.py:537 msgid "Associated template" msgstr "Patron associé" -#: models.py:536 +#: models.py:538 msgid "Indexed" msgstr "Indexé" -#: models.py:540 +#: models.py:542 msgid "Act types" msgstr "Types d'acte" -#: models.py:562 +#: models.py:564 msgid "Person in charge of the operation" msgstr "Responsable d'opération" -#: models.py:568 +#: models.py:570 msgid "Archaeological preventive operator" msgstr "Opérateur d'archéologie préventive" -#: models.py:576 +#: models.py:578 msgid "Signatory" msgstr "Signataire" -#: models.py:594 +#: models.py:596 msgid "Departments" msgstr "Départements" -#: models.py:595 +#: models.py:597 msgid "Cached values get from associated departments" msgstr "Valeur en cache des départements associés" -#: models.py:598 +#: models.py:600 msgid "Cached values get from associated towns" msgstr "Valeur en cache des communes associées" -#: models.py:605 templates/ishtar/sheet_operation.html:134 +#: models.py:607 templates/ishtar/sheet_operation.html:134 msgid "Administrative acts" msgstr "Actes administratifs" -#: models.py:608 +#: models.py:610 msgid "Can view all Administrative acts" msgstr "Peut voir tous les Actes administratifs" -#: models.py:610 +#: models.py:612 msgid "Can view own Administrative act" msgstr "Peut voir son propre Acte administratif" -#: models.py:612 +#: models.py:614 msgid "Can add own Administrative act" msgstr "Peut ajouter son propre Acte administratif" -#: models.py:614 +#: models.py:616 msgid "Can change own Administrative act" msgstr "Peut modifier son propre Acte administratif" -#: models.py:616 +#: models.py:618 msgid "Can delete own Administrative act" msgstr "Peut supprimer son propre Acte administratif" -#: models.py:625 +#: models.py:627 #: templates/ishtar/blocks/window_tables/administrativacts.html:5 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:5 msgid "Ref." msgstr "Réf." -#: models.py:708 +#: models.py:710 msgid "This index already exists for this year" msgstr "Cet index existe déjà pour cette année." -#: models.py:774 +#: models.py:776 msgid "External ID" msgstr "ID externe" -#: models.py:776 +#: models.py:778 msgid "Address - Locality" msgstr "Adresse - Lieu-dit" -#: models.py:934 +#: models.py:936 msgid "Owner" msgstr "Propriétaire" -#: models.py:942 +#: models.py:944 msgid "Parcel owner" msgstr "Propriétaire de parcelle" -#: models.py:943 +#: models.py:945 msgid "Parcel owners" msgstr "Propriétaires de parcelle" -#: models.py:969 +#: models.py:971 msgid "Recorded" msgstr "Enregistré" -#: models.py:970 +#: models.py:972 msgid "Effective" msgstr "Effectif" -#: models.py:971 +#: models.py:973 msgid "Active" msgstr "Actif" -#: models.py:972 +#: models.py:974 msgid "Field completed" msgstr "Terrain achevé" -#: models.py:973 +#: models.py:975 msgid "Associated report" msgstr "Rapport associé" -#: models.py:974 +#: models.py:976 msgid "Closed" msgstr "Clos" -#: models.py:975 +#: models.py:977 msgid "Documented and closed" msgstr "Documenté et clos" -#: models.py:1401 +#: models.py:1403 msgid "Is preventive" msgstr "Préventif" -#: models.py:1404 +#: models.py:1406 msgid "Operation type old" msgstr "Type d'opération - ancien" -#: models.py:1405 +#: models.py:1407 msgid "Operation types old" msgstr "Types d'opération - ancien" @@ -1131,10 +1131,18 @@ msgstr "Documents de cette opération" msgid "Context records" msgstr "Unités d'Enregistrement" -#: templates/ishtar/sheet_operation.html:155 +#: templates/ishtar/sheet_operation.html:148 +msgid "Documents from associated context records" +msgstr "Documents des Unités d'Enregistrement associées" + +#: templates/ishtar/sheet_operation.html:153 msgid "Finds" msgstr "Mobilier" +#: templates/ishtar/sheet_operation.html:158 +msgid "Documents from associated finds" +msgstr "Documents du mobilier associé" + #: templates/ishtar/sheet_operationsource.html:6 msgid "Operation source" msgstr "Documentation associée à l'opération" diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po index 331e2a61e..94ae37c05 100644 --- a/translations/fr/archaeological_warehouse.po +++ b/translations/fr/archaeological_warehouse.po @@ -83,7 +83,7 @@ msgstr "Vous devez sélectionner un contenant." msgid "Add a new container" msgstr "Ajouter un nouveau contenant." -#: forms.py:132 ishtar_menu.py:33 views.py:94 +#: forms.py:132 views.py:94 msgid "Packaging" msgstr "Conditionnement" @@ -99,10 +99,6 @@ msgstr "Date" msgid "Packaged finds" msgstr "Mobilier conditionné" -#: ishtar_menu.py:30 -msgid "Find" -msgstr "Mobilier" - #: models.py:31 msgid "Warehouse types" msgstr "Types de dépôts" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index c7387396f..4177bafdd 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -10,7 +10,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2016-02-25 07:04-0500\n" +"PO-Revision-Date: 2016-03-16 03:21-0400\n" "Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n" "Language-Team: \n" "Language: fr\n" @@ -217,7 +217,7 @@ msgstr "" #: forms_common.py:66 forms_common.py:648 ishtar_menu.py:42 models.py:2039 #: models.py:2168 models.py:2222 templates/ishtar/sheet_person.html:6 msgid "Person" -msgstr "Individu" +msgstr "Personne" #: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1961 #: templates/ishtar/sheet_organization.html:6 @@ -290,7 +290,7 @@ msgstr "Prénom" #: forms_common.py:243 views.py:88 msgid "Person search" -msgstr "Recherche d'individus" +msgstr "Recherche de personnes" #: forms_common.py:254 msgid "Identity" @@ -313,7 +313,7 @@ msgstr "Organisation actuelle" #: forms_common.py:325 forms_common.py:355 forms_common.py:359 models.py:2009 msgid "Person type" -msgstr "Type d'individu" +msgstr "Type de personne" #: forms_common.py:370 forms_common.py:375 msgid "Account" @@ -444,7 +444,7 @@ msgstr "Administration" msgid "Account management" msgstr "Gestion des comptes" -#: ishtar_menu.py:34 models.py:853 views.py:1115 +#: ishtar_menu.py:34 models.py:853 views.py:1120 msgid "Global variables" msgstr "Variables globales" @@ -476,11 +476,11 @@ msgstr "Suppression" msgid "Imports" msgstr "Imports" -#: ishtar_menu.py:99 views.py:1123 +#: ishtar_menu.py:99 views.py:1128 msgid "New import" msgstr "Nouvel import" -#: ishtar_menu.py:103 views.py:1137 +#: ishtar_menu.py:103 views.py:1142 msgid "Current imports" msgstr "Imports en cours" @@ -666,15 +666,15 @@ msgstr "Parcelles" msgid "Operation source" msgstr "Documentation de l'opération" -#: models.py:1259 views.py:940 views.py:991 +#: models.py:1259 views.py:945 views.py:996 msgid "Archaeological files" msgstr "Dossiers archéologiques" -#: models.py:1261 views.py:943 views.py:999 +#: models.py:1261 views.py:948 views.py:1004 msgid "Context records" msgstr "Unités d'Enregistrement" -#: models.py:1263 views.py:945 views.py:1002 +#: models.py:1263 views.py:950 views.py:1007 msgid "Finds" msgstr "Mobilier" @@ -1185,34 +1185,34 @@ msgstr "Modification d'une organisation" msgid "Organization deletion" msgstr "Suppression d'une organisation" -#: views.py:637 templates/base.html:80 +#: views.py:642 templates/base.html:80 #: templates/ishtar/sheet_organization.html:35 #: templatetags/link_to_window.py:16 msgid "Details" msgstr "Détails" -#: views.py:868 views.py:922 +#: views.py:873 views.py:927 msgid "Operation not permitted." msgstr "Opération non permise." -#: views.py:870 +#: views.py:875 #, python-format msgid "New %s" msgstr "Nouveau %s" -#: views.py:941 views.py:995 +#: views.py:946 views.py:1000 msgid "Operations" msgstr "Opérations" -#: views.py:1184 templates/ishtar/import_list.html:43 +#: views.py:1189 templates/ishtar/import_list.html:43 msgid "Link unmatched items" msgstr "Associer les éléments non rapprochés" -#: views.py:1199 +#: views.py:1204 msgid "Delete import" msgstr "Suppression de l'import" -#: views.py:1258 views.py:1274 +#: views.py:1263 views.py:1279 msgid "Corporation manager" msgstr "Représentant de la personne morale" @@ -1220,11 +1220,11 @@ msgstr "Représentant de la personne morale" msgid "Search..." msgstr "Recherche..." -#: widgets.py:602 templatetags/window_tables.py:80 +#: widgets.py:602 templatetags/window_tables.py:68 msgid "No results" msgstr "Pas de résultats" -#: widgets.py:603 templatetags/window_tables.py:81 +#: widgets.py:603 templatetags/window_tables.py:69 msgid "Loading..." msgstr "Chargement..." @@ -1595,7 +1595,11 @@ msgstr ", " msgid "." msgstr "." -#: templates/blocks/form_flex_snippet.html:10 +#: templates/blocks/form_flex_snippet.html:12 +msgid "Show / hide advanced search" +msgstr "Afficher/cacher la recherche avancée" + +#: templates/blocks/form_flex_snippet.html:18 #: templates/blocks/form_snippet.html:9 msgid "Help" msgstr "Aide" diff --git a/xhtml2odt/xsl/document-content/tables.xsl b/xhtml2odt/xsl/document-content/tables.xsl index a063f6bfd..f17354455 100644 --- a/xhtml2odt/xsl/document-content/tables.xsl +++ b/xhtml2odt/xsl/document-content/tables.xsl @@ -57,16 +57,6 @@ </xsl:template> <xsl:template match="h:table"> - <table:table table:style-name="table-default"> - <table:table-column> - <xsl:attribute name="table:number-columns-repeated"> - <xsl:value-of select="count(descendant::h:tr[1]/h:th|descendant::h:tr[1]/h:td)"/> - </xsl:attribute> - </table:table-column> - <!--<xsl:attribute name="table:name"></xsl:attribute>--> - <xsl:apply-templates/> - <xsl:apply-templates select="h:tfoot/*"/> - </table:table> <xsl:if test="h:caption"> <xsl:variable name="number"> <xsl:call-template name="table.number"/> @@ -80,6 +70,16 @@ <xsl:text>: </xsl:text><xsl:value-of select="h:caption"/> </text:p> </xsl:if> + <table:table table:style-name="table-default"> + <table:table-column> + <xsl:attribute name="table:number-columns-repeated"> + <xsl:value-of select="count(descendant::h:tr[1]/h:th|descendant::h:tr[1]/h:td)"/> + </xsl:attribute> + </table:table-column> + <!--<xsl:attribute name="table:name"></xsl:attribute>--> + <xsl:apply-templates/> + <xsl:apply-templates select="h:tfoot/*"/> + </table:table> </xsl:template> <xsl:template match="h:table/h:caption"/> |
