From ac7b6838610d19250b8b67f465636fadad760565 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 2 Jan 2018 16:27:36 +0100 Subject: Custom form: context records forms --- ishtar_common/forms_common.py | 1 + 1 file changed, 1 insertion(+) (limited to 'ishtar_common') diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 32c91b683..7f4d94449 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -731,6 +731,7 @@ class TownFormSet(FormSet): return self.check_duplicate(('town',), _("There are identical towns.")) + TownFormset = formset_factory(TownForm, can_delete=True, formset=TownFormSet) TownFormset.form_label = _("Towns") TownFormset.form_admin_name = _(u"Towns") -- cgit v1.2.3 From 84bd95c088a4e1005edfd4b3dab3d6b07f80cadb Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 2 Jan 2018 18:23:45 +0100 Subject: Custom form: change label --- ishtar_common/models.py | 3 +++ 1 file changed, 3 insertions(+) (limited to 'ishtar_common') diff --git a/ishtar_common/models.py b/ishtar_common/models.py index b0751f661..626770011 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1651,6 +1651,9 @@ class CustomForm(models.Model): verbose_name_plural = _(u"Custom forms") ordering = ['name', 'form'] + def __unicode__(self): + return u"{} - {}".format(self.name, self.form) + def users_lbl(self): users = [unicode(user) for user in self.users.all()] return " ; ".join(users) -- cgit v1.2.3 From 29ba4a4051b2b1cb2177e89a995330f2784bf7ff Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 4 Jan 2018 11:55:03 +0100 Subject: Custom form: generic source --- archaeological_files/forms.py | 2 +- archaeological_operations/forms.py | 3 --- ishtar_common/forms_common.py | 3 +++ 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'ishtar_common') diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 5085455d8..7c254f936 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -528,7 +528,7 @@ class AdministrativeActFileModifyFormSelection( class AdministrativeActFileForm(AdministrativeActOpeForm): - form_admin_name = _(u"Archaeological files - Administrative act - General") + form_admin_name = _(u"Archaeological file - Administrative act - General") form_slug = "file-adminact-general" act_type = forms.ChoiceField(label=_(u"Act type"), choices=[]) diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 215ade6ca..b85b5e937 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -1263,9 +1263,6 @@ class OperationDeletionForm(FinalForm): class OperationSourceForm(SourceForm): - form_admin_name = _("Operation source - General") - form_slug = "operation-source-relations" - pk = forms.IntegerField(required=False, widget=forms.HiddenInput) index = forms.IntegerField(label=_(u"Index")) hidden_operation_id = forms.IntegerField(label="", diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index 7f4d94449..dadeefee0 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -865,6 +865,9 @@ class MergeOrganizationForm(MergeForm): ###################### class SourceForm(CustomForm, ManageOldType, forms.Form): form_label = _(u"Documentation informations") + form_admin_name = _("Source - General") + form_slug = "source-general" + file_upload = True associated_models = {'source_type': models.SourceType} title = forms.CharField(label=_(u"Title"), -- cgit v1.2.3 From f458f61e9cc55a188ac87cfab5a1bb90a31b702f Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 4 Jan 2018 12:16:14 +0100 Subject: Custom form: warehouse forms --- archaeological_warehouse/forms.py | 18 +++++++++++------- ishtar_common/models.py | 4 +++- 2 files changed, 14 insertions(+), 8 deletions(-) (limited to 'ishtar_common') diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py index f020864ff..f98adc33a 100644 --- a/archaeological_warehouse/forms.py +++ b/archaeological_warehouse/forms.py @@ -30,7 +30,8 @@ from archaeological_finds.models import TreatmentType, FindBasket import models from ishtar_common import widgets from ishtar_common.forms import name_validator, reverse_lazy, \ - get_form_selection, TableSelect, ManageOldType, FinalForm, FormSet + get_form_selection, TableSelect, ManageOldType, FinalForm, FormSet, \ + CustomForm, FieldType from archaeological_finds.forms import FindMultipleFormSelection, \ SelectFindBasketForm @@ -67,9 +68,12 @@ class DivisionFormSet(FormSet): return self.check_duplicate(('division',), _("There are identical divisions.")) + SelectedDivisionFormset = formset_factory( SelectedDivisionForm, can_delete=True, formset=DivisionFormSet) SelectedDivisionFormset.form_label = _(u"Divisions") +SelectedDivisionFormset.form_admin_name = _(u"Warehouse - 020 - Divisions") +SelectedDivisionFormset.form_slug = "warehouse-020-divisions" class WarehouseSelect(TableSelect): @@ -97,8 +101,10 @@ class WarehouseFormSelection(forms.Form): validators=[valid_id(models.Warehouse)]) -class WarehouseForm(ManageOldType, forms.Form): +class WarehouseForm(CustomForm, ManageOldType, forms.Form): form_label = _(u"Warehouse") + form_admin_name = _(u"Warehouse - 010 - General") + form_slug = "warehouse-010-general" associated_models = {'warehouse_type': models.WarehouseType, 'person_in_charge': Person} @@ -127,16 +133,14 @@ class WarehouseForm(ManageOldType, forms.Form): phone = forms.CharField(label=_(u"Phone"), max_length=18, required=False) mobile_phone = forms.CharField(label=_(u"Mobile phone"), max_length=18, required=False) + TYPES = [ + FieldType('warehouse_type', models.WarehouseType) + ] def __init__(self, *args, **kwargs): if 'limits' in kwargs: kwargs.pop('limits') super(WarehouseForm, self).__init__(*args, **kwargs) - self.fields['warehouse_type'].choices = \ - models.WarehouseType.get_types( - initial=self.init_data.get('warehouse_type')) - self.fields['warehouse_type'].help_text = \ - models.WarehouseType.get_help() def save(self, user): dct = self.cleaned_data diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 626770011..4db445c41 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -23,6 +23,7 @@ Models description from cStringIO import StringIO import copy import datetime +import inspect from PIL import Image import logging import os @@ -1686,7 +1687,8 @@ class CustomForm(models.Model): # not very clean... but do not treat inappropriate items continue form = getattr(app_form, form) - if not issubclass(form, CustomForm) \ + if not inspect.isclass(form) \ + or not issubclass(form, CustomForm) \ or not getattr(form, 'form_slug', None): continue cls._register[form.form_slug] = form -- cgit v1.2.3 From c3e655c6a8efd1a79c8d066bc95fb5bd56886fb5 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 4 Jan 2018 13:16:24 +0100 Subject: Custom form: archaeological files forms --- archaeological_files/forms.py | 15 ++++++++++-- archaeological_files/views.py | 7 +++--- archaeological_files_pdl/forms.py | 50 ++++++++++++++++++++++++++------------ archaeological_files_pdl/views.py | 5 ++-- archaeological_operations/forms.py | 4 --- ishtar_common/admin.py | 3 ++- 6 files changed, 54 insertions(+), 30 deletions(-) (limited to 'ishtar_common') diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 7c254f936..cf8b8ea4b 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -25,6 +25,7 @@ import datetime from django import forms from django.conf import settings from django.core import validators +from django.forms.formsets import formset_factory from django.utils.translation import ugettext_lazy as _ from django.utils.safestring import mark_safe @@ -34,12 +35,13 @@ from ishtar_common.models import Person, Organization, \ from archaeological_operations.models import ActType, AdministrativeAct, \ OperationType import models + from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect, \ ManageOldType, CustomForm, FieldType from ishtar_common.forms_common import get_town_field from archaeological_operations.forms import AdministrativeActOpeForm, \ AdministrativeActOpeFormSelection, \ - ParcelField, SLICING, AdministrativeActModifForm + ParcelField, SLICING, AdministrativeActModifForm, ParcelForm, ParcelFormSet from ishtar_common import widgets @@ -271,6 +273,13 @@ class FileFormGeneralRO(FileFormGeneral): return cleaned_data +ParcelFormset = formset_factory(ParcelForm, can_delete=True, + formset=ParcelFormSet) +ParcelFormset.form_label = _(u"Parcels") +ParcelFormset.form_admin_name = _("Archaeological file - 020 - Parcel") +ParcelFormset.form_slug = "source-general" + + class FileFormPreventive(ManageOldType, forms.Form): form_label = _(u"Preventive informations") associated_models = {'general_contractor': Person, @@ -329,8 +338,10 @@ class FileFormPreventive(ManageOldType, forms.Form): self.fields['permit_type'].help_text = models.PermitType.get_help() -class FileFormResearch(ManageOldType, forms.Form): +class FileFormResearch(CustomForm, ManageOldType, forms.Form): form_label = _("Research archaeology") + form_admin_name = _("Archaeological file - 045 - Research - General") + form_slug = "file-045-research-general" base_model = 'department' associated_models = {'scientist': Person, 'requested_operation_type': OperationType, diff --git a/archaeological_files/views.py b/archaeological_files/views.py index 0c0dac3f3..86fa83ee4 100644 --- a/archaeological_files/views.py +++ b/archaeological_files/views.py @@ -37,8 +37,7 @@ from archaeological_operations.wizards import AdministrativeActDeletionWizard, \ from wizards import * from ishtar_common.forms_common import TownFormset -from archaeological_operations.forms import ParcelFormSet, \ - FinalAdministrativeActDeleteForm +from archaeological_operations.forms import FinalAdministrativeActDeleteForm from ishtar_common.forms import ClosingDateFormSelection from forms import * @@ -108,7 +107,7 @@ file_search_wizard = SearchWizard.as_view( file_creation_wizard = FileWizard.as_view( [('general-file_creation', FileFormGeneral), ('towns-file_creation', TownFormset), - ('parcels-file_creation', ParcelFormSet), + ('parcels-file_creation', ParcelFormset), ('preventive-file_creation', FileFormPreventive), ('research-file_creation', FileFormResearch), ('final-file_creation', FinalForm)], @@ -127,7 +126,7 @@ file_modification_wizard = FileModificationWizard.as_view( [('selec-file_modification', FileFormSelection), ('general-file_modification', FileFormGeneralRO), ('towns-file_modification', TownFormset), - ('parcels-file_modification', ParcelFormSet), + ('parcels-file_modification', ParcelFormset), ('preventive-file_modification', FileFormPreventive), ('research-file_modification', FileFormResearch), ('final-file_modification', FinalForm)], diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index e5fbb4a96..e0a8f119b 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -29,13 +29,16 @@ from ishtar_common.models import Person, Town, Department, valid_id, \ organization_type_pk_lazy from archaeological_files import models -from ishtar_common.forms import get_now, reverse_lazy, ManageOldType +from ishtar_common.forms import get_now, reverse_lazy, ManageOldType, \ + CustomForm, FieldType from ishtar_common import widgets -class FileFormGeneral(ManageOldType, forms.Form): +class FileFormGeneral(CustomForm, ManageOldType, forms.Form): form_label = _("General") + form_admin_name = _(u"Archaeological file - 010 - General") + form_slug = "file-010-general" associated_models = {'file_type': models.FileType} file_type = forms.ChoiceField(label=_("File type"), choices=[]) year = forms.IntegerField(label=_("Year"), @@ -47,11 +50,9 @@ class FileFormGeneral(ManageOldType, forms.Form): reception_date = forms.DateField( label=_(u"Reception date"), initial=get_now, widget=widgets.JQueryDate) - def __init__(self, *args, **kwargs): - super(FileFormGeneral, self).__init__(*args, **kwargs) - self.fields['file_type'].choices = models.FileType.get_types( - initial=self.init_data.get('file_type')) - self.fields['file_type'].help_text = models.FileType.get_help() + TYPES = [ + FieldType('file_type', models.FileType), + ] def clean_reception_date(self): value = self.cleaned_data.get('reception_date', None) @@ -61,27 +62,31 @@ class FileFormGeneral(ManageOldType, forms.Form): return value -class FileFormPreventiveType(ManageOldType, forms.Form): +class FileFormPreventiveType(CustomForm, ManageOldType, forms.Form): form_label = u"Saisine" + form_admin_name = _(u"Archaeological file - 013 - Preventive - Saisine") + form_slug = "file-013-preventivesaisine" associated_models = {'saisine_type': models.SaisineType, 'permit_type': models.PermitType} permit_type = forms.ChoiceField(label=_(u"Permit type"), required=False, choices=[]) saisine_type = forms.ChoiceField(label=_(u"Saisine type"), choices=[]) + TYPES = [ + FieldType('saisine_type', models.SaisineType), + ] def __init__(self, *args, **kwargs): super(FileFormPreventiveType, self).__init__(*args, **kwargs) - self.fields['saisine_type'].choices = models.SaisineType.get_types( - initial=self.init_data.get('saisine_type')) - self.fields['saisine_type'].help_text = models.SaisineType.get_help() self.fields['permit_type'].choices = models.PermitType.get_types( default='NP', initial=self.init_data.get('permit_type')) self.fields['permit_type'].help_text = models.PermitType.get_help() -class FileFormPlanning(forms.Form): +class FileFormPlanning(CustomForm, forms.Form): form_label = _(u"Planning") + form_admin_name = _(u"Archaeological file - 017 - Preventive - Planning") + form_slug = "file-017-preventiveplanning" base_models = ['town', 'department'] associated_models = {'town': Town, 'department': Department} name = forms.CharField(label=_(u"Planning name"), required=False, @@ -112,8 +117,10 @@ class FileFormPlanning(forms.Form): validators.MaxValueValidator(999999999)]) -class FileFormResearchAddress(forms.Form): +class FileFormResearchAddress(CustomForm, forms.Form): form_label = _(u"Address") + form_admin_name = _(u"Archaeological file - 015 - Research - Address") + form_slug = "file-015-researchplanning" base_models = ['town', 'department'] associated_models = {'town': Town, 'department': Department} name = forms.CharField(label=_(u"Project name"), required=False, @@ -228,8 +235,11 @@ class PersonOrgaForm(forms.Form): validators=[valid_id(models.Organization)]) -class FileFormGeneralContractor(PersonOrgaForm): +class FileFormGeneralContractor(CustomForm, PersonOrgaForm): form_label = _(u"General contractor") + form_admin_name = _("Archaeological file - 030 - General contrator") + form_slug = "file-030-generalcontractor" + associated_models = {'general_contractor': models.Person, 'corporation_general_contractor': models.Organization} corporation_general_contractor = forms.IntegerField( @@ -323,6 +333,10 @@ class FileFormGeneralContractor(PersonOrgaForm): if status not in ('natural', 'corporation'): status = DEFAULT_STATUS + user = None + if 'user' in kwargs: + user = kwargs.pop('user') + super(PersonOrgaForm, self).__init__(*args, **kwargs) # distinct widget for natural and corporation @@ -344,8 +358,10 @@ class FileFormGeneralContractor(PersonOrgaForm): self.fields.pop(self.ORGA_FIELD) -class FileFormPlanningService(forms.Form): +class FileFormPlanningService(CustomForm, forms.Form): form_label = _(u"Planning service") + form_admin_name = _("Archaeological file - 040 - Planning service") + form_slug = "file-040-planningservice" associated_models = {'responsible_town_planning_service': models.Person, 'planning_service': models.Organization} @@ -387,8 +403,10 @@ class FileFormPlanningService(forms.Form): ) -class FileFormInstruction(forms.Form): +class FileFormInstruction(CustomForm, forms.Form): form_label = u"Instruction SRA" + form_admin_name = _("Archaeological file - 050 - Instruction") + form_slug = "file-050-instruction" associated_models = {'in_charge': models.Person, 'related_file': models.File} in_charge = forms.IntegerField( diff --git a/archaeological_files_pdl/views.py b/archaeological_files_pdl/views.py index d03fd958d..cf412efb6 100644 --- a/archaeological_files_pdl/views.py +++ b/archaeological_files_pdl/views.py @@ -27,7 +27,6 @@ from ishtar_common.views import OrganizationPersonCreate, \ from archaeological_files_pdl import forms from archaeological_files import forms as ref_forms -from archaeological_operations.forms import ParcelFormSet from archaeological_files import models @@ -41,7 +40,7 @@ file_creation_wizard = FileWizard.as_view([ ('preventivetype-file_creation', forms.FileFormPreventiveType), ('preventiveplanning-file_creation', forms.FileFormPlanning), ('researchaddress-file_creation', forms.FileFormResearchAddress), - ('parcelspdl-file_creation', ParcelFormSet), + ('parcelspdl-file_creation', ref_forms.ParcelFormset), ('generalcontractor-file_creation', forms.FileFormGeneralContractor), ('planningservice-file_creation', forms.FileFormPlanningService), ('research-file_creation', ref_forms.FileFormResearch), @@ -68,7 +67,7 @@ file_modification_wizard = FileModificationWizard.as_view([ ('preventivetype-file_modification', forms.FileFormPreventiveType), ('preventiveplanning-file_modification', forms.FileFormPlanning), ('researchaddress-file_modification', forms.FileFormResearchAddress), - ('parcelspdl-file_modification', ParcelFormSet), + ('parcelspdl-file_modification', ref_forms.ParcelFormset), ('generalcontractor-file_modification', forms.FileFormGeneralContractor), ('planningservice-file_modification', forms.FileFormPlanningService), ('research-file_modification', ref_forms.FileFormResearch), diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index b85b5e937..6ba343508 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -366,10 +366,6 @@ class ParcelFormSet(FormSet): if hasattr(self, 'cleaned_data') and self.cleaned_data: return self.cleaned_data -ParcelFormSet = formset_factory(ParcelForm, can_delete=True, - formset=ParcelFormSet) -ParcelFormSet.form_label = _(u"Parcels") - class RecordRelationsForm(ManageOldType, forms.Form): base_model = 'right_relation' diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index 189a02c05..fa71c4d3f 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -46,6 +46,7 @@ from ishtar_common.utils import get_cache from ishtar_common import forms as common_forms from archaeological_files import forms as file_forms +from archaeological_files_pdl import forms as file_pdl_forms from archaeological_operations import forms as operation_forms from archaeological_context_records import forms as context_record_forms from archaeological_finds import forms as find_forms, \ @@ -53,7 +54,7 @@ from archaeological_finds import forms as find_forms, \ from archaeological_warehouse import forms as warehouse_forms -ISHTAR_FORMS = [common_forms, file_forms, operation_forms, +ISHTAR_FORMS = [common_forms, file_pdl_forms, file_forms, operation_forms, context_record_forms, find_forms, treatment_forms, warehouse_forms] -- cgit v1.2.3 From 462cc4a8812f7e645c7d587e7e37429dd3736622 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 4 Jan 2018 15:54:20 +0100 Subject: French translation (refs #3804) --- ishtar_common/fixtures/initial_importtypes-fr.json | 10 +++++----- translations/fr/archaeological_operations.po | 15 ++++++++------- 2 files changed, 13 insertions(+), 12 deletions(-) (limited to 'ishtar_common') diff --git a/ishtar_common/fixtures/initial_importtypes-fr.json b/ishtar_common/fixtures/initial_importtypes-fr.json index 97c0856a2..f0949b126 100644 --- a/ishtar_common/fixtures/initial_importtypes-fr.json +++ b/ishtar_common/fixtures/initial_importtypes-fr.json @@ -1641,7 +1641,7 @@ "ishtar-operations" ], "col_number": 24, - "description": "Date de cl\u00f4ture (peut \u00eatre la date de rendu de la documentation, la fin de la recherche associ\u00e9e ou autre). Habituellement cela repr\u00e9sente la date \u00e0 partir de laquelle la documentation issue de l'op\u00e9ration n'est plus du ressort du responsable d'op\u00e9ration, mais vous pouvez utiliser autre chose.", + "description": "Date de cl\u00f4ture (peut \u00eatre la date de versement de la documentation, la fin de la recherche associ\u00e9e ou autre). Habituellement cela repr\u00e9sente la date \u00e0 partir de laquelle la documentation issue de l'op\u00e9ration n'est plus du ressort du responsable d'op\u00e9ration, mais vous pouvez utiliser autre chose.", "regexp_pre_filter": null, "required": false, "export_field_name": null @@ -1720,12 +1720,12 @@ { "model": "ishtar_common.importercolumn", "fields": { - "label": "Date limite pour le rendu de la documentation", + "label": "Date limite pour le versement de la documentation", "importer_type": [ "ishtar-operations" ], "col_number": 30, - "description": "Date limite pr\u00e9vue pour le rendu de la documentation scientifique.", + "description": "Date limite pr\u00e9vue pour le versement de la documentation scientifique.", "regexp_pre_filter": null, "required": false, "export_field_name": null @@ -1748,12 +1748,12 @@ { "model": "ishtar_common.importercolumn", "fields": { - "label": "Date limite rendu du mobilier", + "label": "Date limite versement du mobilier", "importer_type": [ "ishtar-operations" ], "col_number": 32, - "description": "Date limite pr\u00e9vue pour le rendu du mobilier.", + "description": "Date limite pr\u00e9vue pour le versement du mobilier.", "regexp_pre_filter": null, "required": false, "export_field_name": null diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index 490111733..37b6c0938 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -7,12 +7,13 @@ # Étienne Loks , 2016. #zanata # Valérie-Emma Leroux , 2017. #zanata # Étienne Loks , 2017. #zanata +# Étienne Loks , 2018. #zanata msgid "" msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2017-11-02 05:38-0400\n" +"PO-Revision-Date: 2018-01-04 09:51-0500\n" "Last-Translator: Étienne Loks \n" "Language-Team: \n" "Language: fr\n" @@ -246,11 +247,11 @@ msgstr "Modifié par" #: forms.py:569 msgid "Documentation deadline before" -msgstr "Date limite de rendu de la documentation avant" +msgstr "Date limite de versement de la documentation avant" #: forms.py:571 msgid "Documentation deadline after" -msgstr "Date limite de rendu de la documentation après" +msgstr "Date limite de versement de la documentation après" #: forms.py:573 forms.py:861 models.py:365 msgid "Documentation received" @@ -258,11 +259,11 @@ msgstr "Documentation reçue" #: forms.py:575 msgid "Finds deadline before" -msgstr "Date limite de rendu du mobilier avant" +msgstr "Date limite de versement du mobilier avant" #: forms.py:577 msgid "Finds deadline after" -msgstr "Date limite de rendu du mobilier après" +msgstr "Date limite de versement du mobilier après" #: forms.py:579 forms.py:866 models.py:369 msgid "Finds received" @@ -384,11 +385,11 @@ msgstr "Date de livraison du rapport" #: forms.py:858 models.py:362 msgid "Deadline for submission of the documentation" -msgstr "Date limite de rendu de la documentation" +msgstr "Date limite de versement de la documentation" #: forms.py:863 models.py:367 msgid "Deadline for submission of the finds" -msgstr "Date limite de rendu du mobilier" +msgstr "Date limite de versement du mobilier" #: forms.py:878 msgid "Image" -- cgit v1.2.3