diff options
-rw-r--r-- | CHANGES.md | 11 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 2 | ||||
-rw-r--r-- | archaeological_operations/forms.py | 16 | ||||
-rw-r--r-- | archaeological_operations/locale/django.pot | 200 | ||||
-rw-r--r-- | archaeological_operations/views.py | 2 | ||||
-rw-r--r-- | example_project/settings.py | 4 | ||||
-rw-r--r-- | ishtar_common/admin.py | 28 | ||||
-rw-r--r-- | ishtar_common/fixtures/initial_importtypes-fr.json | 4 | ||||
-rw-r--r-- | ishtar_common/locale/django.pot | 705 | ||||
-rw-r--r-- | ishtar_common/management/commands/ishtar_excute_admin_tasks.py | 15 | ||||
-rw-r--r-- | ishtar_common/migrations/0077_auto__add_administrationscript__add_administrationtask.py | 530 | ||||
-rw-r--r-- | ishtar_common/models.py | 124 | ||||
-rw-r--r-- | ishtar_common/static/media/style.css | 10 | ||||
-rw-r--r-- | ishtar_common/templates/base.html | 5 | ||||
-rw-r--r-- | ishtar_common/views.py | 22 | ||||
-rw-r--r-- | ishtar_common/widgets.py | 18 | ||||
-rw-r--r-- | translations/de/ishtar_common.po | 704 | ||||
-rw-r--r-- | translations/fr/archaeological_operations.po | 200 | ||||
-rw-r--r-- | translations/fr/ishtar_common.po | 719 | ||||
-rw-r--r-- | version.py | 2 |
20 files changed, 2153 insertions, 1168 deletions
diff --git a/CHANGES.md b/CHANGES.md index 967fa9d76..8fbb34e43 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,6 +1,17 @@ Ishtar changelog ================ +v0.99.20 (2017-06-01) +--------------------- +### Features ### +- Add the ability to scheduled administration task inside Django admin +- Alert when PROJECT_SLUG or profile slug is set to "default" +- Operation wizard: collaborators in a specific panel +- Autocomplete: on no result return an empty list instead of an empty string + +### Bug fixes ### +- Finds: fix full CSV export columns + v0.99.19 (2017-05-16) --------------------- ### Features ### diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index 668546602..9a993ad37 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -559,6 +559,7 @@ class Find(ValueGetter, BaseHistorizedItem, ImageModel, OwnPerms, } EXTRA_FULL_FIELDS = [ + 'datings', 'base_finds__cache_short_id', 'base_finds__cache_complete_id', 'base_finds__comment', 'base_finds__description', 'base_finds__topographic_localisation', @@ -600,7 +601,6 @@ class Find(ValueGetter, BaseHistorizedItem, ImageModel, OwnPerms, 'base_finds__context_record__operation__code_patriarche': 'base_finds__context_record__operation__code_patriarche', 'datings__period': 'datings__period__pk', - 'material_types': 'material_types__pk', 'base_finds__find__description': 'base_finds__find__description__icontains', 'base_finds__batch': 'base_finds__batch', diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 86bea4ed5..8fd9233d2 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -759,11 +759,9 @@ class DashboardForm(forms.Form): class OperationFormGeneral(ManageOldType, forms.Form): form_label = _(u"General") - base_models = ['collaborator'] file_upload = True associated_models = {'scientist': Person, 'in_charge': Person, - 'collaborator': Person, 'cira_rapporteur': Person, 'operator': Organization, 'operation_type': models.OperationType, @@ -819,8 +817,6 @@ class OperationFormGeneral(ManageOldType, forms.Form): limit={'person_types': [person_type_pk_lazy('sra_agent')]}, new=True), validators=[valid_id(Person)], required=False) - collaborator = widgets.Select2MultipleField( - model=Person, label=_("Collaborators"), required=False, remote=True) surface = forms.IntegerField( required=False, widget=widgets.AreaWidget, label=_(u"Total surface (m2)"), @@ -989,6 +985,18 @@ OperationFormModifGeneral.associated_models = \ OperationFormModifGeneral.associated_models['associated_file'] = File +class CollaboratorForm(forms.Form): + form_label = _(u"Collaborators") + base_models = ['collaborator'] + associated_models = {'collaborator': Person, } + collaborator = widgets.Select2MultipleField( + model=Person, label=_("Collaborators"), required=False, remote=True) + + def __init__(self, *args, **kwargs): + super(CollaboratorForm, self).__init__(*args, **kwargs) + self.fields['collaborator'].widget.attrs['full-width'] = True + + class OperationFormPreventive(forms.Form): form_label = _(u"Preventive informations - excavation") cost = forms.IntegerField(label=_(u"Cost (euros)"), required=False) diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index fafadea13..f8ba1f3a0 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -10,13 +10,13 @@ msgid "" msgstr "" -#: forms.py:69 forms.py:371 forms.py:1047 forms.py:1069 forms.py:1073 +#: forms.py:69 forms.py:371 forms.py:1055 forms.py:1077 forms.py:1081 #: models.py:1252 templates/ishtar/sheet_operation.html:153 #: templates/ishtar/blocks/window_tables/parcels.html:10 msgid "Parcels" msgstr "" -#: forms.py:72 forms.py:205 forms.py:1023 models.py:1238 +#: forms.py:72 forms.py:205 forms.py:1031 models.py:1238 #: templates/ishtar/blocks/window_tables/parcels.html:7 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -25,7 +25,7 @@ msgstr "" msgid "Town" msgstr "" -#: forms.py:74 forms.py:481 forms.py:783 forms.py:1293 models.py:276 +#: forms.py:74 forms.py:481 forms.py:781 forms.py:1301 models.py:276 #: models.py:1044 models.py:1236 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Year" @@ -86,7 +86,7 @@ msgstr "" msgid ":" msgstr "" -#: forms.py:414 forms.py:633 forms.py:1258 +#: forms.py:414 forms.py:633 forms.py:1266 msgid "You should select an operation." msgstr "" @@ -110,15 +110,15 @@ msgstr "" msgid "Relations" msgstr "" -#: forms.py:482 forms.py:1264 models.py:277 +#: forms.py:482 forms.py:1272 models.py:277 msgid "Numeric reference" msgstr "" -#: forms.py:488 forms.py:1304 +#: forms.py:488 forms.py:1312 msgid "Parcel (section/number/public domain)" msgstr "" -#: forms.py:491 forms.py:1307 models.py:848 +#: forms.py:491 forms.py:1315 models.py:848 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -127,17 +127,17 @@ msgstr "" msgid "Department" msgstr "" -#: forms.py:492 forms.py:1135 models.py:86 +#: forms.py:492 forms.py:1143 models.py:86 #: templates/ishtar/sheet_operation.html:22 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Name" msgstr "" -#: forms.py:494 forms.py:779 models.py:338 +#: forms.py:494 forms.py:777 models.py:338 msgid "Address / Locality" msgstr "" -#: forms.py:496 forms.py:700 forms.py:781 forms.py:1270 models.py:284 +#: forms.py:496 forms.py:700 forms.py:779 forms.py:1278 models.py:284 msgid "Operation type" msgstr "" @@ -145,7 +145,7 @@ msgstr "" msgid "Is open?" msgstr "" -#: forms.py:506 forms.py:813 models.py:269 +#: forms.py:506 forms.py:811 models.py:269 msgid "In charge" msgstr "" @@ -153,16 +153,16 @@ msgstr "" msgid "Scientist in charge" msgstr "" -#: forms.py:515 forms.py:702 forms.py:803 models.py:267 +#: forms.py:515 forms.py:702 forms.py:801 models.py:267 msgid "Operator" msgstr "" -#: forms.py:524 forms.py:1140 models.py:90 models.py:286 +#: forms.py:524 forms.py:1148 models.py:90 models.py:286 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10 msgid "Remains" msgstr "" -#: forms.py:525 forms.py:1118 forms.py:1137 models.py:88 models.py:292 +#: forms.py:525 forms.py:1126 forms.py:1145 models.py:88 models.py:292 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Periods" msgstr "" @@ -187,7 +187,7 @@ msgstr "" msgid "Search within relations" msgstr "" -#: forms.py:537 forms.py:867 +#: forms.py:537 forms.py:863 msgid "Comment" msgstr "" @@ -195,31 +195,31 @@ msgstr "" msgid "Abstract (full text search)" msgstr "" -#: forms.py:540 forms.py:870 models.py:341 +#: forms.py:540 forms.py:866 models.py:341 msgid "Comment about scientific documentation" msgstr "" -#: forms.py:541 forms.py:872 models.py:353 +#: forms.py:541 forms.py:868 models.py:353 msgid "Record quality" msgstr "" -#: forms.py:542 forms.py:837 models.py:304 +#: forms.py:542 forms.py:833 models.py:304 msgid "Report processing" msgstr "" -#: forms.py:544 forms.py:875 models.py:348 +#: forms.py:544 forms.py:871 models.py:348 msgid "Virtual operation" msgstr "" -#: forms.py:546 forms.py:1180 forms.py:1184 models.py:94 +#: forms.py:546 forms.py:1188 forms.py:1192 models.py:94 msgid "Archaeological site" msgstr "" -#: forms.py:552 forms.py:1311 +#: forms.py:552 forms.py:1319 msgid "Created by" msgstr "" -#: forms.py:558 forms.py:1317 +#: forms.py:558 forms.py:1325 msgid "Modified by" msgstr "" @@ -231,7 +231,7 @@ msgstr "" msgid "Documentation deadline after" msgstr "" -#: forms.py:569 forms.py:860 models.py:360 +#: forms.py:569 forms.py:856 models.py:360 msgid "Documentation received" msgstr "" @@ -243,11 +243,11 @@ msgstr "" msgid "Finds deadline after" msgstr "" -#: forms.py:575 forms.py:865 models.py:364 +#: forms.py:575 forms.py:861 models.py:364 msgid "Finds received" msgstr "" -#: forms.py:620 forms.py:1256 views.py:168 +#: forms.py:620 forms.py:1264 views.py:168 msgid "Operation search" msgstr "" @@ -255,7 +255,7 @@ msgstr "" msgid "Associated file" msgstr "" -#: forms.py:668 forms.py:971 models.py:520 models.py:921 models.py:1031 +#: forms.py:668 forms.py:967 models.py:520 models.py:921 models.py:1031 #: wizards.py:80 msgid "Archaeological file" msgstr "" @@ -324,261 +324,261 @@ msgstr "" msgid "With finds" msgstr "" -#: forms.py:761 forms.py:1365 templates/ishtar/sheet_administrativeact.html:20 +#: forms.py:761 forms.py:1373 templates/ishtar/sheet_administrativeact.html:20 #: templates/ishtar/sheet_operation.html:26 msgid "General" msgstr "" -#: forms.py:777 models.py:337 +#: forms.py:775 models.py:337 msgid "Generic name" msgstr "" -#: forms.py:788 models.py:306 +#: forms.py:786 models.py:306 msgid "Old code" msgstr "" -#: forms.py:791 +#: forms.py:789 msgid "Head scientist" msgstr "" -#: forms.py:810 models.py:336 +#: forms.py:808 models.py:336 msgid "Operator reference" msgstr "" -#: forms.py:823 models.py:273 -msgid "Collaborators" -msgstr "" - -#: forms.py:826 +#: forms.py:822 msgid "Total surface (m2)" msgstr "" -#: forms.py:830 models.py:54 models.py:256 models.py:1448 +#: forms.py:826 models.py:54 models.py:256 models.py:1448 msgid "Start date" msgstr "" -#: forms.py:832 models.py:258 +#: forms.py:828 models.py:258 msgid "Excavation end date" msgstr "" -#: forms.py:835 models.py:259 +#: forms.py:831 models.py:259 msgid "Report delivery date" msgstr "" -#: forms.py:857 models.py:357 +#: forms.py:853 models.py:357 msgid "Deadline for submission of the documentation" msgstr "" -#: forms.py:862 models.py:362 +#: forms.py:858 models.py:362 msgid "Deadline for submission of the finds" msgstr "" -#: forms.py:877 +#: forms.py:873 msgid "Image" msgstr "" -#: forms.py:878 +#: forms.py:874 #, python-format msgid "" "<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</" "p>" msgstr "" -#: forms.py:924 +#: forms.py:920 msgid "" "If you want to set an excavation end date you have to provide a start date." msgstr "" -#: forms.py:929 +#: forms.py:925 msgid "The excavation end date cannot be before the start date." msgstr "" -#: forms.py:957 +#: forms.py:953 #, python-format msgid "" "Operation code already exists for year: %(year)d - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:961 +#: forms.py:957 msgid "Bad operation code" msgstr "" -#: forms.py:967 models.py:535 models.py:877 +#: forms.py:963 models.py:535 models.py:877 msgid "Operation code" msgstr "" -#: forms.py:993 +#: forms.py:989 forms.py:993 models.py:273 +msgid "Collaborators" +msgstr "" + +#: forms.py:1001 msgid "Preventive informations - excavation" msgstr "" -#: forms.py:994 models.py:290 +#: forms.py:1002 models.py:290 #: templates/ishtar/dashboards/dashboard_operation.html:701 msgid "Cost (euros)" msgstr "" -#: forms.py:995 models.py:295 +#: forms.py:1003 models.py:295 msgid "Scheduled man-days" msgstr "" -#: forms.py:997 models.py:298 +#: forms.py:1005 models.py:298 msgid "Optional man-days" msgstr "" -#: forms.py:999 models.py:301 +#: forms.py:1007 models.py:301 msgid "Effective man-days" msgstr "" -#: forms.py:1009 +#: forms.py:1017 msgid "Preventive informations - diagnostic" msgstr "" -#: forms.py:1012 models.py:320 +#: forms.py:1020 models.py:320 msgid "Prescription on zoning" msgstr "" -#: forms.py:1014 models.py:323 +#: forms.py:1022 models.py:323 msgid "Prescription on large area" msgstr "" -#: forms.py:1017 models.py:325 +#: forms.py:1025 models.py:325 msgid "Prescription on geoarchaeological context" msgstr "" -#: forms.py:1021 forms.py:1043 models.py:288 models.py:1054 +#: forms.py:1029 forms.py:1051 models.py:288 models.py:1054 msgid "Towns" msgstr "" -#: forms.py:1050 models.py:1251 models.py:1446 +#: forms.py:1058 models.py:1251 models.py:1446 msgid "Parcel" msgstr "" -#: forms.py:1102 models.py:46 +#: forms.py:1110 models.py:46 msgid "Remain types" msgstr "" -#: forms.py:1106 models.py:45 +#: forms.py:1114 models.py:45 msgid "Remain type" msgstr "" -#: forms.py:1122 templates/ishtar/sheet_operation.html:173 +#: forms.py:1130 templates/ishtar/sheet_operation.html:173 #: templates/ishtar/sheet_operation.html:204 msgid "Period" msgstr "" -#: forms.py:1134 models.py:85 +#: forms.py:1142 models.py:85 msgid "Reference" msgstr "" -#: forms.py:1163 +#: forms.py:1171 msgid "This reference already exists." msgstr "" -#: forms.py:1195 models.py:95 models.py:345 +#: forms.py:1203 models.py:95 models.py:345 #: templates/ishtar/sheet_operation.html:97 msgid "Archaeological sites" msgstr "" -#: forms.py:1199 +#: forms.py:1207 msgid "Associated archaeological sites" msgstr "" -#: forms.py:1205 ishtar_menu.py:34 ishtar_menu.py:64 ishtar_menu.py:93 +#: forms.py:1213 ishtar_menu.py:34 ishtar_menu.py:64 ishtar_menu.py:93 msgid "Search" msgstr "" -#: forms.py:1210 +#: forms.py:1218 msgid "Would you like to close this operation?" msgstr "" -#: forms.py:1215 +#: forms.py:1223 msgid "Would you like to delete this operation?" msgstr "" -#: forms.py:1224 forms.py:1294 forms.py:1430 models.py:884 models.py:1011 +#: forms.py:1232 forms.py:1302 forms.py:1438 models.py:884 models.py:1011 msgid "Index" msgstr "" -#: forms.py:1250 +#: forms.py:1258 #, python-format msgid "" "Index already exists for operation: %(operation)s - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:1262 +#: forms.py:1270 msgid "Operation's year" msgstr "" -#: forms.py:1269 +#: forms.py:1277 msgid "Operation's town" msgstr "" -#: forms.py:1282 +#: forms.py:1290 msgid "Documentation search" msgstr "" -#: forms.py:1284 +#: forms.py:1292 msgid "You should select a document." msgstr "" -#: forms.py:1301 forms.py:1368 models.py:935 models.py:1005 +#: forms.py:1309 forms.py:1376 models.py:935 models.py:1005 msgid "Act type" msgstr "" -#: forms.py:1302 forms.py:1500 +#: forms.py:1310 forms.py:1508 msgid "Indexed?" msgstr "" -#: forms.py:1308 forms.py:1373 models.py:1045 +#: forms.py:1316 forms.py:1381 models.py:1045 #: templates/ishtar/blocks/window_tables/administrativacts.html:10 msgid "Object" msgstr "" -#: forms.py:1345 views.py:348 +#: forms.py:1353 views.py:350 msgid "Administrative act search" msgstr "" -#: forms.py:1360 forms.py:1458 forms.py:1525 +#: forms.py:1368 forms.py:1466 forms.py:1533 msgid "You should select an administrative act." msgstr "" -#: forms.py:1376 models.py:1042 +#: forms.py:1384 models.py:1042 msgid "Signature date" msgstr "" -#: forms.py:1418 +#: forms.py:1426 #, python-format msgid "" "This index already exists for year: %(year)d - use a value bigger than " "%(last_val)d" msgstr "" -#: forms.py:1422 +#: forms.py:1430 msgid "Bad index" msgstr "" -#: forms.py:1435 +#: forms.py:1443 msgid "Would you like to delete this administrative act?" msgstr "" -#: forms.py:1440 +#: forms.py:1448 msgid "Template" msgstr "" -#: forms.py:1464 forms.py:1468 +#: forms.py:1472 forms.py:1476 msgid "This document is not intended for this type of act." msgstr "" -#: forms.py:1486 +#: forms.py:1494 msgid "Doc generation" msgstr "" -#: forms.py:1488 +#: forms.py:1496 msgid "Generate the associated doc?" msgstr "" -#: forms.py:1509 ishtar_menu.py:123 views.py:401 +#: forms.py:1517 ishtar_menu.py:123 views.py:403 msgctxt "admin act register" msgid "Register" msgstr "" @@ -1059,47 +1059,47 @@ msgstr "" msgid "Operation types old" msgstr "" -#: views.py:223 +#: views.py:224 msgid "New operation" msgstr "" -#: views.py:267 +#: views.py:269 msgid "Operation modification" msgstr "" -#: views.py:295 +#: views.py:297 msgid "Operation closing" msgstr "" -#: views.py:306 +#: views.py:308 msgid "Operation deletion" msgstr "" -#: views.py:311 +#: views.py:313 msgid "Operation: source search" msgstr "" -#: views.py:319 +#: views.py:321 msgid "Operation: source creation" msgstr "" -#: views.py:327 +#: views.py:329 msgid "Operation: source modification" msgstr "" -#: views.py:342 +#: views.py:344 msgid "Operation: source deletion" msgstr "" -#: views.py:361 +#: views.py:363 msgid "Operation: new administrative act" msgstr "" -#: views.py:371 +#: views.py:373 msgid "Operation: administrative act modification" msgstr "" -#: views.py:395 +#: views.py:397 msgid "Operation: administrative act deletion" msgstr "" diff --git a/archaeological_operations/views.py b/archaeological_operations/views.py index 9b420f594..24271bb8f 100644 --- a/archaeological_operations/views.py +++ b/archaeological_operations/views.py @@ -171,6 +171,7 @@ operation_search_wizard = SearchWizard.as_view( wizard_steps = [ ('filechoice-operation_creation', OperationFormFileChoice), ('general-operation_creation', OperationFormGeneral), + ('collaborators-operation_creation', CollaboratorForm), ('archaeologicalsite-operation_creation', ArchaeologicalSiteFormSet), ('preventive-operation_creation', OperationFormPreventive), ('preventivediag-operation_creation', OperationFormPreventiveDiag), @@ -227,6 +228,7 @@ operation_creation_wizard = OperationWizard.as_view( operation_modif_wizard_steps = [ ('selec-operation_modification', OperationFormSelection), ('general-operation_modification', OperationFormModifGeneral), + ('collaborators-operation_modification', CollaboratorForm), ('archaeologicalsite-operation_modification', ArchaeologicalSiteFormSet), ('preventive-operation_modification', OperationFormPreventive), ('preventivediag-operation_modification', OperationFormPreventiveDiag), diff --git a/example_project/settings.py b/example_project/settings.py index 78d97f0ae..c7880d8c8 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -214,6 +214,10 @@ APP_NAME = "SRA - Pays de la Loire" SURFACE_UNIT = 'square-metre' SURFACE_UNIT_LABEL = u'm²' JOINT = u" | " +# dir for ishtar maintenance script - as it can be a serious security issue if +# not managed cautiously the dir contening theses scripts is not set by default +ISHTAR_SCRIPT_DIR = "" + ISHTAR_FILE_PREFIX = u"" ISHTAR_OPE_PREFIX = u"OA" ISHTAR_DEF_OPE_PREFIX = u"OP" diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py index cdff25439..adf006502 100644 --- a/ishtar_common/admin.py +++ b/ishtar_common/admin.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2017 É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 @@ -312,6 +312,32 @@ class ItemKeyAdmin(admin.ModelAdmin): admin.site.register(models.ItemKey, ItemKeyAdmin) +class AdministrationScriptAdmin(admin.ModelAdmin): + list_display = ['name', 'path'] + + def get_readonly_fields(self, request, obj=None): + if obj: + return ('path',) + return [] + +admin.site.register(models.AdministrationScript, AdministrationScriptAdmin) + + +class AdministrationTaskAdmin(admin.ModelAdmin): + readonly_fields = ('state', 'creation_date', 'launch_date', + 'finished_date', "result", ) + list_display = ['script', 'state', 'creation_date', 'launch_date', + 'finished_date', "result"] + list_filter = ['script', 'state'] + + def get_readonly_fields(self, request, obj=None): + if obj: + return ("script", ) + self.readonly_fields + return self.readonly_fields + +admin.site.register(models.AdministrationTask, AdministrationTaskAdmin) + + basic_models = [models.DocumentTemplate] if settings.COUNTRY == 'fr': basic_models += [models.Arrondissement, models.Canton] diff --git a/ishtar_common/fixtures/initial_importtypes-fr.json b/ishtar_common/fixtures/initial_importtypes-fr.json index bd3330f7d..511a1fc7d 100644 --- a/ishtar_common/fixtures/initial_importtypes-fr.json +++ b/ishtar_common/fixtures/initial_importtypes-fr.json @@ -393,7 +393,7 @@ "required": true, "label": "Label mobilier", "importer_type": 20, - "export_field_name": null + "export_field_name": "label" } }, { @@ -718,7 +718,7 @@ "required": false, "label": "P\u00e9riodes", "importer_type": 20, - "export_field_name": null + "export_field_name": "datings__period__label" } }, { diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 002f724cf..4d9e2d575 100644 --- a/ishtar_common/locale/django.pot +++ b/ishtar_common/locale/django.pot @@ -6,6 +6,7 @@ # Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata # Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata # Valérie-Emma Leroux <emma@iggdrasil.net>, 2017. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2017. #zanata msgid "" msgstr "" @@ -176,12 +177,12 @@ msgstr "" msgid "Add a new item" msgstr "" -#: forms.py:297 models.py:1556 +#: forms.py:297 models.py:1558 msgid "Template" msgstr "" #: forms_common.py:41 forms_common.py:59 forms_common.py:184 -#: forms_common.py:408 models.py:1622 models.py:3085 +#: forms_common.py:408 models.py:1624 models.py:3087 #: templates/blocks/JQueryAdvancedTown.html:19 #: templates/ishtar/sheet_organization.html:13 msgid "Town" @@ -197,8 +198,8 @@ msgid "" "french town Saint-Denis in the Seine-Saint-Denis department.</p>" msgstr "" -#: forms_common.py:68 forms_common.py:863 ishtar_menu.py:47 models.py:2685 -#: models.py:2878 models.py:2940 templates/ishtar/sheet_person.html:4 +#: forms_common.py:68 forms_common.py:863 ishtar_menu.py:47 models.py:2687 +#: models.py:2880 models.py:2942 templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "" @@ -209,64 +210,65 @@ msgid "" msgstr "" #: forms_common.py:172 forms_common.py:329 forms_common.py:453 -#: ishtar_menu.py:75 models.py:2568 models.py:2659 +#: ishtar_menu.py:75 models.py:2570 models.py:2661 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "" #: forms_common.py:175 forms_common.py:212 forms_common.py:324 -#: forms_common.py:378 forms_common.py:448 models.py:1159 models.py:1555 -#: models.py:1824 models.py:1840 models.py:2078 models.py:2356 models.py:2562 -#: models.py:2671 models.py:3071 templates/ishtar/import_list.html:13 +#: forms_common.py:378 forms_common.py:448 models.py:1161 models.py:1557 +#: models.py:1826 models.py:1842 models.py:2080 models.py:2358 models.py:2564 +#: models.py:2673 models.py:3073 models.py:3170 +#: templates/ishtar/import_list.html:13 #: templates/ishtar/sheet_organization.html:8 #: templates/ishtar/sheet_organization.html:21 msgid "Name" msgstr "" -#: forms_common.py:176 models.py:1777 models.py:2209 +#: forms_common.py:176 models.py:1779 models.py:2211 msgid "Organization type" msgstr "" -#: forms_common.py:178 forms_common.py:402 models.py:1617 +#: forms_common.py:178 forms_common.py:402 models.py:1619 #: templates/ishtar/sheet_organization.html:10 msgid "Address" msgstr "" -#: forms_common.py:180 forms_common.py:405 models.py:1618 +#: forms_common.py:180 forms_common.py:405 models.py:1620 #: templates/ishtar/sheet_organization.html:11 msgid "Address complement" msgstr "" -#: forms_common.py:182 forms_common.py:406 models.py:1620 +#: forms_common.py:182 forms_common.py:406 models.py:1622 #: templates/ishtar/sheet_organization.html:12 msgid "Postal code" msgstr "" -#: forms_common.py:185 forms_common.py:409 models.py:1623 +#: forms_common.py:185 forms_common.py:409 models.py:1625 msgid "Country" msgstr "" #: forms_common.py:187 forms_common.py:326 forms_common.py:382 -#: forms_common.py:450 forms_common.py:574 models.py:1650 +#: forms_common.py:450 forms_common.py:574 models.py:1652 msgid "Email" msgstr "" -#: forms_common.py:188 forms_common.py:385 models.py:1635 +#: forms_common.py:188 forms_common.py:385 models.py:1637 #: templates/ishtar/sheet_organization.html:14 #: templates/ishtar/sheet_person.html:21 #: templates/ishtar/wizard/wizard_person.html:17 msgid "Phone" msgstr "" -#: forms_common.py:189 forms_common.py:394 models.py:1647 +#: forms_common.py:189 forms_common.py:394 models.py:1649 #: templates/ishtar/sheet_organization.html:15 #: templates/ishtar/sheet_person.html:39 #: templates/ishtar/wizard/wizard_person.html:35 msgid "Mobile phone" msgstr "" -#: forms_common.py:213 forms_common.py:327 forms_common.py:451 models.py:2247 -#: models.py:2564 models.py:3006 templates/sheet_ope.html:85 +#: forms_common.py:213 forms_common.py:327 forms_common.py:451 models.py:2249 +#: models.py:2566 models.py:3008 templates/sheet_ope.html:85 #: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126 #: templates/ishtar/import_list.html:14 #: templates/ishtar/sheet_organization.html:23 @@ -274,7 +276,7 @@ msgstr "" msgid "Type" msgstr "" -#: forms_common.py:222 views.py:149 +#: forms_common.py:222 views.py:157 msgid "Organization search" msgstr "" @@ -290,12 +292,12 @@ msgstr "" msgid "Organization to merge" msgstr "" -#: forms_common.py:325 forms_common.py:376 forms_common.py:449 models.py:2669 +#: forms_common.py:325 forms_common.py:376 forms_common.py:449 models.py:2671 #: templates/ishtar/sheet_organization.html:22 msgid "Surname" msgstr "" -#: forms_common.py:341 forms_common.py:436 views.py:114 +#: forms_common.py:341 forms_common.py:436 views.py:122 msgid "Person search" msgstr "" @@ -308,25 +310,25 @@ msgstr "" msgid "Identity" msgstr "" -#: forms_common.py:373 forms_common.py:781 forms_common.py:830 models.py:2210 -#: models.py:2663 models.py:2665 models.py:3003 templates/sheet_ope.html:104 +#: forms_common.py:373 forms_common.py:781 forms_common.py:830 models.py:2212 +#: models.py:2665 models.py:2667 models.py:3005 templates/sheet_ope.html:104 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "" -#: forms_common.py:374 models.py:2667 +#: forms_common.py:374 models.py:2669 msgid "Salutation" msgstr "" -#: forms_common.py:380 models.py:2673 +#: forms_common.py:380 models.py:2675 msgid "Raw name" msgstr "" -#: forms_common.py:383 models.py:1636 +#: forms_common.py:383 models.py:1638 msgid "Phone description" msgstr "" -#: forms_common.py:386 models.py:1638 models.py:1640 +#: forms_common.py:386 models.py:1640 models.py:1642 msgid "Phone description 2" msgstr "" @@ -334,11 +336,11 @@ msgstr "" msgid "Phone 2" msgstr "" -#: forms_common.py:390 models.py:1644 +#: forms_common.py:390 models.py:1646 msgid "Phone description 3" msgstr "" -#: forms_common.py:392 models.py:1642 +#: forms_common.py:392 models.py:1644 msgid "Phone 3" msgstr "" @@ -346,23 +348,23 @@ msgstr "" msgid "Current organization" msgstr "" -#: forms_common.py:411 models.py:1625 +#: forms_common.py:411 models.py:1627 msgid "Other address: address" msgstr "" -#: forms_common.py:414 models.py:1628 +#: forms_common.py:414 models.py:1630 msgid "Other address: address complement" msgstr "" -#: forms_common.py:416 models.py:1629 +#: forms_common.py:416 models.py:1631 msgid "Other address: postal code" msgstr "" -#: forms_common.py:418 models.py:1631 +#: forms_common.py:418 models.py:1633 msgid "Other address: town" msgstr "" -#: forms_common.py:420 models.py:1633 +#: forms_common.py:420 models.py:1635 msgid "Other address: country" msgstr "" @@ -378,7 +380,7 @@ msgstr "" msgid "Account search" msgstr "" -#: forms_common.py:512 forms_common.py:552 forms_common.py:556 models.py:2616 +#: forms_common.py:512 forms_common.py:552 forms_common.py:556 models.py:2618 msgid "Person type" msgstr "" @@ -410,7 +412,7 @@ msgstr "" msgid "Send the new password by email?" msgstr "" -#: forms_common.py:636 forms_common.py:649 models.py:3086 +#: forms_common.py:636 forms_common.py:649 models.py:3088 msgid "Towns" msgstr "" @@ -426,7 +428,7 @@ msgstr "" msgid "Documentation informations" msgstr "" -#: forms_common.py:783 forms_common.py:831 models.py:2211 models.py:2978 +#: forms_common.py:783 forms_common.py:831 models.py:2213 models.py:2980 msgid "Source type" msgstr "" @@ -438,37 +440,37 @@ msgstr "" msgid "Internal reference" msgstr "" -#: forms_common.py:791 models.py:3017 +#: forms_common.py:791 models.py:3019 msgid "Numerical ressource (web address)" msgstr "" -#: forms_common.py:792 models.py:3019 +#: forms_common.py:792 models.py:3021 msgid "Receipt date" msgstr "" -#: forms_common.py:794 models.py:2382 models.py:3021 +#: forms_common.py:794 models.py:2384 models.py:3023 msgid "Creation date" msgstr "" -#: forms_common.py:797 models.py:3024 +#: forms_common.py:797 models.py:3026 msgid "Receipt date in documentation" msgstr "" -#: forms_common.py:799 forms_common.py:835 models.py:419 models.py:746 -#: models.py:2105 models.py:2677 models.py:3031 +#: forms_common.py:799 forms_common.py:835 models.py:421 models.py:748 +#: models.py:2107 models.py:2679 models.py:3033 msgid "Comment" msgstr "" -#: forms_common.py:801 forms_common.py:834 models.py:1161 models.py:1844 -#: models.py:2032 models.py:2079 models.py:3030 templates/sheet_ope.html:128 +#: forms_common.py:801 forms_common.py:834 models.py:1163 models.py:1846 +#: models.py:2034 models.py:2081 models.py:3032 templates/sheet_ope.html:128 msgid "Description" msgstr "" -#: forms_common.py:804 models.py:3032 +#: forms_common.py:804 models.py:3034 msgid "Additional information" msgstr "" -#: forms_common.py:806 forms_common.py:838 models.py:3034 +#: forms_common.py:806 forms_common.py:838 models.py:3036 msgid "Has a duplicate" msgstr "" @@ -483,7 +485,7 @@ msgid "" "p>" msgstr "" -#: forms_common.py:827 forms_common.py:856 forms_common.py:890 models.py:2945 +#: forms_common.py:827 forms_common.py:856 forms_common.py:890 models.py:2947 #: templates/ishtar/wizard/wizard_person_deletion.html:124 msgid "Author" msgstr "" @@ -496,7 +498,7 @@ msgstr "" msgid "Would you like to delete this documentation?" msgstr "" -#: forms_common.py:864 models.py:2212 models.py:2932 models.py:2942 +#: forms_common.py:864 models.py:2214 models.py:2934 models.py:2944 msgid "Author type" msgstr "" @@ -508,7 +510,7 @@ msgstr "" msgid "There are identical authors." msgstr "" -#: forms_common.py:901 models.py:2946 models.py:3013 +#: forms_common.py:901 models.py:2948 models.py:3015 #: templates/sheet_ope.html:106 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" @@ -526,7 +528,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:39 models.py:1338 views.py:1640 +#: ishtar_menu.py:39 models.py:1340 views.py:1648 msgid "Global variables" msgstr "" @@ -554,296 +556,296 @@ msgstr "" msgid "Manual merge" msgstr "" -#: ishtar_menu.py:109 models.py:2390 +#: ishtar_menu.py:109 models.py:2392 msgid "Imports" msgstr "" -#: ishtar_menu.py:112 views.py:1648 +#: ishtar_menu.py:112 views.py:1656 msgid "New import" msgstr "" -#: ishtar_menu.py:116 views.py:1662 +#: ishtar_menu.py:116 views.py:1670 msgid "Current imports" msgstr "" -#: ishtar_menu.py:120 views.py:1701 +#: ishtar_menu.py:120 views.py:1709 msgid "Old imports" msgstr "" -#: models.py:224 +#: models.py:226 msgid "Not a valid item." msgstr "" -#: models.py:239 +#: models.py:241 msgid "A selected item is not a valid item." msgstr "" -#: models.py:250 +#: models.py:252 msgid "This item already exists." msgstr "" -#: models.py:415 models.py:745 models.py:1590 models.py:1602 models.py:2028 +#: models.py:417 models.py:747 models.py:1592 models.py:1604 models.py:2030 msgid "Label" msgstr "" -#: models.py:417 +#: models.py:419 msgid "Textual ID" msgstr "" -#: models.py:420 models.py:748 models.py:1559 +#: models.py:422 models.py:750 models.py:1561 msgid "Available" msgstr "" -#: models.py:772 models.py:2151 +#: models.py:774 models.py:2153 msgid "Key" msgstr "" -#: models.py:778 +#: models.py:780 msgid "Specific key to an import" msgstr "" -#: models.py:874 +#: models.py:876 msgid "Last editor" msgstr "" -#: models.py:877 +#: models.py:879 msgid "Creator" msgstr "" -#: models.py:1019 models.py:2929 models.py:3097 models.py:3153 +#: models.py:1021 models.py:2931 models.py:3099 models.py:3155 msgid "Order" msgstr "" -#: models.py:1020 +#: models.py:1022 msgid "Symmetrical" msgstr "" -#: models.py:1021 +#: models.py:1023 msgid "Tiny label" msgstr "" -#: models.py:1035 +#: models.py:1037 msgid "Cannot have symmetrical and an inverse_relation" msgstr "" -#: models.py:1151 +#: models.py:1153 msgid "Euro" msgstr "" -#: models.py:1152 +#: models.py:1154 msgid "US dollar" msgstr "" -#: models.py:1153 views.py:1438 views.py:1500 +#: models.py:1155 views.py:1446 views.py:1508 msgid "Operations" msgstr "" -#: models.py:1154 views.py:1440 views.py:1504 +#: models.py:1156 views.py:1448 views.py:1512 msgid "Context records" msgstr "" -#: models.py:1160 models.py:1842 +#: models.py:1162 models.py:1844 msgid "Slug" msgstr "" -#: models.py:1163 +#: models.py:1165 msgid "CSS color code for base module" msgstr "" -#: models.py:1165 +#: models.py:1167 msgid "Files module" msgstr "" -#: models.py:1167 +#: models.py:1169 msgid "CSS color code for files module" msgstr "" -#: models.py:1169 +#: models.py:1171 msgid "Context records module" msgstr "" -#: models.py:1172 +#: models.py:1174 msgid "CSS color code for context record module" msgstr "" -#: models.py:1174 +#: models.py:1176 msgid "Finds module" msgstr "" -#: models.py:1175 +#: models.py:1177 msgid "Need context records module" msgstr "" -#: models.py:1177 +#: models.py:1179 msgid "Find index is based on" msgstr "" -#: models.py:1179 +#: models.py:1181 msgid "" "To prevent irrelevant indexes, change this parameter only if there is no " "find in the database" msgstr "" -#: models.py:1182 +#: models.py:1184 msgid "CSS color code for find module" msgstr "" -#: models.py:1185 +#: models.py:1187 msgid "Warehouses module" msgstr "" -#: models.py:1186 +#: models.py:1188 msgid "Need finds module" msgstr "" -#: models.py:1188 +#: models.py:1190 msgid "CSS code for warehouse module" msgstr "" -#: models.py:1190 +#: models.py:1192 msgid "Mapping module" msgstr "" -#: models.py:1192 +#: models.py:1194 msgid "CSS code for mapping module" msgstr "" -#: models.py:1195 +#: models.py:1197 msgid "Home page" msgstr "" -#: models.py:1196 +#: models.py:1198 #, python-brace-format msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax. {random_image} can be used to display a random image." msgstr "" -#: models.py:1200 +#: models.py:1202 msgid "File external id" msgstr "" -#: models.py:1202 +#: models.py:1204 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1207 +#: models.py:1209 msgid "Parcel external id" msgstr "" -#: models.py:1210 +#: models.py:1212 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1215 +#: models.py:1217 msgid "Context record external id" msgstr "" -#: models.py:1217 +#: models.py:1219 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1222 +#: models.py:1224 msgid "Base find external id" msgstr "" -#: models.py:1224 +#: models.py:1226 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1229 +#: models.py:1231 msgid "Find external id" msgstr "" -#: models.py:1231 +#: models.py:1233 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1236 +#: models.py:1238 msgid "Container external id" msgstr "" -#: models.py:1238 +#: models.py:1240 msgid "" "Formula to manage container external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1243 +#: models.py:1245 msgid "Warehouse external id" msgstr "" -#: models.py:1245 +#: models.py:1247 msgid "" "Formula to manage warehouse external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1250 +#: models.py:1252 msgid "Raw name for person" msgstr "" -#: models.py:1252 +#: models.py:1254 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1256 +#: models.py:1258 msgid "Current active" msgstr "" -#: models.py:1257 +#: models.py:1259 msgid "Currency" msgstr "" -#: models.py:1261 +#: models.py:1263 msgid "Ishtar site profile" msgstr "" -#: models.py:1262 +#: models.py:1264 msgid "Ishtar site profiles" msgstr "" -#: models.py:1331 +#: models.py:1333 msgid "Variable name" msgstr "" -#: models.py:1332 +#: models.py:1334 msgid "Description of the variable" msgstr "" -#: models.py:1334 models.py:2152 +#: models.py:1336 models.py:2154 msgid "Value" msgstr "" -#: models.py:1337 +#: models.py:1339 msgid "Global variable" msgstr "" -#: models.py:1460 models.py:1490 +#: models.py:1462 models.py:1492 msgid "Total" msgstr "" -#: models.py:1467 models.py:1591 models.py:1603 +#: models.py:1469 models.py:1593 models.py:1605 #: templates/ishtar/sheet_person.html:24 #: templates/ishtar/dashboards/dashboard_main_detail.html:141 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 @@ -851,666 +853,725 @@ msgstr "" msgid "Number" msgstr "" -#: models.py:1554 +#: models.py:1556 msgid "Administrative Act" msgstr "" -#: models.py:1558 +#: models.py:1560 msgid "Associated object" msgstr "" -#: models.py:1562 +#: models.py:1564 msgid "Document template" msgstr "" -#: models.py:1563 +#: models.py:1565 msgid "Document templates" msgstr "" -#: models.py:1594 models.py:1604 models.py:2376 +#: models.py:1596 models.py:1606 models.py:2378 models.py:3193 msgid "State" msgstr "" -#: models.py:1608 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1610 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "" -#: models.py:1609 +#: models.py:1611 msgid "Departments" msgstr "" -#: models.py:1646 +#: models.py:1648 msgid "Raw phone" msgstr "" -#: models.py:1652 +#: models.py:1654 msgid "Alternative address is prefered" msgstr "" -#: models.py:1691 +#: models.py:1693 msgid "Tel: " msgstr "" -#: models.py:1695 +#: models.py:1697 msgid "Mobile: " msgstr "" -#: models.py:1699 +#: models.py:1701 msgid "Email: " msgstr "" -#: models.py:1704 +#: models.py:1706 msgid "Merge key" msgstr "" -#: models.py:1778 +#: models.py:1780 msgid "Organization types" msgstr "" -#: models.py:1825 +#: models.py:1827 msgid "Class name" msgstr "" -#: models.py:1828 +#: models.py:1830 msgid "Importer - Model" msgstr "" -#: models.py:1829 +#: models.py:1831 msgid "Importer - Models" msgstr "" -#: models.py:1846 templates/ishtar/dashboards/dashboard_main.html:34 +#: models.py:1848 templates/ishtar/dashboards/dashboard_main.html:34 msgid "Users" msgstr "" -#: models.py:1849 +#: models.py:1851 msgid "Associated model" msgstr "" -#: models.py:1852 +#: models.py:1854 msgid "Models that can accept new items" msgstr "" -#: models.py:1853 +#: models.py:1855 msgid "Leave blank for no restrictions" msgstr "" -#: models.py:1855 +#: models.py:1857 msgid "Is template" msgstr "" -#: models.py:1856 +#: models.py:1858 msgid "Unicity keys (separator \";\")" msgstr "" -#: models.py:1860 +#: models.py:1862 msgid "Importer - Type" msgstr "" -#: models.py:1861 +#: models.py:1863 msgid "Importer - Types" msgstr "" -#: models.py:1960 +#: models.py:1962 msgid "Importer - Default" msgstr "" -#: models.py:1961 +#: models.py:1963 msgid "Importer - Defaults" msgstr "" -#: models.py:1996 +#: models.py:1998 msgid "Importer - Default value" msgstr "" -#: models.py:1997 +#: models.py:1999 msgid "Importer - Default values" msgstr "" -#: models.py:2031 +#: models.py:2033 msgid "Column number" msgstr "" -#: models.py:2034 +#: models.py:2036 msgid "Required" msgstr "" -#: models.py:2036 +#: models.py:2038 msgid "Export field name" msgstr "" -#: models.py:2037 +#: models.py:2039 msgid "" "Fill this field if the field name is ambiguous for export. For instance: " "concatenated fields." msgstr "" -#: models.py:2042 +#: models.py:2044 msgid "Importer - Column" msgstr "" -#: models.py:2043 +#: models.py:2045 msgid "Importer - Columns" msgstr "" -#: models.py:2063 +#: models.py:2065 msgid "Field name" msgstr "" -#: models.py:2065 models.py:2099 +#: models.py:2067 models.py:2101 msgid "Force creation of new items" msgstr "" -#: models.py:2067 models.py:2101 +#: models.py:2069 models.py:2103 msgid "Concatenate with existing" msgstr "" -#: models.py:2069 models.py:2103 +#: models.py:2071 models.py:2105 msgid "Concatenate character" msgstr "" -#: models.py:2073 +#: models.py:2075 msgid "Importer - Duplicate field" msgstr "" -#: models.py:2074 +#: models.py:2076 msgid "Importer - Duplicate fields" msgstr "" -#: models.py:2081 +#: models.py:2083 msgid "Regular expression" msgstr "" -#: models.py:2084 +#: models.py:2086 msgid "Importer - Regular expression" msgstr "" -#: models.py:2085 +#: models.py:2087 msgid "Importer - Regular expressions" msgstr "" -#: models.py:2108 +#: models.py:2110 msgid "Importer - Target" msgstr "" -#: models.py:2109 +#: models.py:2111 msgid "Importer - Targets" msgstr "" -#: models.py:2133 views.py:570 +#: models.py:2135 views.py:578 msgid "True" msgstr "" -#: models.py:2134 views.py:572 +#: models.py:2136 views.py:580 msgid "False" msgstr "" -#: models.py:2153 +#: models.py:2155 msgid "Is set" msgstr "" -#: models.py:2160 +#: models.py:2162 msgid "Importer - Target key" msgstr "" -#: models.py:2161 +#: models.py:2163 msgid "Importer - Targets keys" msgstr "" -#: models.py:2213 models.py:3009 +#: models.py:2215 models.py:3011 msgid "Format" msgstr "" -#: models.py:2214 models.py:3101 +#: models.py:2216 models.py:3103 msgid "Operation type" msgstr "" -#: models.py:2215 +#: models.py:2217 msgid "Period" msgstr "" -#: models.py:2216 +#: models.py:2218 msgid "Report state" msgstr "" -#: models.py:2217 +#: models.py:2219 msgid "Remain type" msgstr "" -#: models.py:2218 +#: models.py:2220 msgid "Unit" msgstr "" -#: models.py:2220 +#: models.py:2222 msgid "Activity type" msgstr "" -#: models.py:2221 +#: models.py:2223 msgid "Material" msgstr "" -#: models.py:2223 +#: models.py:2225 msgid "Conservatory state" msgstr "" -#: models.py:2224 +#: models.py:2226 msgid "Container type" msgstr "" -#: models.py:2225 +#: models.py:2227 msgid "Preservation type" msgstr "" -#: models.py:2226 +#: models.py:2228 msgid "Object type" msgstr "" -#: models.py:2227 +#: models.py:2229 msgid "Integrity type" msgstr "" -#: models.py:2229 +#: models.py:2231 msgid "Remarkability type" msgstr "" -#: models.py:2230 +#: models.py:2232 msgid "Batch type" msgstr "" -#: models.py:2232 +#: models.py:2234 msgid "Identification type" msgstr "" -#: models.py:2234 +#: models.py:2236 msgid "Context record relation type" msgstr "" -#: models.py:2235 models.py:3159 +#: models.py:2237 models.py:3161 msgid "Spatial reference system" msgstr "" -#: models.py:2236 models.py:2987 +#: models.py:2238 models.py:2989 msgid "Support type" msgstr "" -#: models.py:2237 models.py:2628 +#: models.py:2239 models.py:2630 msgid "Title type" msgstr "" -#: models.py:2243 +#: models.py:2245 msgid "Integer" msgstr "" -#: models.py:2244 +#: models.py:2246 msgid "Float" msgstr "" -#: models.py:2245 +#: models.py:2247 msgid "String" msgstr "" -#: models.py:2246 templates/sheet_ope.html:86 +#: models.py:2248 templates/sheet_ope.html:86 msgid "Date" msgstr "" -#: models.py:2248 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:2250 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 #: templates/ishtar/dashboards/dashboard_main_detail.html:126 msgid "Year" msgstr "" -#: models.py:2249 +#: models.py:2251 msgid "String to boolean" msgstr "" -#: models.py:2250 +#: models.py:2252 msgctxt "filesystem" msgid "File" msgstr "" -#: models.py:2251 +#: models.py:2253 msgid "Unknow type" msgstr "" -#: models.py:2267 +#: models.py:2269 msgid "4 digit year. e.g.: \"2015\"" msgstr "" -#: models.py:2268 +#: models.py:2270 msgid "4 digit year/month/day. e.g.: \"2015/02/04\"" msgstr "" -#: models.py:2269 +#: models.py:2271 msgid "Day/month/4 digit year. e.g.: \"04/02/2015\"" msgstr "" -#: models.py:2279 +#: models.py:2281 msgid "Options" msgstr "" -#: models.py:2281 +#: models.py:2283 msgid "Split character(s)" msgstr "" -#: models.py:2285 +#: models.py:2287 msgid "Importer - Formater type" msgstr "" -#: models.py:2286 +#: models.py:2288 msgid "Importer - Formater types" msgstr "" -#: models.py:2338 templates/ishtar/dashboards/dashboard_main_detail.html:63 +#: models.py:2340 templates/ishtar/dashboards/dashboard_main_detail.html:63 msgid "Created" msgstr "" -#: models.py:2339 +#: models.py:2341 msgid "Analyse in progress" msgstr "" -#: models.py:2340 +#: models.py:2342 msgid "Analysed" msgstr "" -#: models.py:2341 +#: models.py:2343 msgid "Import pending" msgstr "" -#: models.py:2342 +#: models.py:2344 msgid "Import in progress" msgstr "" -#: models.py:2343 +#: models.py:2345 models.py:3184 msgid "Finished with errors" msgstr "" -#: models.py:2344 +#: models.py:2346 models.py:3185 msgid "Finished" msgstr "" -#: models.py:2345 +#: models.py:2347 msgid "Archived" msgstr "" -#: models.py:2360 +#: models.py:2362 msgid "Imported file" msgstr "" -#: models.py:2362 +#: models.py:2364 msgid "Associated images (zip file)" msgstr "" -#: models.py:2364 +#: models.py:2366 msgid "Encoding" msgstr "" -#: models.py:2366 +#: models.py:2368 msgid "Skip lines" msgstr "" -#: models.py:2367 templates/ishtar/import_list.html:51 +#: models.py:2369 templates/ishtar/import_list.html:51 msgid "Error file" msgstr "" -#: models.py:2370 +#: models.py:2372 msgid "Result file" msgstr "" -#: models.py:2373 templates/ishtar/import_list.html:57 +#: models.py:2375 templates/ishtar/import_list.html:57 msgid "Match file" msgstr "" -#: models.py:2379 +#: models.py:2381 msgid "Conservative import" msgstr "" -#: models.py:2383 +#: models.py:2385 msgid "End date" msgstr "" -#: models.py:2386 +#: models.py:2388 msgid "Remaining seconds" msgstr "" -#: models.py:2389 +#: models.py:2391 msgid "Import" msgstr "" -#: models.py:2418 +#: models.py:2420 msgid "Analyse" msgstr "" -#: models.py:2420 models.py:2423 +#: models.py:2422 models.py:2425 msgid "Re-analyse" msgstr "" -#: models.py:2421 +#: models.py:2423 msgid "Launch import" msgstr "" -#: models.py:2424 +#: models.py:2426 msgid "Re-import" msgstr "" -#: models.py:2425 +#: models.py:2427 msgid "Archive" msgstr "" -#: models.py:2427 +#: models.py:2429 msgid "Unarchive" msgstr "" -#: models.py:2428 widgets.py:184 templates/ishtar/form_delete.html:11 +#: models.py:2430 widgets.py:198 templates/ishtar/form_delete.html:11 msgid "Delete" msgstr "" -#: models.py:2569 +#: models.py:2571 msgid "Organizations" msgstr "" -#: models.py:2571 +#: models.py:2573 msgid "Can view all Organizations" msgstr "" -#: models.py:2572 +#: models.py:2574 msgid "Can view own Organization" msgstr "" -#: models.py:2573 +#: models.py:2575 msgid "Can add own Organization" msgstr "" -#: models.py:2575 +#: models.py:2577 msgid "Can change own Organization" msgstr "" -#: models.py:2577 +#: models.py:2579 msgid "Can delete own Organization" msgstr "" -#: models.py:2612 +#: models.py:2614 msgid "Groups" msgstr "" -#: models.py:2617 +#: models.py:2619 msgid "Person types" msgstr "" -#: models.py:2629 +#: models.py:2631 msgid "Title types" msgstr "" -#: models.py:2638 +#: models.py:2640 msgid "Mr" msgstr "" -#: models.py:2639 +#: models.py:2641 msgid "Miss" msgstr "" -#: models.py:2640 +#: models.py:2642 msgid "Mr and Mrs" msgstr "" -#: models.py:2641 +#: models.py:2643 msgid "Mrs" msgstr "" -#: models.py:2642 +#: models.py:2644 msgid "Doctor" msgstr "" -#: models.py:2675 +#: models.py:2677 msgid "Contact type" msgstr "" -#: models.py:2678 models.py:2742 +#: models.py:2680 models.py:2744 msgid "Types" msgstr "" -#: models.py:2681 +#: models.py:2683 msgid "Is attached to" msgstr "" -#: models.py:2686 +#: models.py:2688 msgid "Persons" msgstr "" -#: models.py:2688 +#: models.py:2690 msgid "Can view all Persons" msgstr "" -#: models.py:2689 +#: models.py:2691 msgid "Can view own Person" msgstr "" -#: models.py:2690 +#: models.py:2692 msgid "Can add own Person" msgstr "" -#: models.py:2691 +#: models.py:2693 msgid "Can change own Person" msgstr "" -#: models.py:2692 +#: models.py:2694 msgid "Can delete own Person" msgstr "" -#: models.py:2881 +#: models.py:2883 msgid "Advanced shortcut menu" msgstr "" -#: models.py:2884 +#: models.py:2886 msgid "Ishtar user" msgstr "" -#: models.py:2885 +#: models.py:2887 msgid "Ishtar users" msgstr "" -#: models.py:2925 +#: models.py:2927 msgid "To modify the password use the form in Auth > User" msgstr "" -#: models.py:2933 +#: models.py:2935 msgid "Author types" msgstr "" -#: models.py:2950 +#: models.py:2952 msgid "Can view all Authors" msgstr "" -#: models.py:2952 +#: models.py:2954 msgid "Can view own Author" msgstr "" -#: models.py:2954 +#: models.py:2956 msgid "Can add own Author" msgstr "" -#: models.py:2956 +#: models.py:2958 msgid "Can change own Author" msgstr "" -#: models.py:2958 +#: models.py:2960 msgid "Can delete own Author" msgstr "" -#: models.py:2979 +#: models.py:2981 msgid "Source types" msgstr "" -#: models.py:2988 +#: models.py:2990 msgid "Support types" msgstr "" -#: models.py:2995 +#: models.py:2997 msgid "Format type" msgstr "" -#: models.py:2996 +#: models.py:2998 msgid "Format types" msgstr "" -#: models.py:3004 +#: models.py:3006 msgid "External ID" msgstr "" -#: models.py:3007 +#: models.py:3009 msgid "Support" msgstr "" -#: models.py:3011 +#: models.py:3013 msgid "Scale" msgstr "" -#: models.py:3025 +#: models.py:3027 msgid "Item number" msgstr "" -#: models.py:3026 +#: models.py:3028 msgid "Ref." msgstr "" -#: models.py:3029 +#: models.py:3031 msgid "Internal ref." msgstr "" -#: models.py:3072 +#: models.py:3074 msgid "Surface (m2)" msgstr "" -#: models.py:3073 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:3075 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 msgid "Localisation" msgstr "" -#: models.py:3098 +#: models.py:3100 msgid "Is preventive" msgstr "" -#: models.py:3102 +#: models.py:3104 msgid "Operation types" msgstr "" -#: models.py:3131 +#: models.py:3133 msgid "Preventive" msgstr "" -#: models.py:3132 +#: models.py:3134 msgid "Research" msgstr "" -#: models.py:3155 +#: models.py:3157 msgid "Authority name" msgstr "" -#: models.py:3156 +#: models.py:3158 msgid "Authority SRID" msgstr "" -#: models.py:3160 +#: models.py:3162 msgid "Spatial reference systems" msgstr "" +#: models.py:3169 +msgid "Filename" +msgstr "" + +#: models.py:3174 +msgid "Administration script" +msgstr "" + +#: models.py:3175 +msgid "Administration scripts" +msgstr "" + +#: models.py:3182 +msgid "Scheduled" +msgstr "" + +#: models.py:3183 +msgid "In progress" +msgstr "" + +#: models.py:3198 +msgid "Result" +msgstr "" + +#: models.py:3201 +msgid "Administration task" +msgstr "" + +#: models.py:3202 +msgid "Administration tasks" +msgstr "" + +#: models.py:3206 +msgid "Unknown" +msgstr "" + +#: models.py:3221 +msgid "" +"ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your " +"administrator." +msgstr "" + +#: models.py:3230 +msgid "" +"Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to " +"relative paths, it can be a security issue and this is not allowed. Only put " +"a full path." +msgstr "" + +#: models.py:3241 +msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory." +msgstr "" + +#: models.py:3257 +msgid "" +"Script \"{}\" is not available in your script directory. Check your " +"configuration." +msgstr "" + #: utils.py:100 msgid " (...)" msgstr "" @@ -1519,128 +1580,140 @@ msgstr "" msgid "Load another random image?" msgstr "" -#: views.py:121 -msgid "New person" +#: views.py:96 +msgid "" +"PROJECT_SLUG is set to \"default\" change it in your local_settings (or ask " +"your admin to do it)." +msgstr "" + +#: views.py:101 +msgid "" +"The slug of your current profile is set to \"default\" change it on the " +"administration page (or ask your admin to do it)." msgstr "" #: views.py:129 +msgid "New person" +msgstr "" + +#: views.py:137 msgid "Person modification" msgstr "" -#: views.py:144 +#: views.py:152 msgid "Person deletion" msgstr "" -#: views.py:155 +#: views.py:163 msgid "New organization" msgstr "" -#: views.py:162 +#: views.py:170 msgid "Organization modification" msgstr "" -#: views.py:178 +#: views.py:186 msgid "Organization deletion" msgstr "" -#: views.py:185 +#: views.py:193 msgid "Account management" msgstr "" -#: views.py:191 +#: views.py:199 msgid "Account deletion" msgstr "" -#: views.py:253 +#: views.py:261 msgid "Archaeological file" msgstr "" -#: views.py:254 +#: views.py:262 msgid "Operation" msgstr "" -#: views.py:256 +#: views.py:264 msgid "Context record" msgstr "" -#: views.py:258 +#: views.py:266 msgid "Find" msgstr "" -#: views.py:260 +#: views.py:268 msgid "Treatment request" msgstr "" -#: views.py:261 +#: views.py:269 msgid "Treatment" msgstr "" -#: views.py:1376 views.py:1419 +#: views.py:1384 views.py:1427 msgid "Operation not permitted." msgstr "" -#: views.py:1378 +#: views.py:1386 #, python-format msgid "New %s" msgstr "" -#: views.py:1437 views.py:1496 +#: views.py:1445 views.py:1504 msgid "Archaeological files" msgstr "" -#: views.py:1442 views.py:1507 +#: views.py:1450 views.py:1515 msgid "Finds" msgstr "" -#: views.py:1444 views.py:1512 +#: views.py:1452 views.py:1520 msgid "Treatment requests" msgstr "" -#: views.py:1445 views.py:1518 +#: views.py:1453 views.py:1526 msgid "Treatments" msgstr "" -#: views.py:1715 templates/ishtar/import_list.html:47 +#: views.py:1723 templates/ishtar/import_list.html:47 msgid "Link unmatched items" msgstr "" -#: views.py:1730 +#: views.py:1738 msgid "Delete import" msgstr "" -#: views.py:1769 +#: views.py:1777 msgid "Merge persons" msgstr "" -#: views.py:1793 +#: views.py:1801 msgid "Select the main person" msgstr "" -#: views.py:1802 +#: views.py:1810 msgid "Merge organization" msgstr "" -#: views.py:1812 +#: views.py:1820 msgid "Select the main organization" msgstr "" -#: views.py:1852 views.py:1868 +#: views.py:1860 views.py:1876 msgid "Corporation manager" msgstr "" -#: widgets.py:313 widgets.py:420 widgets.py:535 +#: widgets.py:327 widgets.py:434 widgets.py:549 msgid "Search..." msgstr "" -#: widgets.py:724 templatetags/window_tables.py:96 +#: widgets.py:738 templatetags/window_tables.py:96 msgid "No results" msgstr "" -#: widgets.py:725 templatetags/window_tables.py:97 +#: widgets.py:739 templatetags/window_tables.py:97 msgid "Loading..." msgstr "" -#: widgets.py:726 +#: widgets.py:740 msgid "Remove" msgstr "" @@ -1727,19 +1800,19 @@ msgstr "" msgid ":" msgstr "" -#: templates/base.html:123 +#: templates/base.html:128 msgid "Processing..." msgstr "" -#: templates/base.html:124 +#: templates/base.html:129 msgid "This can be long." msgstr "" -#: templates/base.html:125 +#: templates/base.html:130 msgid "Time to take a coffee?" msgstr "" -#: templates/base.html:126 +#: templates/base.html:131 msgid "Time to take another coffee?" msgstr "" diff --git a/ishtar_common/management/commands/ishtar_excute_admin_tasks.py b/ishtar_common/management/commands/ishtar_excute_admin_tasks.py new file mode 100644 index 000000000..3fe66ad3b --- /dev/null +++ b/ishtar_common/management/commands/ishtar_excute_admin_tasks.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +from django.core.management.base import BaseCommand, CommandError + +from ishtar_common import models + + +class Command(BaseCommand): + help = "./manage.py ishtar_execute_admin_tasks\n\n"\ + "Launch pending administration tasks." + + def handle(self, *args, **options): + for task in models.AdministrationTask.objects.filter(state='S').all(): + task.execute() diff --git a/ishtar_common/migrations/0077_auto__add_administrationscript__add_administrationtask.py b/ishtar_common/migrations/0077_auto__add_administrationscript__add_administrationtask.py new file mode 100644 index 000000000..b6f2680e6 --- /dev/null +++ b/ishtar_common/migrations/0077_auto__add_administrationscript__add_administrationtask.py @@ -0,0 +1,530 @@ +# -*- coding: utf-8 -*- +import datetime +from south.db import db +from south.v2 import SchemaMigration +from django.db import models + + +class Migration(SchemaMigration): + + def forwards(self, orm): + # Adding model 'AdministrationScript' + db.create_table('ishtar_common_administrationscript', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('path', self.gf('django.db.models.fields.CharField')(max_length=30)), + ('name', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + )) + db.send_create_signal('ishtar_common', ['AdministrationScript']) + + # Adding model 'AdministrationTask' + db.create_table('ishtar_common_administrationtask', ( + ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('script', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.AdministrationScript'])), + ('state', self.gf('django.db.models.fields.CharField')(default='S', max_length=2)), + ('creation_date', self.gf('django.db.models.fields.DateTimeField')(default=datetime.datetime.now)), + ('launch_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), + ('finished_date', self.gf('django.db.models.fields.DateTimeField')(null=True, blank=True)), + ('result', self.gf('django.db.models.fields.TextField')(null=True, blank=True)), + )) + db.send_create_signal('ishtar_common', ['AdministrationTask']) + + + def backwards(self, orm): + # Deleting model 'AdministrationScript' + db.delete_table('ishtar_common_administrationscript') + + # Deleting model 'AdministrationTask' + db.delete_table('ishtar_common_administrationtask') + + + models = { + 'auth.group': { + 'Meta': {'object_name': 'Group'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '80'}), + 'permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}) + }, + 'auth.permission': { + 'Meta': {'ordering': "('content_type__app_label', 'content_type__model', 'codename')", 'unique_together': "(('content_type', 'codename'),)", 'object_name': 'Permission'}, + 'codename': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '50'}) + }, + 'auth.user': { + 'Meta': {'object_name': 'User'}, + 'date_joined': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}), + 'first_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Group']", 'symmetrical': 'False', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'is_staff': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'is_superuser': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'last_login': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'last_name': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}), + 'password': ('django.db.models.fields.CharField', [], {'max_length': '128'}), + 'user_permissions': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['auth.Permission']", 'symmetrical': 'False', 'blank': 'True'}), + 'username': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '30'}) + }, + 'contenttypes.contenttype': { + 'Meta': {'ordering': "('name',)", 'unique_together': "(('app_label', 'model'),)", 'object_name': 'ContentType', 'db_table': "'django_content_type'"}, + 'app_label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'model': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}) + }, + 'ishtar_common.administrationscript': { + 'Meta': {'ordering': "['name']", 'object_name': 'AdministrationScript'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'path': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.administrationtask': { + 'Meta': {'ordering': "['script']", 'object_name': 'AdministrationTask'}, + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), + 'finished_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'launch_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'result': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'script': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AdministrationScript']"}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'S'", 'max_length': '2'}) + }, + 'ishtar_common.arrondissement': { + 'Meta': {'object_name': 'Arrondissement'}, + 'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.author': { + 'Meta': {'ordering': "('author_type__order', 'person__name')", 'object_name': 'Author'}, + 'author_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.AuthorType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'author'", 'to': "orm['ishtar_common.Person']"}) + }, + 'ishtar_common.authortype': { + 'Meta': {'ordering': "['order', 'label']", 'object_name': 'AuthorType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.canton': { + 'Meta': {'object_name': 'Canton'}, + 'arrondissement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Arrondissement']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '30'}) + }, + 'ishtar_common.department': { + 'Meta': {'ordering': "['number']", 'object_name': 'Department'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}), + 'state': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.State']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.documenttemplate': { + 'Meta': {'ordering': "['associated_object_name', 'name']", 'object_name': 'DocumentTemplate'}, + 'associated_object_name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'template': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}) + }, + 'ishtar_common.format': { + 'Meta': {'ordering': "['label']", 'object_name': 'Format'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.formatertype': { + 'Meta': {'ordering': "('formater_type', 'options')", 'unique_together': "(('formater_type', 'options', 'many_split'),)", 'object_name': 'FormaterType'}, + 'formater_type': ('django.db.models.fields.CharField', [], {'max_length': '20'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'many_split': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'options': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.globalvar': { + 'Meta': {'ordering': "['slug']", 'object_name': 'GlobalVar'}, + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalorganization': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOrganization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.historicalperson': { + 'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalPerson'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'attached_to_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}), + 'history_id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'history_modifier_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'history_type': ('django.db.models.fields.CharField', [], {'max_length': '1'}), + 'history_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['auth.User']", 'null': 'True'}), + 'id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'blank': 'True'}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.import': { + 'Meta': {'object_name': 'Import'}, + 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}), + 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}), + 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}), + 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '220'}), + 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '220', 'null': 'True', 'blank': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.ImporterType']"}), + 'match_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}), + 'seconds_remaining': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), + 'skip_lines': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'state': ('django.db.models.fields.CharField', [], {'default': "'C'", 'max_length': '2'}), + 'user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']"}) + }, + 'ishtar_common.importercolumn': { + 'Meta': {'ordering': "('importer_type', 'col_number')", 'unique_together': "(('importer_type', 'col_number'),)", 'object_name': 'ImporterColumn'}, + 'col_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'export_field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'columns'", 'to': "orm['ishtar_common.ImporterType']"}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'regexp_pre_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'required': ('django.db.models.fields.BooleanField', [], {'default': 'False'}) + }, + 'ishtar_common.importerdefault': { + 'Meta': {'object_name': 'ImporterDefault'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'defaults'", 'to': "orm['ishtar_common.ImporterType']"}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerdefaultvalues': { + 'Meta': {'object_name': 'ImporterDefaultValues'}, + 'default_target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'default_values'", 'to': "orm['ishtar_common.ImporterDefault']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'value': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.importerduplicatefield': { + 'Meta': {'object_name': 'ImporterDuplicateField'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'duplicate_fields'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'field_name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}) + }, + 'ishtar_common.importermodel': { + 'Meta': {'ordering': "('name',)", 'object_name': 'ImporterModel'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'klass': ('django.db.models.fields.CharField', [], {'max_length': '200'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200'}) + }, + 'ishtar_common.importertype': { + 'Meta': {'ordering': "('name',)", 'object_name': 'ImporterType'}, + 'associated_models': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.ImporterModel']"}), + 'created_models': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.ImporterModel']"}), + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_template': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'slug': ('django.db.models.fields.SlugField', [], {'max_length': '100', 'unique': 'True', 'null': 'True', 'blank': 'True'}), + 'unicity_keys': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'users': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.importtarget': { + 'Meta': {'object_name': 'ImportTarget'}, + 'column': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'targets'", 'to': "orm['ishtar_common.ImporterColumn']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'concat': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'concat_str': ('django.db.models.fields.CharField', [], {'max_length': '5', 'null': 'True', 'blank': 'True'}), + 'force_new': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'formater_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.FormaterType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'regexp_filter': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Regexp']", 'null': 'True', 'blank': 'True'}), + 'target': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.ishtarsiteprofile': { + 'Meta': {'ordering': "['label']", 'object_name': 'IshtarSiteProfile'}, + 'active': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'base_color': ('django.db.models.fields.CharField', [], {'default': "'rgba(0, 0, 0, 0)'", 'max_length': '200'}), + 'base_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}), + 'container_external_id': ('django.db.models.fields.TextField', [], {'default': "'{responsible__external_id}-{index}'"}), + 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'context_record_color': ('django.db.models.fields.CharField', [], {'default': "'rgba(210,200,0,0.2)'", 'max_length': '200'}), + 'context_record_external_id': ('django.db.models.fields.TextField', [], {'default': "'{parcel__external_id}-{label}'"}), + 'currency': ('django.db.models.fields.CharField', [], {'default': "u'\\u20ac'", 'max_length': "'5'"}), + 'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'file_external_id': ('django.db.models.fields.TextField', [], {'default': "'{year}-{numeric_reference}'"}), + 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'files_color': ('django.db.models.fields.CharField', [], {'default': "'rgba(0, 32, 210, 0.1)'", 'max_length': '200'}), + 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'find_color': ('django.db.models.fields.CharField', [], {'default': "'rgba(210,0,0,0.15)'", 'max_length': '200'}), + 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}), + 'find_index': ('django.db.models.fields.CharField', [], {'default': "'O'", 'max_length': '2'}), + 'homepage': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.TextField', [], {}), + 'mapping': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'mapping_color': ('django.db.models.fields.CharField', [], {'default': "'rgba(72, 236, 0, 0.15)'", 'max_length': '200'}), + 'parcel_external_id': ('django.db.models.fields.TextField', [], {'default': "'{associated_file__external_id}{operation__code_patriarche}-{town__numero_insee}-{section}{parcel_number}'"}), + 'person_raw_name': ('django.db.models.fields.TextField', [], {'default': "'{name|upper} {surname}'"}), + 'slug': ('django.db.models.fields.SlugField', [], {'unique': 'True', 'max_length': '50'}), + 'warehouse': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'warehouse_color': ('django.db.models.fields.CharField', [], {'default': "'rgba(10,20,200,0.15)'", 'max_length': '200'}), + 'warehouse_external_id': ('django.db.models.fields.TextField', [], {'default': "'{name|slug}'"}) + }, + 'ishtar_common.ishtaruser': { + 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']}, + 'advanced_shortcut_menu': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'person': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'ishtaruser'", 'unique': 'True', 'to': "orm['ishtar_common.Person']"}), + 'user_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': "orm['auth.User']", 'unique': 'True', 'primary_key': 'True'}) + }, + 'ishtar_common.itemkey': { + 'Meta': {'object_name': 'ItemKey'}, + 'content_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['contenttypes.ContentType']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'importer': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'key': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'object_id': ('django.db.models.fields.PositiveIntegerField', [], {}) + }, + 'ishtar_common.operationtype': { + 'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), + 'preventive': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.organization': { + 'Meta': {'object_name': 'Organization'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_organization'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Organization']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '500'}), + 'organization_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.OrganizationType']"}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.organizationtype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'OrganizationType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.person': { + 'Meta': {'object_name': 'Person'}, + 'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_complement': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'alt_address_is_prefered': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'alt_country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'alt_postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'alt_town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}), + 'archived': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', 'null': 'True', 'blank': 'True'}), + 'attached_to': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'members'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'contact_type': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'country': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), + 'email': ('django.db.models.fields.EmailField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'history_modifier': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_person'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'merge_candidate': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_candidate_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_exclusion': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'merge_exclusion_rel_+'", 'null': 'True', 'to': "orm['ishtar_common.Person']"}), + 'merge_key': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'old_title': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), + 'person_types': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.PersonType']", 'symmetrical': 'False'}), + 'phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone2': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone3': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), + 'phone_desc': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc2': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'phone_desc3': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), + 'raw_name': ('django.db.models.fields.CharField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), + 'raw_phone': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), + 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}), + 'title': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}), + 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.persontype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.regexp': { + 'Meta': {'object_name': 'Regexp'}, + 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'}) + }, + 'ishtar_common.sourcetype': { + 'Meta': {'ordering': "['label']", 'object_name': 'SourceType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.spatialreferencesystem': { + 'Meta': {'ordering': "('label',)", 'object_name': 'SpatialReferenceSystem'}, + 'auth_name': ('django.db.models.fields.CharField', [], {'default': "'EPSG'", 'max_length': '256'}), + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'order': ('django.db.models.fields.IntegerField', [], {'default': '10'}), + 'srid': ('django.db.models.fields.IntegerField', [], {}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.state': { + 'Meta': {'ordering': "['number']", 'object_name': 'State'}, + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '30'}), + 'number': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3'}) + }, + 'ishtar_common.supporttype': { + 'Meta': {'object_name': 'SupportType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.targetkey': { + 'Meta': {'unique_together': "(('target', 'key', 'associated_user', 'associated_import'),)", 'object_name': 'TargetKey'}, + 'associated_import': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Import']", 'null': 'True', 'blank': 'True'}), + 'associated_user': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.IshtarUser']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'is_set': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), + 'key': ('django.db.models.fields.TextField', [], {}), + 'target': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'keys'", 'to': "orm['ishtar_common.ImportTarget']"}), + 'value': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}) + }, + 'ishtar_common.titletype': { + 'Meta': {'ordering': "('label',)", 'object_name': 'TitleType'}, + 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), + 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) + }, + 'ishtar_common.town': { + 'Meta': {'ordering': "['numero_insee']", 'object_name': 'Town'}, + 'canton': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Canton']", 'null': 'True', 'blank': 'True'}), + 'center': ('django.contrib.gis.db.models.fields.PointField', [], {'srid': '27572', 'null': 'True', 'blank': 'True'}), + 'departement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), + 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), + 'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_ishtar_common_town'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), + 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}), + 'numero_insee': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '6'}), + 'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) + } + } + + complete_apps = ['ishtar_common']
\ No newline at end of file diff --git a/ishtar_common/models.py b/ishtar_common/models.py index 5095619e0..59d1f9ebc 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1,6 +1,6 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -# Copyright (C) 2010-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet> +# Copyright (C) 2010-2017 É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 @@ -28,8 +28,10 @@ from PIL import Image from importlib import import_module import logging import os +from os.path import isfile, join import re import shutil +from subprocess import Popen, PIPE import tempfile import unicodecsv import zipfile @@ -3161,3 +3163,123 @@ class SpatialReferenceSystem(GeneralType): ordering = ('label',) post_save.connect(post_save_cache, sender=SpatialReferenceSystem) post_delete.connect(post_save_cache, sender=SpatialReferenceSystem) + + +class AdministrationScript(models.Model): + path = models.CharField(_(u"Filename"), max_length=30) + name = models.TextField(_(u"Name"), + null=True, blank=True) + + class Meta: + verbose_name = _(u"Administration script") + verbose_name_plural = _(u"Administration scripts") + ordering = ['name'] + + def __unicode__(self): + return unicode(self.name) + + +SCRIPT_STATE = (("S", _(u"Scheduled")), + ("P", _(u"In progress")), + ("FE", _(u"Finished with errors")), + ("F", _(u"Finished")), + ) + +SCRIPT_STATE_DCT = dict(SCRIPT_STATE) + + +class AdministrationTask(models.Model): + script = models.ForeignKey(AdministrationScript) + state = models.CharField(_(u"State"), max_length=2, choices=SCRIPT_STATE, + default='S') + creation_date = models.DateTimeField(default=datetime.datetime.now) + launch_date = models.DateTimeField(null=True, blank=True) + finished_date = models.DateTimeField(null=True, blank=True) + result = models.TextField(_(u"Result"), null=True, blank=True) + + class Meta: + verbose_name = _(u"Administration task") + verbose_name_plural = _(u"Administration tasks") + ordering = ['script'] + + def __unicode__(self): + state = _(u"Unknown") + if self.state in SCRIPT_STATE_DCT: + state = unicode(SCRIPT_STATE_DCT[self.state]) + return u"{} - {} - {}".format(self.script, self.creation_date, + state) + + def execute(self): + if self.state != 'S': + return + self.launch_date = datetime.datetime.now() + + script_dir = settings.ISHTAR_SCRIPT_DIR + + if not script_dir: + self.result = unicode( + _(u"ISHTAR_SCRIPT_DIR is not set in your " + u"local_settings. Contact your administrator.")) + self.state = 'FE' + self.finished_date = datetime.datetime.now() + self.save() + return + + if '..' in script_dir: + self.result = unicode( + _(u"Your ISHTAR_SCRIPT_DIR is containing " + u"dots \"..\". As it can refer to relative " + u"paths, it can be a security issue and this is " + u"not allowed. Only put a full path.")) + self.state = 'FE' + self.finished_date = datetime.datetime.now() + self.save() + return + + if not os.path.isdir(script_dir): + self.result = unicode( + _(u"Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory.") + ).format(script_dir) + self.state = 'FE' + self.finished_date = datetime.datetime.now() + self.save() + return + + script_name = None + # only script inside the script directory can be executed + for name in os.listdir(script_dir): + if name == self.script.path: + if isfile(join(script_dir, name)): + script_name = join(script_dir, name) + break + if not script_name: + self.result = unicode( + _(u"Script \"{}\" is not available in your script directory. " + u"Check your configuration.") + ).format(self.script.path) + self.state = 'FE' + self.finished_date = datetime.datetime.now() + self.save() + return + self.state = 'P' + self.save() + + self.finished_date = datetime.datetime.now() + try: + session = Popen([script_name], stdout=PIPE, stderr=PIPE) + stdout, stderr = session.communicate() + except OSError as e: + self.state = 'FE' + self.result = u"Error executing \"{}\" script: {}".format( + self.script.path, e) + self.save() + return + + self.finished_date = datetime.datetime.now() + if stderr: + self.state = 'FE' + self.result = u"Error: {}".format(stderr) + else: + self.state = 'F' + self.result = u"{}".format(stdout) + self.save() diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index 4e59b0f64..468b6557e 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -1323,6 +1323,12 @@ p.alert{ color:#D14; } +ul.alert{ + background-color: #FF9999; + padding: 0.5em 2em; + text-align: left; +} + p.info-box{ color: #1c94c4; } @@ -1483,6 +1489,10 @@ input.widget-oa{ /* select2 overload */ +.select2-container--default .full-width.select2-selection--multiple .select2-selection__choice{ + float: none; +} + .select2-container-multi .select2-choices .select2-search-field { min-width:233px; } diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html index b20cb1ccb..b142c70c7 100644 --- a/ishtar_common/templates/base.html +++ b/ishtar_common/templates/base.html @@ -109,6 +109,11 @@ </ul> </div> <div id="content"> + {% if warnings %} + <ul class="alert">{% for warning in warnings %} + <li>{{warning}}</li>{% endfor %} + </ul> + {% endif %} {% block content %}{% endblock %} </div> diff --git a/ishtar_common/views.py b/ishtar_common/views.py index f185576ea..0be382866 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -90,8 +90,16 @@ def index(request): """ Main page """ - dct = {} + dct = {'warnings': []} + if settings.PROJECT_SLUG == 'default': + dct['warnings'].append(_( + u"PROJECT_SLUG is set to \"default\" change it in your " + u"local_settings (or ask your admin to do it).")) profile = get_current_profile() + if profile.slug == 'default': + dct['warnings'].append(_( + u"The slug of your current profile is set to \"default\" change it " + u"on the administration page (or ask your admin to do it).")) image = get_random_item_image_link(request) if hasattr(profile, 'homepage') and profile.homepage: dct['homepage'] = markdown(profile.homepage) @@ -454,7 +462,7 @@ def autocomplete_person(request, person_types=None, attached_to=None, own_items = request.user.has_perm('ishtar_common.view_own_person', models.Person) if not all_items and not own_items or not request.GET.get('term'): - return HttpResponse(mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') q = request.GET.get('term') limit = request.GET.get('limit', 20) try: @@ -490,7 +498,7 @@ def autocomplete_person(request, person_types=None, attached_to=None, def autocomplete_department(request): if not request.GET.get('term'): - return HttpResponse(mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') q = request.GET.get('term') q = unicodedata.normalize("NFKD", q).encode('ascii', 'ignore') query = Q() @@ -1325,9 +1333,9 @@ def autocomplete_organization(request, orga_type=None): models.Organization) and not request.user.ishtaruser.has_right( 'person_search', session=request.session)): - return HttpResponse(mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') if not request.GET.get('term'): - return HttpResponse(mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') q = request.GET.get('term') query = Q() for q in q.split(' '): @@ -1351,9 +1359,9 @@ def autocomplete_author(request): if not request.user.has_perm('ishtar_common.view_author', models.Author)\ and not request.user.has_perm('ishtar_common.view_own_author', models.Author): - return HttpResponse(mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') if not request.GET.get('term'): - return HttpResponse(mimetype='text/plain') + return HttpResponse('[]', mimetype='text/plain') q = request.GET.get('term') query = Q() for q in q.split(' '): diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index b0f28a6cf..42a93ddaa 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -58,7 +58,7 @@ class Select2Multiple(forms.SelectMultiple): css = { 'all': ('select2/css/select2.css',) } - js = ['select2/js/select2.min.js'] + js = ['select2/js/select2.full.min.js'] for lang_code, lang in settings.LANGUAGES: js.append('select2/js/i18n/{}.js'.format(lang_code)) media.add_css(css) @@ -82,12 +82,20 @@ class Select2Multiple(forms.SelectMultiple): self.remote = None if not choices and not self.remote and self.model: choices = self.get_choices() + new_attrs = self.attrs.copy() + new_attrs.update(attrs) + attrs = new_attrs klass = attrs and attrs.get('class') or '' klass += ' ' if klass else '' + 'js-select2' if not attrs: attrs = {} attrs['class'] = klass - attrs['style'] = "width: 370px" + if 'style' not in attrs: + if attrs.get('full-width', None): + attrs['style'] = "width: 100%" + else: + attrs['style'] = "width: 370px" + options = "" if self.remote: options = """{ @@ -120,6 +128,12 @@ class Select2Multiple(forms.SelectMultiple): except (self.model.DoesNotExist, ValueError): # an old reference? it should not happen pass + if attrs.get('full-width', None): + if options: + options = options[:-1] + ", " + else: + options = "{" + options += " containerCssClass: 'full-width'}" html = super(Select2Multiple, self).render(name, value, attrs, choices) html += """<script type="text/javascript"> diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po index 900a7339c..cdb643867 100644 --- a/translations/de/ishtar_common.po +++ b/translations/de/ishtar_common.po @@ -179,12 +179,12 @@ msgstr "" msgid "Add a new item" msgstr "" -#: forms.py:297 models.py:1556 +#: forms.py:297 models.py:1558 msgid "Template" msgstr "" #: forms_common.py:41 forms_common.py:59 forms_common.py:184 -#: forms_common.py:408 models.py:1622 models.py:3085 +#: forms_common.py:408 models.py:1624 models.py:3087 #: templates/blocks/JQueryAdvancedTown.html:19 #: templates/ishtar/sheet_organization.html:13 msgid "Town" @@ -200,8 +200,8 @@ msgid "" "french town Saint-Denis in the Seine-Saint-Denis department.</p>" msgstr "" -#: forms_common.py:68 forms_common.py:863 ishtar_menu.py:47 models.py:2685 -#: models.py:2878 models.py:2940 templates/ishtar/sheet_person.html:4 +#: forms_common.py:68 forms_common.py:863 ishtar_menu.py:47 models.py:2687 +#: models.py:2880 models.py:2942 templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "" @@ -212,64 +212,65 @@ msgid "" msgstr "" #: forms_common.py:172 forms_common.py:329 forms_common.py:453 -#: ishtar_menu.py:75 models.py:2568 models.py:2659 +#: ishtar_menu.py:75 models.py:2570 models.py:2661 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "" #: forms_common.py:175 forms_common.py:212 forms_common.py:324 -#: forms_common.py:378 forms_common.py:448 models.py:1159 models.py:1555 -#: models.py:1824 models.py:1840 models.py:2078 models.py:2356 models.py:2562 -#: models.py:2671 models.py:3071 templates/ishtar/import_list.html:13 +#: forms_common.py:378 forms_common.py:448 models.py:1161 models.py:1557 +#: models.py:1826 models.py:1842 models.py:2080 models.py:2358 models.py:2564 +#: models.py:2673 models.py:3073 models.py:3170 +#: templates/ishtar/import_list.html:13 #: templates/ishtar/sheet_organization.html:8 #: templates/ishtar/sheet_organization.html:21 msgid "Name" msgstr "Name" -#: forms_common.py:176 models.py:1777 models.py:2209 +#: forms_common.py:176 models.py:1779 models.py:2211 msgid "Organization type" msgstr "" -#: forms_common.py:178 forms_common.py:402 models.py:1617 +#: forms_common.py:178 forms_common.py:402 models.py:1619 #: templates/ishtar/sheet_organization.html:10 msgid "Address" msgstr "" -#: forms_common.py:180 forms_common.py:405 models.py:1618 +#: forms_common.py:180 forms_common.py:405 models.py:1620 #: templates/ishtar/sheet_organization.html:11 msgid "Address complement" msgstr "" -#: forms_common.py:182 forms_common.py:406 models.py:1620 +#: forms_common.py:182 forms_common.py:406 models.py:1622 #: templates/ishtar/sheet_organization.html:12 msgid "Postal code" msgstr "Postleitzahl" -#: forms_common.py:185 forms_common.py:409 models.py:1623 +#: forms_common.py:185 forms_common.py:409 models.py:1625 msgid "Country" msgstr "" #: forms_common.py:187 forms_common.py:326 forms_common.py:382 -#: forms_common.py:450 forms_common.py:574 models.py:1650 +#: forms_common.py:450 forms_common.py:574 models.py:1652 msgid "Email" msgstr "E-Mail-Adresse" -#: forms_common.py:188 forms_common.py:385 models.py:1635 +#: forms_common.py:188 forms_common.py:385 models.py:1637 #: templates/ishtar/sheet_organization.html:14 #: templates/ishtar/sheet_person.html:21 #: templates/ishtar/wizard/wizard_person.html:17 msgid "Phone" msgstr "" -#: forms_common.py:189 forms_common.py:394 models.py:1647 +#: forms_common.py:189 forms_common.py:394 models.py:1649 #: templates/ishtar/sheet_organization.html:15 #: templates/ishtar/sheet_person.html:39 #: templates/ishtar/wizard/wizard_person.html:35 msgid "Mobile phone" msgstr "" -#: forms_common.py:213 forms_common.py:327 forms_common.py:451 models.py:2247 -#: models.py:2564 models.py:3006 templates/sheet_ope.html:85 +#: forms_common.py:213 forms_common.py:327 forms_common.py:451 models.py:2249 +#: models.py:2566 models.py:3008 templates/sheet_ope.html:85 #: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126 #: templates/ishtar/import_list.html:14 #: templates/ishtar/sheet_organization.html:23 @@ -277,7 +278,7 @@ msgstr "" msgid "Type" msgstr "" -#: forms_common.py:222 views.py:149 +#: forms_common.py:222 views.py:157 msgid "Organization search" msgstr "" @@ -293,12 +294,12 @@ msgstr "" msgid "Organization to merge" msgstr "" -#: forms_common.py:325 forms_common.py:376 forms_common.py:449 models.py:2669 +#: forms_common.py:325 forms_common.py:376 forms_common.py:449 models.py:2671 #: templates/ishtar/sheet_organization.html:22 msgid "Surname" msgstr "" -#: forms_common.py:341 forms_common.py:436 views.py:114 +#: forms_common.py:341 forms_common.py:436 views.py:122 msgid "Person search" msgstr "" @@ -311,25 +312,25 @@ msgstr "" msgid "Identity" msgstr "" -#: forms_common.py:373 forms_common.py:781 forms_common.py:830 models.py:2210 -#: models.py:2663 models.py:2665 models.py:3003 templates/sheet_ope.html:104 +#: forms_common.py:373 forms_common.py:781 forms_common.py:830 models.py:2212 +#: models.py:2665 models.py:2667 models.py:3005 templates/sheet_ope.html:104 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "" -#: forms_common.py:374 models.py:2667 +#: forms_common.py:374 models.py:2669 msgid "Salutation" msgstr "" -#: forms_common.py:380 models.py:2673 +#: forms_common.py:380 models.py:2675 msgid "Raw name" msgstr "" -#: forms_common.py:383 models.py:1636 +#: forms_common.py:383 models.py:1638 msgid "Phone description" msgstr "" -#: forms_common.py:386 models.py:1638 models.py:1640 +#: forms_common.py:386 models.py:1640 models.py:1642 msgid "Phone description 2" msgstr "" @@ -337,11 +338,11 @@ msgstr "" msgid "Phone 2" msgstr "" -#: forms_common.py:390 models.py:1644 +#: forms_common.py:390 models.py:1646 msgid "Phone description 3" msgstr "" -#: forms_common.py:392 models.py:1642 +#: forms_common.py:392 models.py:1644 msgid "Phone 3" msgstr "" @@ -349,23 +350,23 @@ msgstr "" msgid "Current organization" msgstr "" -#: forms_common.py:411 models.py:1625 +#: forms_common.py:411 models.py:1627 msgid "Other address: address" msgstr "" -#: forms_common.py:414 models.py:1628 +#: forms_common.py:414 models.py:1630 msgid "Other address: address complement" msgstr "" -#: forms_common.py:416 models.py:1629 +#: forms_common.py:416 models.py:1631 msgid "Other address: postal code" msgstr "" -#: forms_common.py:418 models.py:1631 +#: forms_common.py:418 models.py:1633 msgid "Other address: town" msgstr "" -#: forms_common.py:420 models.py:1633 +#: forms_common.py:420 models.py:1635 msgid "Other address: country" msgstr "" @@ -381,7 +382,7 @@ msgstr "Benutzername" msgid "Account search" msgstr "" -#: forms_common.py:512 forms_common.py:552 forms_common.py:556 models.py:2616 +#: forms_common.py:512 forms_common.py:552 forms_common.py:556 models.py:2618 msgid "Person type" msgstr "" @@ -413,7 +414,7 @@ msgstr "" msgid "Send the new password by email?" msgstr "" -#: forms_common.py:636 forms_common.py:649 models.py:3086 +#: forms_common.py:636 forms_common.py:649 models.py:3088 msgid "Towns" msgstr "" @@ -429,7 +430,7 @@ msgstr "" msgid "Documentation informations" msgstr "" -#: forms_common.py:783 forms_common.py:831 models.py:2211 models.py:2978 +#: forms_common.py:783 forms_common.py:831 models.py:2213 models.py:2980 msgid "Source type" msgstr "" @@ -441,37 +442,37 @@ msgstr "" msgid "Internal reference" msgstr "" -#: forms_common.py:791 models.py:3017 +#: forms_common.py:791 models.py:3019 msgid "Numerical ressource (web address)" msgstr "" -#: forms_common.py:792 models.py:3019 +#: forms_common.py:792 models.py:3021 msgid "Receipt date" msgstr "" -#: forms_common.py:794 models.py:2382 models.py:3021 +#: forms_common.py:794 models.py:2384 models.py:3023 msgid "Creation date" msgstr "Gründungsdatum" -#: forms_common.py:797 models.py:3024 +#: forms_common.py:797 models.py:3026 msgid "Receipt date in documentation" msgstr "" -#: forms_common.py:799 forms_common.py:835 models.py:419 models.py:746 -#: models.py:2105 models.py:2677 models.py:3031 +#: forms_common.py:799 forms_common.py:835 models.py:421 models.py:748 +#: models.py:2107 models.py:2679 models.py:3033 msgid "Comment" msgstr "" -#: forms_common.py:801 forms_common.py:834 models.py:1161 models.py:1844 -#: models.py:2032 models.py:2079 models.py:3030 templates/sheet_ope.html:128 +#: forms_common.py:801 forms_common.py:834 models.py:1163 models.py:1846 +#: models.py:2034 models.py:2081 models.py:3032 templates/sheet_ope.html:128 msgid "Description" msgstr "Beschreibung" -#: forms_common.py:804 models.py:3032 +#: forms_common.py:804 models.py:3034 msgid "Additional information" msgstr "" -#: forms_common.py:806 forms_common.py:838 models.py:3034 +#: forms_common.py:806 forms_common.py:838 models.py:3036 msgid "Has a duplicate" msgstr "" @@ -486,7 +487,7 @@ msgid "" "p>" msgstr "" -#: forms_common.py:827 forms_common.py:856 forms_common.py:890 models.py:2945 +#: forms_common.py:827 forms_common.py:856 forms_common.py:890 models.py:2947 #: templates/ishtar/wizard/wizard_person_deletion.html:124 msgid "Author" msgstr "" @@ -499,7 +500,7 @@ msgstr "" msgid "Would you like to delete this documentation?" msgstr "" -#: forms_common.py:864 models.py:2212 models.py:2932 models.py:2942 +#: forms_common.py:864 models.py:2214 models.py:2934 models.py:2944 msgid "Author type" msgstr "" @@ -511,7 +512,7 @@ msgstr "" msgid "There are identical authors." msgstr "" -#: forms_common.py:901 models.py:2946 models.py:3013 +#: forms_common.py:901 models.py:2948 models.py:3015 #: templates/sheet_ope.html:106 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" @@ -529,7 +530,7 @@ msgstr "" msgid "Deletion" msgstr "" -#: ishtar_menu.py:39 models.py:1338 views.py:1640 +#: ishtar_menu.py:39 models.py:1340 views.py:1648 msgid "Global variables" msgstr "" @@ -557,296 +558,296 @@ msgstr "" msgid "Manual merge" msgstr "" -#: ishtar_menu.py:109 models.py:2390 +#: ishtar_menu.py:109 models.py:2392 msgid "Imports" msgstr "" -#: ishtar_menu.py:112 views.py:1648 +#: ishtar_menu.py:112 views.py:1656 msgid "New import" msgstr "" -#: ishtar_menu.py:116 views.py:1662 +#: ishtar_menu.py:116 views.py:1670 msgid "Current imports" msgstr "" -#: ishtar_menu.py:120 views.py:1701 +#: ishtar_menu.py:120 views.py:1709 msgid "Old imports" msgstr "" -#: models.py:224 +#: models.py:226 msgid "Not a valid item." msgstr "" -#: models.py:239 +#: models.py:241 msgid "A selected item is not a valid item." msgstr "" -#: models.py:250 +#: models.py:252 msgid "This item already exists." msgstr "" -#: models.py:415 models.py:745 models.py:1590 models.py:1602 models.py:2028 +#: models.py:417 models.py:747 models.py:1592 models.py:1604 models.py:2030 msgid "Label" msgstr "" -#: models.py:417 +#: models.py:419 msgid "Textual ID" msgstr "" -#: models.py:420 models.py:748 models.py:1559 +#: models.py:422 models.py:750 models.py:1561 msgid "Available" msgstr "" -#: models.py:772 models.py:2151 +#: models.py:774 models.py:2153 msgid "Key" msgstr "" -#: models.py:778 +#: models.py:780 msgid "Specific key to an import" msgstr "" -#: models.py:874 +#: models.py:876 msgid "Last editor" msgstr "" -#: models.py:877 +#: models.py:879 msgid "Creator" msgstr "" -#: models.py:1019 models.py:2929 models.py:3097 models.py:3153 +#: models.py:1021 models.py:2931 models.py:3099 models.py:3155 msgid "Order" msgstr "" -#: models.py:1020 +#: models.py:1022 msgid "Symmetrical" msgstr "" -#: models.py:1021 +#: models.py:1023 msgid "Tiny label" msgstr "" -#: models.py:1035 +#: models.py:1037 msgid "Cannot have symmetrical and an inverse_relation" msgstr "" -#: models.py:1151 +#: models.py:1153 msgid "Euro" msgstr "" -#: models.py:1152 +#: models.py:1154 msgid "US dollar" msgstr "" -#: models.py:1153 views.py:1438 views.py:1500 +#: models.py:1155 views.py:1446 views.py:1508 msgid "Operations" msgstr "" -#: models.py:1154 views.py:1440 views.py:1504 +#: models.py:1156 views.py:1448 views.py:1512 msgid "Context records" msgstr "" -#: models.py:1160 models.py:1842 +#: models.py:1162 models.py:1844 msgid "Slug" msgstr "" -#: models.py:1163 +#: models.py:1165 msgid "CSS color code for base module" msgstr "" -#: models.py:1165 +#: models.py:1167 msgid "Files module" msgstr "" -#: models.py:1167 +#: models.py:1169 msgid "CSS color code for files module" msgstr "" -#: models.py:1169 +#: models.py:1171 msgid "Context records module" msgstr "" -#: models.py:1172 +#: models.py:1174 msgid "CSS color code for context record module" msgstr "" -#: models.py:1174 +#: models.py:1176 msgid "Finds module" msgstr "" -#: models.py:1175 +#: models.py:1177 msgid "Need context records module" msgstr "" -#: models.py:1177 +#: models.py:1179 msgid "Find index is based on" msgstr "" -#: models.py:1179 +#: models.py:1181 msgid "" "To prevent irrelevant indexes, change this parameter only if there is no " "find in the database" msgstr "" -#: models.py:1182 +#: models.py:1184 msgid "CSS color code for find module" msgstr "" -#: models.py:1185 +#: models.py:1187 msgid "Warehouses module" msgstr "" -#: models.py:1186 +#: models.py:1188 msgid "Need finds module" msgstr "" -#: models.py:1188 +#: models.py:1190 msgid "CSS code for warehouse module" msgstr "" -#: models.py:1190 +#: models.py:1192 msgid "Mapping module" msgstr "" -#: models.py:1192 +#: models.py:1194 msgid "CSS code for mapping module" msgstr "" -#: models.py:1195 +#: models.py:1197 msgid "Home page" msgstr "" -#: models.py:1196 +#: models.py:1198 #, python-brace-format msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " "markdown syntax. {random_image} can be used to display a random image." msgstr "" -#: models.py:1200 +#: models.py:1202 msgid "File external id" msgstr "" -#: models.py:1202 +#: models.py:1204 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1207 +#: models.py:1209 msgid "Parcel external id" msgstr "" -#: models.py:1210 +#: models.py:1212 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1215 +#: models.py:1217 msgid "Context record external id" msgstr "" -#: models.py:1217 +#: models.py:1219 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1222 +#: models.py:1224 msgid "Base find external id" msgstr "" -#: models.py:1224 +#: models.py:1226 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1229 +#: models.py:1231 msgid "Find external id" msgstr "" -#: models.py:1231 +#: models.py:1233 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1236 +#: models.py:1238 msgid "Container external id" msgstr "" -#: models.py:1238 +#: models.py:1240 msgid "" "Formula to manage container external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1243 +#: models.py:1245 msgid "Warehouse external id" msgstr "" -#: models.py:1245 +#: models.py:1247 msgid "" "Formula to manage warehouse external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " "data can be destructive." msgstr "" -#: models.py:1250 +#: models.py:1252 msgid "Raw name for person" msgstr "" -#: models.py:1252 +#: models.py:1254 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " "be destructive." msgstr "" -#: models.py:1256 +#: models.py:1258 msgid "Current active" msgstr "" -#: models.py:1257 +#: models.py:1259 msgid "Currency" msgstr "" -#: models.py:1261 +#: models.py:1263 msgid "Ishtar site profile" msgstr "" -#: models.py:1262 +#: models.py:1264 msgid "Ishtar site profiles" msgstr "" -#: models.py:1331 +#: models.py:1333 msgid "Variable name" msgstr "" -#: models.py:1332 +#: models.py:1334 msgid "Description of the variable" msgstr "" -#: models.py:1334 models.py:2152 +#: models.py:1336 models.py:2154 msgid "Value" msgstr "" -#: models.py:1337 +#: models.py:1339 msgid "Global variable" msgstr "" -#: models.py:1460 models.py:1490 +#: models.py:1462 models.py:1492 msgid "Total" msgstr "" -#: models.py:1467 models.py:1591 models.py:1603 +#: models.py:1469 models.py:1593 models.py:1605 #: templates/ishtar/sheet_person.html:24 #: templates/ishtar/dashboards/dashboard_main_detail.html:141 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 @@ -854,666 +855,725 @@ msgstr "" msgid "Number" msgstr "" -#: models.py:1554 +#: models.py:1556 msgid "Administrative Act" msgstr "" -#: models.py:1558 +#: models.py:1560 msgid "Associated object" msgstr "" -#: models.py:1562 +#: models.py:1564 msgid "Document template" msgstr "" -#: models.py:1563 +#: models.py:1565 msgid "Document templates" msgstr "" -#: models.py:1594 models.py:1604 models.py:2376 +#: models.py:1596 models.py:1606 models.py:2378 models.py:3193 msgid "State" msgstr "" -#: models.py:1608 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1610 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "" -#: models.py:1609 +#: models.py:1611 msgid "Departments" msgstr "" -#: models.py:1646 +#: models.py:1648 msgid "Raw phone" msgstr "" -#: models.py:1652 +#: models.py:1654 msgid "Alternative address is prefered" msgstr "" -#: models.py:1691 +#: models.py:1693 msgid "Tel: " msgstr "" -#: models.py:1695 +#: models.py:1697 msgid "Mobile: " msgstr "" -#: models.py:1699 +#: models.py:1701 msgid "Email: " msgstr "E-Mail-Adresse:" -#: models.py:1704 +#: models.py:1706 msgid "Merge key" msgstr "" -#: models.py:1778 +#: models.py:1780 msgid "Organization types" msgstr "" -#: models.py:1825 +#: models.py:1827 msgid "Class name" msgstr "" -#: models.py:1828 +#: models.py:1830 msgid "Importer - Model" msgstr "" -#: models.py:1829 +#: models.py:1831 msgid "Importer - Models" msgstr "" -#: models.py:1846 templates/ishtar/dashboards/dashboard_main.html:34 +#: models.py:1848 templates/ishtar/dashboards/dashboard_main.html:34 msgid "Users" msgstr "" -#: models.py:1849 +#: models.py:1851 msgid "Associated model" msgstr "" -#: models.py:1852 +#: models.py:1854 msgid "Models that can accept new items" msgstr "" -#: models.py:1853 +#: models.py:1855 msgid "Leave blank for no restrictions" msgstr "" -#: models.py:1855 +#: models.py:1857 msgid "Is template" msgstr "" -#: models.py:1856 +#: models.py:1858 msgid "Unicity keys (separator \";\")" msgstr "" -#: models.py:1860 +#: models.py:1862 msgid "Importer - Type" msgstr "" -#: models.py:1861 +#: models.py:1863 msgid "Importer - Types" msgstr "" -#: models.py:1960 +#: models.py:1962 msgid "Importer - Default" msgstr "" -#: models.py:1961 +#: models.py:1963 msgid "Importer - Defaults" msgstr "" -#: models.py:1996 +#: models.py:1998 msgid "Importer - Default value" msgstr "" -#: models.py:1997 +#: models.py:1999 msgid "Importer - Default values" msgstr "" -#: models.py:2031 +#: models.py:2033 msgid "Column number" msgstr "" -#: models.py:2034 +#: models.py:2036 msgid "Required" msgstr "" -#: models.py:2036 +#: models.py:2038 msgid "Export field name" msgstr "" -#: models.py:2037 +#: models.py:2039 msgid "" "Fill this field if the field name is ambiguous for export. For instance: " "concatenated fields." msgstr "" -#: models.py:2042 +#: models.py:2044 msgid "Importer - Column" msgstr "" -#: models.py:2043 +#: models.py:2045 msgid "Importer - Columns" msgstr "" -#: models.py:2063 +#: models.py:2065 msgid "Field name" msgstr "" -#: models.py:2065 models.py:2099 +#: models.py:2067 models.py:2101 msgid "Force creation of new items" msgstr "" -#: models.py:2067 models.py:2101 +#: models.py:2069 models.py:2103 msgid "Concatenate with existing" msgstr "" -#: models.py:2069 models.py:2103 +#: models.py:2071 models.py:2105 msgid "Concatenate character" msgstr "" -#: models.py:2073 +#: models.py:2075 msgid "Importer - Duplicate field" msgstr "" -#: models.py:2074 +#: models.py:2076 msgid "Importer - Duplicate fields" msgstr "" -#: models.py:2081 +#: models.py:2083 msgid "Regular expression" msgstr "" -#: models.py:2084 +#: models.py:2086 msgid "Importer - Regular expression" msgstr "" -#: models.py:2085 +#: models.py:2087 msgid "Importer - Regular expressions" msgstr "" -#: models.py:2108 +#: models.py:2110 msgid "Importer - Target" msgstr "" -#: models.py:2109 +#: models.py:2111 msgid "Importer - Targets" msgstr "" -#: models.py:2133 views.py:570 +#: models.py:2135 views.py:578 msgid "True" msgstr "" -#: models.py:2134 views.py:572 +#: models.py:2136 views.py:580 msgid "False" msgstr "" -#: models.py:2153 +#: models.py:2155 msgid "Is set" msgstr "" -#: models.py:2160 +#: models.py:2162 msgid "Importer - Target key" msgstr "" -#: models.py:2161 +#: models.py:2163 msgid "Importer - Targets keys" msgstr "" -#: models.py:2213 models.py:3009 +#: models.py:2215 models.py:3011 msgid "Format" msgstr "" -#: models.py:2214 models.py:3101 +#: models.py:2216 models.py:3103 msgid "Operation type" msgstr "" -#: models.py:2215 +#: models.py:2217 msgid "Period" msgstr "" -#: models.py:2216 +#: models.py:2218 msgid "Report state" msgstr "" -#: models.py:2217 +#: models.py:2219 msgid "Remain type" msgstr "" -#: models.py:2218 +#: models.py:2220 msgid "Unit" msgstr "" -#: models.py:2220 +#: models.py:2222 msgid "Activity type" msgstr "" -#: models.py:2221 +#: models.py:2223 msgid "Material" msgstr "" -#: models.py:2223 +#: models.py:2225 msgid "Conservatory state" msgstr "" -#: models.py:2224 +#: models.py:2226 msgid "Container type" msgstr "" -#: models.py:2225 +#: models.py:2227 msgid "Preservation type" msgstr "" -#: models.py:2226 +#: models.py:2228 msgid "Object type" msgstr "" -#: models.py:2227 +#: models.py:2229 msgid "Integrity type" msgstr "" -#: models.py:2229 +#: models.py:2231 msgid "Remarkability type" msgstr "" -#: models.py:2230 +#: models.py:2232 msgid "Batch type" msgstr "" -#: models.py:2232 +#: models.py:2234 msgid "Identification type" msgstr "" -#: models.py:2234 +#: models.py:2236 msgid "Context record relation type" msgstr "" -#: models.py:2235 models.py:3159 +#: models.py:2237 models.py:3161 msgid "Spatial reference system" msgstr "" -#: models.py:2236 models.py:2987 +#: models.py:2238 models.py:2989 msgid "Support type" msgstr "" -#: models.py:2237 models.py:2628 +#: models.py:2239 models.py:2630 msgid "Title type" msgstr "" -#: models.py:2243 +#: models.py:2245 msgid "Integer" msgstr "" -#: models.py:2244 +#: models.py:2246 msgid "Float" msgstr "" -#: models.py:2245 +#: models.py:2247 msgid "String" msgstr "" -#: models.py:2246 templates/sheet_ope.html:86 +#: models.py:2248 templates/sheet_ope.html:86 msgid "Date" msgstr "" -#: models.py:2248 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:2250 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 #: templates/ishtar/dashboards/dashboard_main_detail.html:126 msgid "Year" msgstr "" -#: models.py:2249 +#: models.py:2251 msgid "String to boolean" msgstr "" -#: models.py:2250 +#: models.py:2252 msgctxt "filesystem" msgid "File" msgstr "" -#: models.py:2251 +#: models.py:2253 msgid "Unknow type" msgstr "" -#: models.py:2267 +#: models.py:2269 msgid "4 digit year. e.g.: \"2015\"" msgstr "" -#: models.py:2268 +#: models.py:2270 msgid "4 digit year/month/day. e.g.: \"2015/02/04\"" msgstr "" -#: models.py:2269 +#: models.py:2271 msgid "Day/month/4 digit year. e.g.: \"04/02/2015\"" msgstr "" -#: models.py:2279 +#: models.py:2281 msgid "Options" msgstr "" -#: models.py:2281 +#: models.py:2283 msgid "Split character(s)" msgstr "" -#: models.py:2285 +#: models.py:2287 msgid "Importer - Formater type" msgstr "" -#: models.py:2286 +#: models.py:2288 msgid "Importer - Formater types" msgstr "" -#: models.py:2338 templates/ishtar/dashboards/dashboard_main_detail.html:63 +#: models.py:2340 templates/ishtar/dashboards/dashboard_main_detail.html:63 msgid "Created" msgstr "" -#: models.py:2339 +#: models.py:2341 msgid "Analyse in progress" msgstr "" -#: models.py:2340 +#: models.py:2342 msgid "Analysed" msgstr "" -#: models.py:2341 +#: models.py:2343 msgid "Import pending" msgstr "" -#: models.py:2342 +#: models.py:2344 msgid "Import in progress" msgstr "" -#: models.py:2343 +#: models.py:2345 models.py:3184 msgid "Finished with errors" msgstr "" -#: models.py:2344 +#: models.py:2346 models.py:3185 msgid "Finished" msgstr "" -#: models.py:2345 +#: models.py:2347 msgid "Archived" msgstr "" -#: models.py:2360 +#: models.py:2362 msgid "Imported file" msgstr "" -#: models.py:2362 +#: models.py:2364 msgid "Associated images (zip file)" msgstr "" -#: models.py:2364 +#: models.py:2366 msgid "Encoding" msgstr "" -#: models.py:2366 +#: models.py:2368 msgid "Skip lines" msgstr "" -#: models.py:2367 templates/ishtar/import_list.html:51 +#: models.py:2369 templates/ishtar/import_list.html:51 msgid "Error file" msgstr "" -#: models.py:2370 +#: models.py:2372 msgid "Result file" msgstr "" -#: models.py:2373 templates/ishtar/import_list.html:57 +#: models.py:2375 templates/ishtar/import_list.html:57 msgid "Match file" msgstr "" -#: models.py:2379 +#: models.py:2381 msgid "Conservative import" msgstr "" -#: models.py:2383 +#: models.py:2385 msgid "End date" msgstr "" -#: models.py:2386 +#: models.py:2388 msgid "Remaining seconds" msgstr "" -#: models.py:2389 +#: models.py:2391 msgid "Import" msgstr "" -#: models.py:2418 +#: models.py:2420 msgid "Analyse" msgstr "" -#: models.py:2420 models.py:2423 +#: models.py:2422 models.py:2425 msgid "Re-analyse" msgstr "" -#: models.py:2421 +#: models.py:2423 msgid "Launch import" msgstr "" -#: models.py:2424 +#: models.py:2426 msgid "Re-import" msgstr "" -#: models.py:2425 +#: models.py:2427 msgid "Archive" msgstr "" -#: models.py:2427 +#: models.py:2429 msgid "Unarchive" msgstr "" -#: models.py:2428 widgets.py:184 templates/ishtar/form_delete.html:11 +#: models.py:2430 widgets.py:198 templates/ishtar/form_delete.html:11 msgid "Delete" msgstr "" -#: models.py:2569 +#: models.py:2571 msgid "Organizations" msgstr "" -#: models.py:2571 +#: models.py:2573 msgid "Can view all Organizations" msgstr "" -#: models.py:2572 +#: models.py:2574 msgid "Can view own Organization" msgstr "" -#: models.py:2573 +#: models.py:2575 msgid "Can add own Organization" msgstr "" -#: models.py:2575 +#: models.py:2577 msgid "Can change own Organization" msgstr "" -#: models.py:2577 +#: models.py:2579 msgid "Can delete own Organization" msgstr "" -#: models.py:2612 +#: models.py:2614 msgid "Groups" msgstr "" -#: models.py:2617 +#: models.py:2619 msgid "Person types" msgstr "" -#: models.py:2629 +#: models.py:2631 msgid "Title types" msgstr "" -#: models.py:2638 +#: models.py:2640 msgid "Mr" msgstr "" -#: models.py:2639 +#: models.py:2641 msgid "Miss" msgstr "" -#: models.py:2640 +#: models.py:2642 msgid "Mr and Mrs" msgstr "" -#: models.py:2641 +#: models.py:2643 msgid "Mrs" msgstr "" -#: models.py:2642 +#: models.py:2644 msgid "Doctor" msgstr "" -#: models.py:2675 +#: models.py:2677 msgid "Contact type" msgstr "" -#: models.py:2678 models.py:2742 +#: models.py:2680 models.py:2744 msgid "Types" msgstr "" -#: models.py:2681 +#: models.py:2683 msgid "Is attached to" msgstr "" -#: models.py:2686 +#: models.py:2688 msgid "Persons" msgstr "" -#: models.py:2688 +#: models.py:2690 msgid "Can view all Persons" msgstr "" -#: models.py:2689 +#: models.py:2691 msgid "Can view own Person" msgstr "" -#: models.py:2690 +#: models.py:2692 msgid "Can add own Person" msgstr "" -#: models.py:2691 +#: models.py:2693 msgid "Can change own Person" msgstr "" -#: models.py:2692 +#: models.py:2694 msgid "Can delete own Person" msgstr "" -#: models.py:2881 +#: models.py:2883 msgid "Advanced shortcut menu" msgstr "" -#: models.py:2884 +#: models.py:2886 msgid "Ishtar user" msgstr "" -#: models.py:2885 +#: models.py:2887 msgid "Ishtar users" msgstr "" -#: models.py:2925 +#: models.py:2927 msgid "To modify the password use the form in Auth > User" msgstr "" -#: models.py:2933 +#: models.py:2935 msgid "Author types" msgstr "" -#: models.py:2950 +#: models.py:2952 msgid "Can view all Authors" msgstr "" -#: models.py:2952 +#: models.py:2954 msgid "Can view own Author" msgstr "" -#: models.py:2954 +#: models.py:2956 msgid "Can add own Author" msgstr "" -#: models.py:2956 +#: models.py:2958 msgid "Can change own Author" msgstr "" -#: models.py:2958 +#: models.py:2960 msgid "Can delete own Author" msgstr "" -#: models.py:2979 +#: models.py:2981 msgid "Source types" msgstr "" -#: models.py:2988 +#: models.py:2990 msgid "Support types" msgstr "" -#: models.py:2995 +#: models.py:2997 msgid "Format type" msgstr "" -#: models.py:2996 +#: models.py:2998 msgid "Format types" msgstr "" -#: models.py:3004 +#: models.py:3006 msgid "External ID" msgstr "" -#: models.py:3007 +#: models.py:3009 msgid "Support" msgstr "" -#: models.py:3011 +#: models.py:3013 msgid "Scale" msgstr "" -#: models.py:3025 +#: models.py:3027 msgid "Item number" msgstr "" -#: models.py:3026 +#: models.py:3028 msgid "Ref." msgstr "" -#: models.py:3029 +#: models.py:3031 msgid "Internal ref." msgstr "" -#: models.py:3072 +#: models.py:3074 msgid "Surface (m2)" msgstr "" -#: models.py:3073 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:3075 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 msgid "Localisation" msgstr "Lokalisierung" -#: models.py:3098 +#: models.py:3100 msgid "Is preventive" msgstr "" -#: models.py:3102 +#: models.py:3104 msgid "Operation types" msgstr "" -#: models.py:3131 +#: models.py:3133 msgid "Preventive" msgstr "" -#: models.py:3132 +#: models.py:3134 msgid "Research" msgstr "" -#: models.py:3155 +#: models.py:3157 msgid "Authority name" msgstr "" -#: models.py:3156 +#: models.py:3158 msgid "Authority SRID" msgstr "" -#: models.py:3160 +#: models.py:3162 msgid "Spatial reference systems" msgstr "" +#: models.py:3169 +msgid "Filename" +msgstr "" + +#: models.py:3174 +msgid "Administration script" +msgstr "" + +#: models.py:3175 +msgid "Administration scripts" +msgstr "" + +#: models.py:3182 +msgid "Scheduled" +msgstr "" + +#: models.py:3183 +msgid "In progress" +msgstr "" + +#: models.py:3198 +msgid "Result" +msgstr "" + +#: models.py:3201 +msgid "Administration task" +msgstr "" + +#: models.py:3202 +msgid "Administration tasks" +msgstr "" + +#: models.py:3206 +msgid "Unknown" +msgstr "" + +#: models.py:3221 +msgid "" +"ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your " +"administrator." +msgstr "" + +#: models.py:3230 +msgid "" +"Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to " +"relative paths, it can be a security issue and this is not allowed. Only put " +"a full path." +msgstr "" + +#: models.py:3241 +msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory." +msgstr "" + +#: models.py:3257 +msgid "" +"Script \"{}\" is not available in your script directory. Check your " +"configuration." +msgstr "" + #: utils.py:100 msgid " (...)" msgstr "" @@ -1522,128 +1582,140 @@ msgstr "" msgid "Load another random image?" msgstr "" -#: views.py:121 -msgid "New person" +#: views.py:96 +msgid "" +"PROJECT_SLUG is set to \"default\" change it in your local_settings (or ask " +"your admin to do it)." +msgstr "" + +#: views.py:101 +msgid "" +"The slug of your current profile is set to \"default\" change it on the " +"administration page (or ask your admin to do it)." msgstr "" #: views.py:129 +msgid "New person" +msgstr "" + +#: views.py:137 msgid "Person modification" msgstr "" -#: views.py:144 +#: views.py:152 msgid "Person deletion" msgstr "" -#: views.py:155 +#: views.py:163 msgid "New organization" msgstr "" -#: views.py:162 +#: views.py:170 msgid "Organization modification" msgstr "" -#: views.py:178 +#: views.py:186 msgid "Organization deletion" msgstr "" -#: views.py:185 +#: views.py:193 msgid "Account management" msgstr "" -#: views.py:191 +#: views.py:199 msgid "Account deletion" msgstr "" -#: views.py:253 +#: views.py:261 msgid "Archaeological file" msgstr "" -#: views.py:254 +#: views.py:262 msgid "Operation" msgstr "" -#: views.py:256 +#: views.py:264 msgid "Context record" msgstr "" -#: views.py:258 +#: views.py:266 msgid "Find" msgstr "" -#: views.py:260 +#: views.py:268 msgid "Treatment request" msgstr "" -#: views.py:261 +#: views.py:269 msgid "Treatment" msgstr "" -#: views.py:1376 views.py:1419 +#: views.py:1384 views.py:1427 msgid "Operation not permitted." msgstr "" -#: views.py:1378 +#: views.py:1386 #, python-format msgid "New %s" msgstr "" -#: views.py:1437 views.py:1496 +#: views.py:1445 views.py:1504 msgid "Archaeological files" msgstr "" -#: views.py:1442 views.py:1507 +#: views.py:1450 views.py:1515 msgid "Finds" msgstr "" -#: views.py:1444 views.py:1512 +#: views.py:1452 views.py:1520 msgid "Treatment requests" msgstr "" -#: views.py:1445 views.py:1518 +#: views.py:1453 views.py:1526 msgid "Treatments" msgstr "" -#: views.py:1715 templates/ishtar/import_list.html:47 +#: views.py:1723 templates/ishtar/import_list.html:47 msgid "Link unmatched items" msgstr "" -#: views.py:1730 +#: views.py:1738 msgid "Delete import" msgstr "" -#: views.py:1769 +#: views.py:1777 msgid "Merge persons" msgstr "" -#: views.py:1793 +#: views.py:1801 msgid "Select the main person" msgstr "" -#: views.py:1802 +#: views.py:1810 msgid "Merge organization" msgstr "" -#: views.py:1812 +#: views.py:1820 msgid "Select the main organization" msgstr "" -#: views.py:1852 views.py:1868 +#: views.py:1860 views.py:1876 msgid "Corporation manager" msgstr "" -#: widgets.py:313 widgets.py:420 widgets.py:535 +#: widgets.py:327 widgets.py:434 widgets.py:549 msgid "Search..." msgstr "" -#: widgets.py:724 templatetags/window_tables.py:96 +#: widgets.py:738 templatetags/window_tables.py:96 msgid "No results" msgstr "" -#: widgets.py:725 templatetags/window_tables.py:97 +#: widgets.py:739 templatetags/window_tables.py:97 msgid "Loading..." msgstr "" -#: widgets.py:726 +#: widgets.py:740 msgid "Remove" msgstr "" @@ -1730,19 +1802,19 @@ msgstr "" msgid ":" msgstr "" -#: templates/base.html:123 +#: templates/base.html:128 msgid "Processing..." msgstr "" -#: templates/base.html:124 +#: templates/base.html:129 msgid "This can be long." msgstr "" -#: templates/base.html:125 +#: templates/base.html:130 msgid "Time to take a coffee?" msgstr "" -#: templates/base.html:126 +#: templates/base.html:131 msgid "Time to take another coffee?" msgstr "" diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index 21d309c9d..ccff86182 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -19,13 +19,13 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n>1;\n" "X-Generator: Zanata 3.9.6\n" -#: forms.py:69 forms.py:371 forms.py:1047 forms.py:1069 forms.py:1073 +#: forms.py:69 forms.py:371 forms.py:1055 forms.py:1077 forms.py:1081 #: models.py:1252 templates/ishtar/sheet_operation.html:153 #: templates/ishtar/blocks/window_tables/parcels.html:10 msgid "Parcels" msgstr "Parcelles" -#: forms.py:72 forms.py:205 forms.py:1023 models.py:1238 +#: forms.py:72 forms.py:205 forms.py:1031 models.py:1238 #: templates/ishtar/blocks/window_tables/parcels.html:7 #: templates/ishtar/dashboards/dashboard_operation.html:432 #: templates/ishtar/dashboards/dashboard_operation.html:446 @@ -34,7 +34,7 @@ msgstr "Parcelles" msgid "Town" msgstr "Commune" -#: forms.py:74 forms.py:481 forms.py:783 forms.py:1293 models.py:276 +#: forms.py:74 forms.py:481 forms.py:781 forms.py:1301 models.py:276 #: models.py:1044 models.py:1236 #: templates/ishtar/blocks/window_tables/parcels.html:8 msgid "Year" @@ -95,7 +95,7 @@ msgstr "Opération" msgid ":" msgstr ": " -#: forms.py:414 forms.py:633 forms.py:1258 +#: forms.py:414 forms.py:633 forms.py:1266 msgid "You should select an operation." msgstr "Vous devez sélectionner une opération." @@ -119,15 +119,15 @@ msgstr "Relations supprimées" msgid "Relations" msgstr "Relations" -#: forms.py:482 forms.py:1264 models.py:277 +#: forms.py:482 forms.py:1272 models.py:277 msgid "Numeric reference" msgstr "Identifiant numérique" -#: forms.py:488 forms.py:1304 +#: forms.py:488 forms.py:1312 msgid "Parcel (section/number/public domain)" msgstr "Parcelle (section/numéro/domaine public)" -#: forms.py:491 forms.py:1307 models.py:848 +#: forms.py:491 forms.py:1315 models.py:848 #: templates/ishtar/dashboards/dashboard_operation.html:390 #: templates/ishtar/dashboards/dashboard_operation.html:411 #: templates/ishtar/dashboards/dashboard_operation.html:643 @@ -136,17 +136,17 @@ msgstr "Parcelle (section/numéro/domaine public)" msgid "Department" msgstr "Département" -#: forms.py:492 forms.py:1135 models.py:86 +#: forms.py:492 forms.py:1143 models.py:86 #: templates/ishtar/sheet_operation.html:22 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8 msgid "Name" msgstr "Nom" -#: forms.py:494 forms.py:779 models.py:338 +#: forms.py:494 forms.py:777 models.py:338 msgid "Address / Locality" msgstr "Adresse / Lieu-dit" -#: forms.py:496 forms.py:700 forms.py:781 forms.py:1270 models.py:284 +#: forms.py:496 forms.py:700 forms.py:779 forms.py:1278 models.py:284 msgid "Operation type" msgstr "Type d'opération" @@ -154,7 +154,7 @@ msgstr "Type d'opération" msgid "Is open?" msgstr "Est ouvert ?" -#: forms.py:506 forms.py:813 models.py:269 +#: forms.py:506 forms.py:811 models.py:269 msgid "In charge" msgstr "Responsable du suivi scientifique" @@ -162,16 +162,16 @@ msgstr "Responsable du suivi scientifique" msgid "Scientist in charge" msgstr "Responsable scientifique" -#: forms.py:515 forms.py:702 forms.py:803 models.py:267 +#: forms.py:515 forms.py:702 forms.py:801 models.py:267 msgid "Operator" msgstr "Opérateur" -#: forms.py:524 forms.py:1140 models.py:90 models.py:286 +#: forms.py:524 forms.py:1148 models.py:90 models.py:286 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10 msgid "Remains" msgstr "Vestiges" -#: forms.py:525 forms.py:1118 forms.py:1137 models.py:88 models.py:292 +#: forms.py:525 forms.py:1126 forms.py:1145 models.py:88 models.py:292 #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9 msgid "Periods" msgstr "Périodes" @@ -196,7 +196,7 @@ msgstr "Terminé après" msgid "Search within relations" msgstr "Rechercher parmi les relations" -#: forms.py:537 forms.py:867 +#: forms.py:537 forms.py:863 msgid "Comment" msgstr "Commentaire" @@ -204,31 +204,31 @@ msgstr "Commentaire" msgid "Abstract (full text search)" msgstr "Résumé (recherche texte intégral)" -#: forms.py:540 forms.py:870 models.py:341 +#: forms.py:540 forms.py:866 models.py:341 msgid "Comment about scientific documentation" msgstr "Commentaire concernant la documentation scientifique" -#: forms.py:541 forms.py:872 models.py:353 +#: forms.py:541 forms.py:868 models.py:353 msgid "Record quality" msgstr "Qualité d'enregistrement" -#: forms.py:542 forms.py:837 models.py:304 +#: forms.py:542 forms.py:833 models.py:304 msgid "Report processing" msgstr "Traitement du rapport" -#: forms.py:544 forms.py:875 models.py:348 +#: forms.py:544 forms.py:871 models.py:348 msgid "Virtual operation" msgstr "Opération virtuelle" -#: forms.py:546 forms.py:1180 forms.py:1184 models.py:94 +#: forms.py:546 forms.py:1188 forms.py:1192 models.py:94 msgid "Archaeological site" msgstr "Entité archéologique" -#: forms.py:552 forms.py:1311 +#: forms.py:552 forms.py:1319 msgid "Created by" msgstr "Créé par" -#: forms.py:558 forms.py:1317 +#: forms.py:558 forms.py:1325 msgid "Modified by" msgstr "Modifié par" @@ -240,7 +240,7 @@ msgstr "Date limite de rendu de la documentation avant" msgid "Documentation deadline after" msgstr "Date limite de rendu de la documentation après" -#: forms.py:569 forms.py:860 models.py:360 +#: forms.py:569 forms.py:856 models.py:360 msgid "Documentation received" msgstr "Documentation reçue" @@ -252,11 +252,11 @@ msgstr "Date limite de rendu du mobilier avant" msgid "Finds deadline after" msgstr "Date limite de rendu du mobilier après" -#: forms.py:575 forms.py:865 models.py:364 +#: forms.py:575 forms.py:861 models.py:364 msgid "Finds received" msgstr "Mobilier reçu" -#: forms.py:620 forms.py:1256 views.py:168 +#: forms.py:620 forms.py:1264 views.py:168 msgid "Operation search" msgstr "Rechercher une opération" @@ -264,7 +264,7 @@ msgstr "Rechercher une opération" msgid "Associated file" msgstr "Dossier associé" -#: forms.py:668 forms.py:971 models.py:520 models.py:921 models.py:1031 +#: forms.py:668 forms.py:967 models.py:520 models.py:921 models.py:1031 #: wizards.py:80 msgid "Archaeological file" msgstr "Dossier archéologique" @@ -333,60 +333,56 @@ msgstr "Avec un rapport" msgid "With finds" msgstr "Avec du mobilier" -#: forms.py:761 forms.py:1365 templates/ishtar/sheet_administrativeact.html:20 +#: forms.py:761 forms.py:1373 templates/ishtar/sheet_administrativeact.html:20 #: templates/ishtar/sheet_operation.html:26 msgid "General" msgstr "Général" -#: forms.py:777 models.py:337 +#: forms.py:775 models.py:337 msgid "Generic name" msgstr "Nom générique" -#: forms.py:788 models.py:306 +#: forms.py:786 models.py:306 msgid "Old code" msgstr "Ancien code" -#: forms.py:791 +#: forms.py:789 msgid "Head scientist" msgstr "Responsable scientifique" -#: forms.py:810 models.py:336 +#: forms.py:808 models.py:336 msgid "Operator reference" msgstr "Référence de l'opérateur" -#: forms.py:823 models.py:273 -msgid "Collaborators" -msgstr "Collaborateurs" - -#: forms.py:826 +#: forms.py:822 msgid "Total surface (m2)" msgstr "Surface totale (m2)" -#: forms.py:830 models.py:54 models.py:256 models.py:1448 +#: forms.py:826 models.py:54 models.py:256 models.py:1448 msgid "Start date" msgstr "Date de début" -#: forms.py:832 models.py:258 +#: forms.py:828 models.py:258 msgid "Excavation end date" msgstr "Date de fin de chantier" -#: forms.py:835 models.py:259 +#: forms.py:831 models.py:259 msgid "Report delivery date" msgstr "Date de livraison du rapport" -#: forms.py:857 models.py:357 +#: forms.py:853 models.py:357 msgid "Deadline for submission of the documentation" msgstr "Date limite de rendu de la documentation" -#: forms.py:862 models.py:362 +#: forms.py:858 models.py:362 msgid "Deadline for submission of the finds" msgstr "Date limite de rendu du mobilier" -#: forms.py:877 +#: forms.py:873 msgid "Image" msgstr "Image" -#: forms.py:878 +#: forms.py:874 #, python-format msgid "" "<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</" @@ -395,19 +391,19 @@ msgstr "" "<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le " "ratio est conservé).</p>" -#: forms.py:924 +#: forms.py:920 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:929 +#: forms.py:925 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:957 +#: forms.py:953 #, python-format msgid "" "Operation code already exists for year: %(year)d - use a value bigger than " @@ -416,106 +412,110 @@ 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:961 +#: forms.py:957 msgid "Bad operation code" msgstr "Mauvais code d'opération" -#: forms.py:967 models.py:535 models.py:877 +#: forms.py:963 models.py:535 models.py:877 msgid "Operation code" msgstr "Code de l'opération" -#: forms.py:993 +#: forms.py:989 forms.py:993 models.py:273 +msgid "Collaborators" +msgstr "Collaborateurs" + +#: forms.py:1001 msgid "Preventive informations - excavation" msgstr "Information archéologie préventive - fouille" -#: forms.py:994 models.py:290 +#: forms.py:1002 models.py:290 #: templates/ishtar/dashboards/dashboard_operation.html:701 msgid "Cost (euros)" msgstr "Coût (euros)" -#: forms.py:995 models.py:295 +#: forms.py:1003 models.py:295 msgid "Scheduled man-days" msgstr "Jours-hommes prévus" -#: forms.py:997 models.py:298 +#: forms.py:1005 models.py:298 msgid "Optional man-days" msgstr "Jours-hommes optionnels" -#: forms.py:999 models.py:301 +#: forms.py:1007 models.py:301 msgid "Effective man-days" msgstr "Jours-hommes effectifs" -#: forms.py:1009 +#: forms.py:1017 msgid "Preventive informations - diagnostic" msgstr "Information archéologie préventive - diagnostic" -#: forms.py:1012 models.py:320 +#: forms.py:1020 models.py:320 msgid "Prescription on zoning" msgstr "Prescription sur zonage" -#: forms.py:1014 models.py:323 +#: forms.py:1022 models.py:323 msgid "Prescription on large area" msgstr "Prescription sur une vaste surface" -#: forms.py:1017 models.py:325 +#: forms.py:1025 models.py:325 msgid "Prescription on geoarchaeological context" msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:1021 forms.py:1043 models.py:288 models.py:1054 +#: forms.py:1029 forms.py:1051 models.py:288 models.py:1054 msgid "Towns" msgstr "Communes" -#: forms.py:1050 models.py:1251 models.py:1446 +#: forms.py:1058 models.py:1251 models.py:1446 msgid "Parcel" msgstr "Parcelle" -#: forms.py:1102 models.py:46 +#: forms.py:1110 models.py:46 msgid "Remain types" msgstr "Types de vestige" -#: forms.py:1106 models.py:45 +#: forms.py:1114 models.py:45 msgid "Remain type" msgstr "Type de vestige" -#: forms.py:1122 templates/ishtar/sheet_operation.html:173 +#: forms.py:1130 templates/ishtar/sheet_operation.html:173 #: templates/ishtar/sheet_operation.html:204 msgid "Period" msgstr "Période" -#: forms.py:1134 models.py:85 +#: forms.py:1142 models.py:85 msgid "Reference" msgstr "Référence" -#: forms.py:1163 +#: forms.py:1171 msgid "This reference already exists." msgstr "Cette référence existe déjà." -#: forms.py:1195 models.py:95 models.py:345 +#: forms.py:1203 models.py:95 models.py:345 #: templates/ishtar/sheet_operation.html:97 msgid "Archaeological sites" msgstr "Entités archéologiques" -#: forms.py:1199 +#: forms.py:1207 msgid "Associated archaeological sites" msgstr "Entités archéologiques associées" -#: forms.py:1205 ishtar_menu.py:34 ishtar_menu.py:64 ishtar_menu.py:93 +#: forms.py:1213 ishtar_menu.py:34 ishtar_menu.py:64 ishtar_menu.py:93 msgid "Search" msgstr "Recherche" -#: forms.py:1210 +#: forms.py:1218 msgid "Would you like to close this operation?" msgstr "Voulez-vous clore cette opération ?" -#: forms.py:1215 +#: forms.py:1223 msgid "Would you like to delete this operation?" msgstr "Voulez-vous supprimer cette opération ?" -#: forms.py:1224 forms.py:1294 forms.py:1430 models.py:884 models.py:1011 +#: forms.py:1232 forms.py:1302 forms.py:1438 models.py:884 models.py:1011 msgid "Index" msgstr "Index" -#: forms.py:1250 +#: forms.py:1258 #, python-format msgid "" "Index already exists for operation: %(operation)s - use a value bigger than " @@ -524,48 +524,48 @@ msgstr "" "Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur " "plus grande que %(last_val)d" -#: forms.py:1262 +#: forms.py:1270 msgid "Operation's year" msgstr "Année de l'opération" -#: forms.py:1269 +#: forms.py:1277 msgid "Operation's town" msgstr "Commune de l'opération" -#: forms.py:1282 +#: forms.py:1290 msgid "Documentation search" msgstr "Rechercher une documentation" -#: forms.py:1284 +#: forms.py:1292 msgid "You should select a document." msgstr "Vous devez sélectionner un document." -#: forms.py:1301 forms.py:1368 models.py:935 models.py:1005 +#: forms.py:1309 forms.py:1376 models.py:935 models.py:1005 msgid "Act type" msgstr "Type d'acte" -#: forms.py:1302 forms.py:1500 +#: forms.py:1310 forms.py:1508 msgid "Indexed?" msgstr "Indexé ?" -#: forms.py:1308 forms.py:1373 models.py:1045 +#: forms.py:1316 forms.py:1381 models.py:1045 #: templates/ishtar/blocks/window_tables/administrativacts.html:10 msgid "Object" msgstr "Objet" -#: forms.py:1345 views.py:348 +#: forms.py:1353 views.py:350 msgid "Administrative act search" msgstr "Rechercher un acte administratif" -#: forms.py:1360 forms.py:1458 forms.py:1525 +#: forms.py:1368 forms.py:1466 forms.py:1533 msgid "You should select an administrative act." msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1376 models.py:1042 +#: forms.py:1384 models.py:1042 msgid "Signature date" msgstr "Date de signature" -#: forms.py:1418 +#: forms.py:1426 #, python-format msgid "" "This index already exists for year: %(year)d - use a value bigger than " @@ -574,31 +574,31 @@ msgstr "" "Cet index existe déjà pour l'année : %(year)d, utilisez une valeur plus " "grande que %(last_val)d" -#: forms.py:1422 +#: forms.py:1430 msgid "Bad index" msgstr "Mauvais index" -#: forms.py:1435 +#: forms.py:1443 msgid "Would you like to delete this administrative act?" msgstr "Voulez-vous supprimer cet acte administratif ?" -#: forms.py:1440 +#: forms.py:1448 msgid "Template" msgstr "Patron" -#: forms.py:1464 forms.py:1468 +#: forms.py:1472 forms.py:1476 msgid "This document is not intended for this type of act." msgstr "Ce document n'est pas destiné à ce type d'acte." -#: forms.py:1486 +#: forms.py:1494 msgid "Doc generation" msgstr "Génération de document" -#: forms.py:1488 +#: forms.py:1496 msgid "Generate the associated doc?" msgstr "Générer le document associé ?" -#: forms.py:1509 ishtar_menu.py:123 views.py:401 +#: forms.py:1517 ishtar_menu.py:123 views.py:403 msgctxt "admin act register" msgid "Register" msgstr "Registre" @@ -1081,47 +1081,47 @@ msgstr "Type d'opération - ancien" msgid "Operation types old" msgstr "Types d'opération - ancien" -#: views.py:223 +#: views.py:224 msgid "New operation" msgstr "Ajouter une opération" -#: views.py:267 +#: views.py:269 msgid "Operation modification" msgstr "Modifier une opération" -#: views.py:295 +#: views.py:297 msgid "Operation closing" msgstr "Clôturer une opération" -#: views.py:306 +#: views.py:308 msgid "Operation deletion" msgstr "Supprimer une opération" -#: views.py:311 +#: views.py:313 msgid "Operation: source search" msgstr "Opération : rechercher une documentation associée" -#: views.py:319 +#: views.py:321 msgid "Operation: source creation" msgstr "Opération : ajouter une documentation associée" -#: views.py:327 +#: views.py:329 msgid "Operation: source modification" msgstr "Opération : modifier une documentation associée" -#: views.py:342 +#: views.py:344 msgid "Operation: source deletion" msgstr "Opération : supprimer une documentation associée" -#: views.py:361 +#: views.py:363 msgid "Operation: new administrative act" msgstr "Opération : ajouter un acte administratif" -#: views.py:371 +#: views.py:373 msgid "Operation: administrative act modification" msgstr "Opération : modification d'un acte administratif" -#: views.py:395 +#: views.py:397 msgid "Operation: administrative act deletion" msgstr "Opération : supprimer un acte administratif" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index 980fba45d..c934eea23 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -12,7 +12,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Transfer-Encoding: 8bit\n" "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2017-05-16 06:17-0400\n" +"PO-Revision-Date: 2017-06-01 02:08-0400\n" "Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n" "Language-Team: \n" "Language: fr\n" @@ -197,12 +197,12 @@ msgstr "Vous devez sélectionner un élément." msgid "Add a new item" msgstr "Ajouter un nouvel élément" -#: forms.py:297 models.py:1556 +#: forms.py:297 models.py:1558 msgid "Template" msgstr "Patron" #: forms_common.py:41 forms_common.py:59 forms_common.py:184 -#: forms_common.py:408 models.py:1622 models.py:3085 +#: forms_common.py:408 models.py:1624 models.py:3087 #: templates/blocks/JQueryAdvancedTown.html:19 #: templates/ishtar/sheet_organization.html:13 msgid "Town" @@ -225,8 +225,8 @@ msgstr "" "<p class='example'>Par exemple tapez « saint denis 93 » pour obtenir la " "commune Saint-Denis dans le département français de Seine-Saint-Denis.</p>" -#: forms_common.py:68 forms_common.py:863 ishtar_menu.py:47 models.py:2685 -#: models.py:2878 models.py:2940 templates/ishtar/sheet_person.html:4 +#: forms_common.py:68 forms_common.py:863 ishtar_menu.py:47 models.py:2687 +#: models.py:2880 models.py:2942 templates/ishtar/sheet_person.html:4 msgid "Person" msgstr "Personne" @@ -239,64 +239,65 @@ msgstr "" "pas possible." #: forms_common.py:172 forms_common.py:329 forms_common.py:453 -#: ishtar_menu.py:75 models.py:2568 models.py:2659 +#: ishtar_menu.py:75 models.py:2570 models.py:2661 #: templates/ishtar/sheet_organization.html:4 msgid "Organization" msgstr "Organisation" #: forms_common.py:175 forms_common.py:212 forms_common.py:324 -#: forms_common.py:378 forms_common.py:448 models.py:1159 models.py:1555 -#: models.py:1824 models.py:1840 models.py:2078 models.py:2356 models.py:2562 -#: models.py:2671 models.py:3071 templates/ishtar/import_list.html:13 +#: forms_common.py:378 forms_common.py:448 models.py:1161 models.py:1557 +#: models.py:1826 models.py:1842 models.py:2080 models.py:2358 models.py:2564 +#: models.py:2673 models.py:3073 models.py:3170 +#: templates/ishtar/import_list.html:13 #: templates/ishtar/sheet_organization.html:8 #: templates/ishtar/sheet_organization.html:21 msgid "Name" msgstr "Nom" -#: forms_common.py:176 models.py:1777 models.py:2209 +#: forms_common.py:176 models.py:1779 models.py:2211 msgid "Organization type" msgstr "Type d'organisation" -#: forms_common.py:178 forms_common.py:402 models.py:1617 +#: forms_common.py:178 forms_common.py:402 models.py:1619 #: templates/ishtar/sheet_organization.html:10 msgid "Address" msgstr "Adresse" -#: forms_common.py:180 forms_common.py:405 models.py:1618 +#: forms_common.py:180 forms_common.py:405 models.py:1620 #: templates/ishtar/sheet_organization.html:11 msgid "Address complement" msgstr "Complément d'adresse" -#: forms_common.py:182 forms_common.py:406 models.py:1620 +#: forms_common.py:182 forms_common.py:406 models.py:1622 #: templates/ishtar/sheet_organization.html:12 msgid "Postal code" msgstr "Code postal" -#: forms_common.py:185 forms_common.py:409 models.py:1623 +#: forms_common.py:185 forms_common.py:409 models.py:1625 msgid "Country" msgstr "Pays" #: forms_common.py:187 forms_common.py:326 forms_common.py:382 -#: forms_common.py:450 forms_common.py:574 models.py:1650 +#: forms_common.py:450 forms_common.py:574 models.py:1652 msgid "Email" msgstr "Courriel" -#: forms_common.py:188 forms_common.py:385 models.py:1635 +#: forms_common.py:188 forms_common.py:385 models.py:1637 #: templates/ishtar/sheet_organization.html:14 #: templates/ishtar/sheet_person.html:21 #: templates/ishtar/wizard/wizard_person.html:17 msgid "Phone" msgstr "Téléphone" -#: forms_common.py:189 forms_common.py:394 models.py:1647 +#: forms_common.py:189 forms_common.py:394 models.py:1649 #: templates/ishtar/sheet_organization.html:15 #: templates/ishtar/sheet_person.html:39 #: templates/ishtar/wizard/wizard_person.html:35 msgid "Mobile phone" msgstr "Téléphone portable" -#: forms_common.py:213 forms_common.py:327 forms_common.py:451 models.py:2247 -#: models.py:2564 models.py:3006 templates/sheet_ope.html:85 +#: forms_common.py:213 forms_common.py:327 forms_common.py:451 models.py:2249 +#: models.py:2566 models.py:3008 templates/sheet_ope.html:85 #: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126 #: templates/ishtar/import_list.html:14 #: templates/ishtar/sheet_organization.html:23 @@ -304,7 +305,7 @@ msgstr "Téléphone portable" msgid "Type" msgstr "Type" -#: forms_common.py:222 views.py:149 +#: forms_common.py:222 views.py:157 msgid "Organization search" msgstr "Rechercher une organisation" @@ -320,12 +321,12 @@ msgstr "Fusionner tous les éléments dans" msgid "Organization to merge" msgstr "Organisation à fusionner" -#: forms_common.py:325 forms_common.py:376 forms_common.py:449 models.py:2669 +#: forms_common.py:325 forms_common.py:376 forms_common.py:449 models.py:2671 #: templates/ishtar/sheet_organization.html:22 msgid "Surname" msgstr "Prénom" -#: forms_common.py:341 forms_common.py:436 views.py:114 +#: forms_common.py:341 forms_common.py:436 views.py:122 msgid "Person search" msgstr "Rechercher une personne" @@ -338,25 +339,25 @@ msgstr "Personne à fusionner" msgid "Identity" msgstr "Identité" -#: forms_common.py:373 forms_common.py:781 forms_common.py:830 models.py:2210 -#: models.py:2663 models.py:2665 models.py:3003 templates/sheet_ope.html:104 +#: forms_common.py:373 forms_common.py:781 forms_common.py:830 models.py:2212 +#: models.py:2665 models.py:2667 models.py:3005 templates/sheet_ope.html:104 #: templates/ishtar/blocks/window_tables/documents.html:7 msgid "Title" msgstr "Titre" -#: forms_common.py:374 models.py:2667 +#: forms_common.py:374 models.py:2669 msgid "Salutation" msgstr "Formule d'appel" -#: forms_common.py:380 models.py:2673 +#: forms_common.py:380 models.py:2675 msgid "Raw name" msgstr "Nom brut" -#: forms_common.py:383 models.py:1636 +#: forms_common.py:383 models.py:1638 msgid "Phone description" msgstr "Type de téléphone" -#: forms_common.py:386 models.py:1638 models.py:1640 +#: forms_common.py:386 models.py:1640 models.py:1642 msgid "Phone description 2" msgstr "Type de téléphone 2" @@ -364,11 +365,11 @@ msgstr "Type de téléphone 2" msgid "Phone 2" msgstr "Téléphone 2" -#: forms_common.py:390 models.py:1644 +#: forms_common.py:390 models.py:1646 msgid "Phone description 3" msgstr "Type de téléphone 3" -#: forms_common.py:392 models.py:1642 +#: forms_common.py:392 models.py:1644 msgid "Phone 3" msgstr "Téléphone 3" @@ -376,23 +377,23 @@ msgstr "Téléphone 3" msgid "Current organization" msgstr "Organisation actuelle" -#: forms_common.py:411 models.py:1625 +#: forms_common.py:411 models.py:1627 msgid "Other address: address" msgstr "Autre adresse : adresse" -#: forms_common.py:414 models.py:1628 +#: forms_common.py:414 models.py:1630 msgid "Other address: address complement" msgstr "Autre adresse : complément d'adresse" -#: forms_common.py:416 models.py:1629 +#: forms_common.py:416 models.py:1631 msgid "Other address: postal code" msgstr "Autre adresse : code postal" -#: forms_common.py:418 models.py:1631 +#: forms_common.py:418 models.py:1633 msgid "Other address: town" msgstr "Autre adresse : ville" -#: forms_common.py:420 models.py:1633 +#: forms_common.py:420 models.py:1635 msgid "Other address: country" msgstr "Autre adresse : pays" @@ -408,7 +409,7 @@ msgstr "Nom d'utilisateur" msgid "Account search" msgstr "Rechercher un compte" -#: forms_common.py:512 forms_common.py:552 forms_common.py:556 models.py:2616 +#: forms_common.py:512 forms_common.py:552 forms_common.py:556 models.py:2618 msgid "Person type" msgstr "Type de personne" @@ -440,7 +441,7 @@ msgstr "Ce nom d'utilisateur existe déjà." msgid "Send the new password by email?" msgstr "Envoyer le nouveau mot de passe par courriel ?" -#: forms_common.py:636 forms_common.py:649 models.py:3086 +#: forms_common.py:636 forms_common.py:649 models.py:3088 msgid "Towns" msgstr "Communes" @@ -456,7 +457,7 @@ msgstr "Seul un choix peut être coché." msgid "Documentation informations" msgstr "Information sur le document" -#: forms_common.py:783 forms_common.py:831 models.py:2211 models.py:2978 +#: forms_common.py:783 forms_common.py:831 models.py:2213 models.py:2980 msgid "Source type" msgstr "Type de document" @@ -468,37 +469,37 @@ msgstr "Référence" msgid "Internal reference" msgstr "Référence interne" -#: forms_common.py:791 models.py:3017 +#: forms_common.py:791 models.py:3019 msgid "Numerical ressource (web address)" msgstr "Ressource numérique (adresse web)" -#: forms_common.py:792 models.py:3019 +#: forms_common.py:792 models.py:3021 msgid "Receipt date" msgstr "Date de réception" -#: forms_common.py:794 models.py:2382 models.py:3021 +#: forms_common.py:794 models.py:2384 models.py:3023 msgid "Creation date" msgstr "Date de création" -#: forms_common.py:797 models.py:3024 +#: forms_common.py:797 models.py:3026 msgid "Receipt date in documentation" msgstr "Date de réception en documentation" -#: forms_common.py:799 forms_common.py:835 models.py:419 models.py:746 -#: models.py:2105 models.py:2677 models.py:3031 +#: forms_common.py:799 forms_common.py:835 models.py:421 models.py:748 +#: models.py:2107 models.py:2679 models.py:3033 msgid "Comment" msgstr "Commentaire" -#: forms_common.py:801 forms_common.py:834 models.py:1161 models.py:1844 -#: models.py:2032 models.py:2079 models.py:3030 templates/sheet_ope.html:128 +#: forms_common.py:801 forms_common.py:834 models.py:1163 models.py:1846 +#: models.py:2034 models.py:2081 models.py:3032 templates/sheet_ope.html:128 msgid "Description" msgstr "Description" -#: forms_common.py:804 models.py:3032 +#: forms_common.py:804 models.py:3034 msgid "Additional information" msgstr "Information supplémentaire" -#: forms_common.py:806 forms_common.py:838 models.py:3034 +#: forms_common.py:806 forms_common.py:838 models.py:3036 msgid "Has a duplicate" msgstr "Existe en doublon" @@ -515,7 +516,7 @@ msgstr "" "<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le " "ratio est conservé).</p>" -#: forms_common.py:827 forms_common.py:856 forms_common.py:890 models.py:2945 +#: forms_common.py:827 forms_common.py:856 forms_common.py:890 models.py:2947 #: templates/ishtar/wizard/wizard_person_deletion.html:124 msgid "Author" msgstr "Auteur" @@ -528,7 +529,7 @@ msgstr "Informations supplémentaires" msgid "Would you like to delete this documentation?" msgstr "Voulez-vous supprimer ce document ?" -#: forms_common.py:864 models.py:2212 models.py:2932 models.py:2942 +#: forms_common.py:864 models.py:2214 models.py:2934 models.py:2944 msgid "Author type" msgstr "Type d'auteur" @@ -540,7 +541,7 @@ msgstr "Sélection d'auteur" msgid "There are identical authors." msgstr "Il y a des auteurs identiques." -#: forms_common.py:901 models.py:2946 models.py:3013 +#: forms_common.py:901 models.py:2948 models.py:3015 #: templates/sheet_ope.html:106 #: templates/ishtar/blocks/window_tables/documents.html:9 msgid "Authors" @@ -558,7 +559,7 @@ msgstr "Ajout/modification" msgid "Deletion" msgstr "Suppression" -#: ishtar_menu.py:39 models.py:1338 views.py:1640 +#: ishtar_menu.py:39 models.py:1340 views.py:1648 msgid "Global variables" msgstr "Variables globales" @@ -586,131 +587,131 @@ msgstr "Fusion automatique" msgid "Manual merge" msgstr "Fusion manuelle" -#: ishtar_menu.py:109 models.py:2390 +#: ishtar_menu.py:109 models.py:2392 msgid "Imports" msgstr "Imports" -#: ishtar_menu.py:112 views.py:1648 +#: ishtar_menu.py:112 views.py:1656 msgid "New import" msgstr "Nouvel import" -#: ishtar_menu.py:116 views.py:1662 +#: ishtar_menu.py:116 views.py:1670 msgid "Current imports" msgstr "Imports en cours" -#: ishtar_menu.py:120 views.py:1701 +#: ishtar_menu.py:120 views.py:1709 msgid "Old imports" msgstr "Anciens imports" -#: models.py:224 +#: models.py:226 msgid "Not a valid item." msgstr "Élément invalide." -#: models.py:239 +#: models.py:241 msgid "A selected item is not a valid item." msgstr "Un élément sélectionné n'est pas valide." -#: models.py:250 +#: models.py:252 msgid "This item already exists." msgstr "Cet élément existe déjà." -#: models.py:415 models.py:745 models.py:1590 models.py:1602 models.py:2028 +#: models.py:417 models.py:747 models.py:1592 models.py:1604 models.py:2030 msgid "Label" msgstr "Libellé" -#: models.py:417 +#: models.py:419 msgid "Textual ID" msgstr "Identifiant textuel" -#: models.py:420 models.py:748 models.py:1559 +#: models.py:422 models.py:750 models.py:1561 msgid "Available" msgstr "Disponible" -#: models.py:772 models.py:2151 +#: models.py:774 models.py:2153 msgid "Key" msgstr "Clé" -#: models.py:778 +#: models.py:780 msgid "Specific key to an import" msgstr "Clé spécifique à un import" -#: models.py:874 +#: models.py:876 msgid "Last editor" msgstr "Dernier éditeur" -#: models.py:877 +#: models.py:879 msgid "Creator" msgstr "Créateur" -#: models.py:1019 models.py:2929 models.py:3097 models.py:3153 +#: models.py:1021 models.py:2931 models.py:3099 models.py:3155 msgid "Order" msgstr "Ordre" -#: models.py:1020 +#: models.py:1022 msgid "Symmetrical" msgstr "Symétrique" -#: models.py:1021 +#: models.py:1023 msgid "Tiny label" msgstr "Libellé court" -#: models.py:1035 +#: models.py:1037 msgid "Cannot have symmetrical and an inverse_relation" msgstr "Ne peut pas être symétrique et avoir une relation inverse" -#: models.py:1151 +#: models.py:1153 msgid "Euro" msgstr "Euro" -#: models.py:1152 +#: models.py:1154 msgid "US dollar" msgstr "Dollar US" -#: models.py:1153 views.py:1438 views.py:1500 +#: models.py:1155 views.py:1446 views.py:1508 msgid "Operations" msgstr "Opérations" -#: models.py:1154 views.py:1440 views.py:1504 +#: models.py:1156 views.py:1448 views.py:1512 msgid "Context records" msgstr "Unités d'Enregistrement" -#: models.py:1160 models.py:1842 +#: models.py:1162 models.py:1844 msgid "Slug" msgstr "Identifiant texte" -#: models.py:1163 +#: models.py:1165 msgid "CSS color code for base module" msgstr "Code couleur CSS pour le tronc commun" -#: models.py:1165 +#: models.py:1167 msgid "Files module" msgstr "Module Dossiers" -#: models.py:1167 +#: models.py:1169 msgid "CSS color code for files module" msgstr "Code couleur CSS pour le module Dossier" -#: models.py:1169 +#: models.py:1171 msgid "Context records module" msgstr "Module Unités d'Enregistrement" -#: models.py:1172 +#: models.py:1174 msgid "CSS color code for context record module" msgstr "Code couleur CSS pour le module Unité d'Enregistrement" -#: models.py:1174 +#: models.py:1176 msgid "Finds module" msgstr "Module Mobilier" -#: models.py:1175 +#: models.py:1177 msgid "Need context records module" msgstr "Nécessite le module Unités d'Enregistrement" -#: models.py:1177 +#: models.py:1179 msgid "Find index is based on" msgstr "Index mobilier basé sur" -#: models.py:1179 +#: models.py:1181 msgid "" "To prevent irrelevant indexes, change this parameter only if there is no " "find in the database" @@ -718,35 +719,35 @@ msgstr "" "Pour éviter des index non pertinents, ne changer ce paramètre seulement si " "il n'y a pas encore de mobilier dans cette base de données" -#: models.py:1182 +#: models.py:1184 msgid "CSS color code for find module" msgstr "Code couleur CSS pour le module Mobilier" -#: models.py:1185 +#: models.py:1187 msgid "Warehouses module" msgstr "Module Dépôts" -#: models.py:1186 +#: models.py:1188 msgid "Need finds module" msgstr "Nécessite le module mobilier" -#: models.py:1188 +#: models.py:1190 msgid "CSS code for warehouse module" msgstr "Code couleur CSS pour le module Dépôt" -#: models.py:1190 +#: models.py:1192 msgid "Mapping module" msgstr "Module cartographique" -#: models.py:1192 +#: models.py:1194 msgid "CSS code for mapping module" msgstr "Code couleur CSS pour le module cartographique" -#: models.py:1195 +#: models.py:1197 msgid "Home page" msgstr "Page d'accueil" -#: models.py:1196 +#: models.py:1198 #, python-brace-format msgid "" "Homepage of Ishtar - if not defined a default homepage will appear. Use the " @@ -756,11 +757,11 @@ msgstr "" "défaut apparaît. Utiliser la syntaxe Markdown. {random_image} peut être " "utilisé pour afficher une image au hasard." -#: models.py:1200 +#: models.py:1202 msgid "File external id" msgstr "Identifiant externe de fichier" -#: models.py:1202 +#: models.py:1204 msgid "" "Formula to manage file external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -770,11 +771,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1207 +#: models.py:1209 msgid "Parcel external id" msgstr "Identifiant externe de parcelle" -#: models.py:1210 +#: models.py:1212 msgid "" "Formula to manage parcel external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -784,11 +785,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1215 +#: models.py:1217 msgid "Context record external id" msgstr "Identifiant externe d'unité d'enregistrement" -#: models.py:1217 +#: models.py:1219 msgid "" "Formula to manage context record external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -798,11 +799,11 @@ msgstr "" "manipuler avec précaution. Une formule incorrecte peut rendre l'application " "inutilisable et l'import de données externes peut alors être destructif." -#: models.py:1222 +#: models.py:1224 msgid "Base find external id" msgstr "Identifiant externe de mobilier de base" -#: models.py:1224 +#: models.py:1226 msgid "" "Formula to manage base find external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -812,11 +813,11 @@ msgstr "" "manipuler avec précaution. Une formule incorrecte peut rendre l'application " "inutilisable et l'import de données externes peut alors être destructif." -#: models.py:1229 +#: models.py:1231 msgid "Find external id" msgstr "Identifiant externe de mobilier" -#: models.py:1231 +#: models.py:1233 msgid "" "Formula to manage find external ID. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -826,11 +827,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1236 +#: models.py:1238 msgid "Container external id" msgstr "ID externe du contenant" -#: models.py:1238 +#: models.py:1240 msgid "" "Formula to manage container external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -840,11 +841,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1243 +#: models.py:1245 msgid "Warehouse external id" msgstr "ID externe du dépôt" -#: models.py:1245 +#: models.py:1247 msgid "" "Formula to manage warehouse external ID. Change this with care. With " "incorrect formula, the application might be unusable and import of external " @@ -854,11 +855,11 @@ msgstr "" "précaution. Une formule incorrecte peut rendre l'application inutilisable et " "l'import de données externes peut alors être destructif." -#: models.py:1250 +#: models.py:1252 msgid "Raw name for person" msgstr "Nom brut pour une personne" -#: models.py:1252 +#: models.py:1254 msgid "" "Formula to manage person raw_name. Change this with care. With incorrect " "formula, the application might be unusable and import of external data can " @@ -868,43 +869,43 @@ msgstr "" "Une formule incorrecte peut rendre l'application inutilisable et l'import de " "données externes peut alors être destructif." -#: models.py:1256 +#: models.py:1258 msgid "Current active" msgstr "Actuellement utilisé" -#: models.py:1257 +#: models.py:1259 msgid "Currency" msgstr "Devise" -#: models.py:1261 +#: models.py:1263 msgid "Ishtar site profile" msgstr "Profil d'instance Ishtar" -#: models.py:1262 +#: models.py:1264 msgid "Ishtar site profiles" msgstr "Profils d'instance Ishtar" -#: models.py:1331 +#: models.py:1333 msgid "Variable name" msgstr "Nom de la variable" -#: models.py:1332 +#: models.py:1334 msgid "Description of the variable" msgstr "Description de la variable" -#: models.py:1334 models.py:2152 +#: models.py:1336 models.py:2154 msgid "Value" msgstr "Valeur" -#: models.py:1337 +#: models.py:1339 msgid "Global variable" msgstr "Variable globale" -#: models.py:1460 models.py:1490 +#: models.py:1462 models.py:1492 msgid "Total" msgstr "Total" -#: models.py:1467 models.py:1591 models.py:1603 +#: models.py:1469 models.py:1593 models.py:1605 #: templates/ishtar/sheet_person.html:24 #: templates/ishtar/dashboards/dashboard_main_detail.html:141 #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 @@ -912,135 +913,135 @@ msgstr "Total" msgid "Number" msgstr "Nombre" -#: models.py:1554 +#: models.py:1556 msgid "Administrative Act" msgstr "Acte administratif" -#: models.py:1558 +#: models.py:1560 msgid "Associated object" msgstr "Objet associé" -#: models.py:1562 +#: models.py:1564 msgid "Document template" msgstr "Patron de document" -#: models.py:1563 +#: models.py:1565 msgid "Document templates" msgstr "Patrons de document" -#: models.py:1594 models.py:1604 models.py:2376 +#: models.py:1596 models.py:1606 models.py:2378 models.py:3193 msgid "State" msgstr "État" -#: models.py:1608 templates/blocks/JQueryAdvancedTown.html:12 +#: models.py:1610 templates/blocks/JQueryAdvancedTown.html:12 msgid "Department" msgstr "Département" -#: models.py:1609 +#: models.py:1611 msgid "Departments" msgstr "Départements" -#: models.py:1646 +#: models.py:1648 msgid "Raw phone" msgstr "Téléphone brut" -#: models.py:1652 +#: models.py:1654 msgid "Alternative address is prefered" msgstr "L'adresse alternative est préférée" -#: models.py:1691 +#: models.py:1693 msgid "Tel: " msgstr "Tél :" -#: models.py:1695 +#: models.py:1697 msgid "Mobile: " msgstr "Mobile :" -#: models.py:1699 +#: models.py:1701 msgid "Email: " msgstr "Courriel :" -#: models.py:1704 +#: models.py:1706 msgid "Merge key" msgstr "Clé de fusion" -#: models.py:1778 +#: models.py:1780 msgid "Organization types" msgstr "Types d'organisation" -#: models.py:1825 +#: models.py:1827 msgid "Class name" msgstr "Nom de la classe" -#: models.py:1828 +#: models.py:1830 msgid "Importer - Model" msgstr "Importeur - Modèle" -#: models.py:1829 +#: models.py:1831 msgid "Importer - Models" msgstr "Importeur - Modèles" -#: models.py:1846 templates/ishtar/dashboards/dashboard_main.html:34 +#: models.py:1848 templates/ishtar/dashboards/dashboard_main.html:34 msgid "Users" msgstr "Utilisateurs" -#: models.py:1849 +#: models.py:1851 msgid "Associated model" msgstr "Modèle associé" -#: models.py:1852 +#: models.py:1854 msgid "Models that can accept new items" msgstr "Modèles qui peuvent accepter de nouveaux éléments" -#: models.py:1853 +#: models.py:1855 msgid "Leave blank for no restrictions" msgstr "Laissez vide pour aucune restriction" -#: models.py:1855 +#: models.py:1857 msgid "Is template" msgstr "Est un patron" -#: models.py:1856 +#: models.py:1858 msgid "Unicity keys (separator \";\")" msgstr "Clés d'unicité (séparateur « ; »)" -#: models.py:1860 +#: models.py:1862 msgid "Importer - Type" msgstr "Importeur - Type" -#: models.py:1861 +#: models.py:1863 msgid "Importer - Types" msgstr "Importeur - Types" -#: models.py:1960 +#: models.py:1962 msgid "Importer - Default" msgstr "Importeur - Par défaut" -#: models.py:1961 +#: models.py:1963 msgid "Importer - Defaults" msgstr "Importeur - Par défaut" -#: models.py:1996 +#: models.py:1998 msgid "Importer - Default value" msgstr "Importeur - Valeur par défaut" -#: models.py:1997 +#: models.py:1999 msgid "Importer - Default values" msgstr "Importeur - Valeurs par défaut" -#: models.py:2031 +#: models.py:2033 msgid "Column number" msgstr "Numéro de colonne" -#: models.py:2034 +#: models.py:2036 msgid "Required" msgstr "Requis" -#: models.py:2036 +#: models.py:2038 msgid "Export field name" msgstr "Exporter le nom du champ" -#: models.py:2037 +#: models.py:2039 msgid "" "Fill this field if the field name is ambiguous for export. For instance: " "concatenated fields." @@ -1048,534 +1049,601 @@ msgstr "" "Remplir ce champ si le nom du champ est ambigu pour l'export, par exemple " "dans le cas de champs concaténés." -#: models.py:2042 +#: models.py:2044 msgid "Importer - Column" msgstr "Importeur - Colonne" -#: models.py:2043 +#: models.py:2045 msgid "Importer - Columns" msgstr "Importeur - Colonnes" -#: models.py:2063 +#: models.py:2065 msgid "Field name" msgstr "Nom du champ" -#: models.py:2065 models.py:2099 +#: models.py:2067 models.py:2101 msgid "Force creation of new items" msgstr "Forcer la création de nouveaux éléments" -#: models.py:2067 models.py:2101 +#: models.py:2069 models.py:2103 msgid "Concatenate with existing" msgstr "Concaténer avec l'existant" -#: models.py:2069 models.py:2103 +#: models.py:2071 models.py:2105 msgid "Concatenate character" msgstr "Caractère de concaténation" -#: models.py:2073 +#: models.py:2075 msgid "Importer - Duplicate field" msgstr "Importeur - Champ dupliqué" -#: models.py:2074 +#: models.py:2076 msgid "Importer - Duplicate fields" msgstr "Importeur - Champs dupliqués" -#: models.py:2081 +#: models.py:2083 msgid "Regular expression" msgstr "Expression régulière" -#: models.py:2084 +#: models.py:2086 msgid "Importer - Regular expression" msgstr "Importeur - Expression régulière" -#: models.py:2085 +#: models.py:2087 msgid "Importer - Regular expressions" msgstr "Importeur - Expressions régulières" -#: models.py:2108 +#: models.py:2110 msgid "Importer - Target" msgstr "Importeur - Cible" -#: models.py:2109 +#: models.py:2111 msgid "Importer - Targets" msgstr "Importeur - Cibles" -#: models.py:2133 views.py:570 +#: models.py:2135 views.py:578 msgid "True" msgstr "Oui" -#: models.py:2134 views.py:572 +#: models.py:2136 views.py:580 msgid "False" msgstr "Non" -#: models.py:2153 +#: models.py:2155 msgid "Is set" msgstr "Est défini" -#: models.py:2160 +#: models.py:2162 msgid "Importer - Target key" msgstr "Importeur - Clé de rapprochement" -#: models.py:2161 +#: models.py:2163 msgid "Importer - Targets keys" msgstr "Importeur - Clés de rapprochement" -#: models.py:2213 models.py:3009 +#: models.py:2215 models.py:3011 msgid "Format" msgstr "Format" -#: models.py:2214 models.py:3101 +#: models.py:2216 models.py:3103 msgid "Operation type" msgstr "Type d'opération" -#: models.py:2215 +#: models.py:2217 msgid "Period" msgstr "Période" -#: models.py:2216 +#: models.py:2218 msgid "Report state" msgstr "État de rapport" -#: models.py:2217 +#: models.py:2219 msgid "Remain type" msgstr "Type de vestige" -#: models.py:2218 +#: models.py:2220 msgid "Unit" msgstr "Unité" -#: models.py:2220 +#: models.py:2222 msgid "Activity type" msgstr "Type d'activité" -#: models.py:2221 +#: models.py:2223 msgid "Material" msgstr "Matériau" -#: models.py:2223 +#: models.py:2225 msgid "Conservatory state" msgstr "État de conservation" -#: models.py:2224 +#: models.py:2226 msgid "Container type" msgstr "Type de contenant" -#: models.py:2225 +#: models.py:2227 msgid "Preservation type" msgstr "Type de conservation" -#: models.py:2226 +#: models.py:2228 msgid "Object type" msgstr "Type d'objet" -#: models.py:2227 +#: models.py:2229 msgid "Integrity type" msgstr "Type d'intégrité" -#: models.py:2229 +#: models.py:2231 msgid "Remarkability type" msgstr "Type de remarquabilité" -#: models.py:2230 +#: models.py:2232 msgid "Batch type" msgstr "Type de lot" -#: models.py:2232 +#: models.py:2234 msgid "Identification type" msgstr "Type d'identification" -#: models.py:2234 +#: models.py:2236 msgid "Context record relation type" msgstr "Type de relations entre Unités d'Enregistrement" -#: models.py:2235 models.py:3159 +#: models.py:2237 models.py:3161 msgid "Spatial reference system" msgstr "Système de référence spatiale" -#: models.py:2236 models.py:2987 +#: models.py:2238 models.py:2989 msgid "Support type" msgstr "Type de support" -#: models.py:2237 models.py:2628 +#: models.py:2239 models.py:2630 msgid "Title type" msgstr "Type de titre" -#: models.py:2243 +#: models.py:2245 msgid "Integer" msgstr "Entier" -#: models.py:2244 +#: models.py:2246 msgid "Float" msgstr "Nombre à virgule" -#: models.py:2245 +#: models.py:2247 msgid "String" msgstr "Chaîne de caractères" -#: models.py:2246 templates/sheet_ope.html:86 +#: models.py:2248 templates/sheet_ope.html:86 msgid "Date" msgstr "Date" -#: models.py:2248 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: models.py:2250 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 #: templates/ishtar/dashboards/dashboard_main_detail.html:126 msgid "Year" msgstr "Année" -#: models.py:2249 +#: models.py:2251 msgid "String to boolean" msgstr "Chaîne de caractères vers booléen" -#: models.py:2250 +#: models.py:2252 msgctxt "filesystem" msgid "File" msgstr "Fichier" -#: models.py:2251 +#: models.py:2253 msgid "Unknow type" msgstr "Type inconnu" -#: models.py:2267 +#: models.py:2269 msgid "4 digit year. e.g.: \"2015\"" msgstr "Année sur 4 chiffres. Exemple : « 2015 »" -#: models.py:2268 +#: models.py:2270 msgid "4 digit year/month/day. e.g.: \"2015/02/04\"" msgstr "Année sur 4 chiffres/mois/jour. Exemple : « 2015/02/04 »" -#: models.py:2269 +#: models.py:2271 msgid "Day/month/4 digit year. e.g.: \"04/02/2015\"" msgstr "Jour/mois/année sur 4 chiffres. Exemple : « 04/02/2015 »" -#: models.py:2279 +#: models.py:2281 msgid "Options" msgstr "Options" -#: models.py:2281 +#: models.py:2283 msgid "Split character(s)" msgstr "Caractère(s) de séparation" -#: models.py:2285 +#: models.py:2287 msgid "Importer - Formater type" msgstr "Importeur - Type de mise en forme" -#: models.py:2286 +#: models.py:2288 msgid "Importer - Formater types" msgstr "Importeur - Types de mise en forme" -#: models.py:2338 templates/ishtar/dashboards/dashboard_main_detail.html:63 +#: models.py:2340 templates/ishtar/dashboards/dashboard_main_detail.html:63 msgid "Created" msgstr "Créé" -#: models.py:2339 +#: models.py:2341 msgid "Analyse in progress" msgstr "Analyse en cours" -#: models.py:2340 +#: models.py:2342 msgid "Analysed" msgstr "Analysé" -#: models.py:2341 +#: models.py:2343 msgid "Import pending" msgstr "Import en attente" -#: models.py:2342 +#: models.py:2344 msgid "Import in progress" msgstr "Import en cours" -#: models.py:2343 +#: models.py:2345 models.py:3184 msgid "Finished with errors" msgstr "Terminé avec des erreurs" -#: models.py:2344 +#: models.py:2346 models.py:3185 msgid "Finished" msgstr "Terminé" -#: models.py:2345 +#: models.py:2347 msgid "Archived" msgstr "Archivé" -#: models.py:2360 +#: models.py:2362 msgid "Imported file" msgstr "Fichier importé" -#: models.py:2362 +#: models.py:2364 msgid "Associated images (zip file)" msgstr "Images associées (fichier zip)" -#: models.py:2364 +#: models.py:2366 msgid "Encoding" msgstr "Codage" -#: models.py:2366 +#: models.py:2368 msgid "Skip lines" msgstr "Nombre de lignes d'entête" -#: models.py:2367 templates/ishtar/import_list.html:51 +#: models.py:2369 templates/ishtar/import_list.html:51 msgid "Error file" msgstr "Fichier erreur" -#: models.py:2370 +#: models.py:2372 msgid "Result file" msgstr "Fichier résultant" -#: models.py:2373 templates/ishtar/import_list.html:57 +#: models.py:2375 templates/ishtar/import_list.html:57 msgid "Match file" msgstr "Fichier de correspondance" -#: models.py:2379 +#: models.py:2381 msgid "Conservative import" msgstr "Import conservateur" -#: models.py:2383 +#: models.py:2385 msgid "End date" msgstr "Date de fin" -#: models.py:2386 +#: models.py:2388 msgid "Remaining seconds" msgstr "Secondes restantes" -#: models.py:2389 +#: models.py:2391 msgid "Import" msgstr "Import" -#: models.py:2418 +#: models.py:2420 msgid "Analyse" msgstr "Analyser" -#: models.py:2420 models.py:2423 +#: models.py:2422 models.py:2425 msgid "Re-analyse" msgstr "Analyser de nouveau " -#: models.py:2421 +#: models.py:2423 msgid "Launch import" msgstr "Lancer l'import" -#: models.py:2424 +#: models.py:2426 msgid "Re-import" msgstr "Ré-importer" -#: models.py:2425 +#: models.py:2427 msgid "Archive" msgstr "Archiver" -#: models.py:2427 +#: models.py:2429 msgid "Unarchive" msgstr "Désarchiver" -#: models.py:2428 widgets.py:184 templates/ishtar/form_delete.html:11 +#: models.py:2430 widgets.py:198 templates/ishtar/form_delete.html:11 msgid "Delete" msgstr "Supprimer" -#: models.py:2569 +#: models.py:2571 msgid "Organizations" msgstr "Organisations" -#: models.py:2571 +#: models.py:2573 msgid "Can view all Organizations" msgstr "Peut voir toutes les Organisations" -#: models.py:2572 +#: models.py:2574 msgid "Can view own Organization" msgstr "Peut voir sa propre Organisation" -#: models.py:2573 +#: models.py:2575 msgid "Can add own Organization" msgstr "Peut ajouter sa propre Organisation" -#: models.py:2575 +#: models.py:2577 msgid "Can change own Organization" msgstr "Peut modifier sa propre Organisation" -#: models.py:2577 +#: models.py:2579 msgid "Can delete own Organization" msgstr "Peut supprimer sa propre Organisation" -#: models.py:2612 +#: models.py:2614 msgid "Groups" msgstr "Groupes" -#: models.py:2617 +#: models.py:2619 msgid "Person types" msgstr "Types de personne" -#: models.py:2629 +#: models.py:2631 msgid "Title types" msgstr "Types de titre" -#: models.py:2638 +#: models.py:2640 msgid "Mr" msgstr "M." -#: models.py:2639 +#: models.py:2641 msgid "Miss" msgstr "Mlle" -#: models.py:2640 +#: models.py:2642 msgid "Mr and Mrs" msgstr "M. et Mme" -#: models.py:2641 +#: models.py:2643 msgid "Mrs" msgstr "Mme" -#: models.py:2642 +#: models.py:2644 msgid "Doctor" msgstr "Dr." -#: models.py:2675 +#: models.py:2677 msgid "Contact type" msgstr "Type de contact" -#: models.py:2678 models.py:2742 +#: models.py:2680 models.py:2744 msgid "Types" msgstr "Types" -#: models.py:2681 +#: models.py:2683 msgid "Is attached to" msgstr "Est rattaché à" -#: models.py:2686 +#: models.py:2688 msgid "Persons" msgstr "Personnes" -#: models.py:2688 +#: models.py:2690 msgid "Can view all Persons" msgstr "Peut voir toutes les Personnes" -#: models.py:2689 +#: models.py:2691 msgid "Can view own Person" msgstr "Peut voir sa propre Personne" -#: models.py:2690 +#: models.py:2692 msgid "Can add own Person" msgstr "Peut ajouter sa propre Personne" -#: models.py:2691 +#: models.py:2693 msgid "Can change own Person" msgstr "Peut modifier sa propre Personne" -#: models.py:2692 +#: models.py:2694 msgid "Can delete own Person" msgstr "Peut supprimer sa propre Personne" -#: models.py:2881 +#: models.py:2883 msgid "Advanced shortcut menu" msgstr "Menu de raccourci (avancé)" -#: models.py:2884 +#: models.py:2886 msgid "Ishtar user" msgstr "Utilisateur d'Ishtar" -#: models.py:2885 +#: models.py:2887 msgid "Ishtar users" msgstr "Utilisateurs d'Ishtar" -#: models.py:2925 +#: models.py:2927 msgid "To modify the password use the form in Auth > User" msgstr "" "Pour modifier le mot de passe, utilisez le formulaire dans Authentification " "> Utilisateurs" -#: models.py:2933 +#: models.py:2935 msgid "Author types" msgstr "Types d'auteur" -#: models.py:2950 +#: models.py:2952 msgid "Can view all Authors" msgstr "Peut voir tous les Auteurs" -#: models.py:2952 +#: models.py:2954 msgid "Can view own Author" msgstr "Peut voir son propre Auteur" -#: models.py:2954 +#: models.py:2956 msgid "Can add own Author" msgstr "Peut ajouter son propre Auteur" -#: models.py:2956 +#: models.py:2958 msgid "Can change own Author" msgstr "Peut modifier son propre Auteur" -#: models.py:2958 +#: models.py:2960 msgid "Can delete own Author" msgstr "Peut supprimer son propre Auteur" -#: models.py:2979 +#: models.py:2981 msgid "Source types" msgstr "Types de document" -#: models.py:2988 +#: models.py:2990 msgid "Support types" msgstr "Types de support" -#: models.py:2995 +#: models.py:2997 msgid "Format type" msgstr "Type de format" -#: models.py:2996 +#: models.py:2998 msgid "Format types" msgstr "Types de format" -#: models.py:3004 +#: models.py:3006 msgid "External ID" msgstr "Identifiant externe" -#: models.py:3007 +#: models.py:3009 msgid "Support" msgstr "Support" -#: models.py:3011 +#: models.py:3013 msgid "Scale" msgstr "Échelle" -#: models.py:3025 +#: models.py:3027 msgid "Item number" msgstr "Numéro d'élément" -#: models.py:3026 +#: models.py:3028 msgid "Ref." msgstr "Réf." -#: models.py:3029 +#: models.py:3031 msgid "Internal ref." msgstr "Réf. interne" -#: models.py:3072 +#: models.py:3074 msgid "Surface (m2)" msgstr "Surface (m2)" -#: models.py:3073 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:3075 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 msgid "Localisation" msgstr "Localisation" -#: models.py:3098 +#: models.py:3100 msgid "Is preventive" msgstr "Est du préventif" -#: models.py:3102 +#: models.py:3104 msgid "Operation types" msgstr "Types d'opération" -#: models.py:3131 +#: models.py:3133 msgid "Preventive" msgstr "Préventif" -#: models.py:3132 +#: models.py:3134 msgid "Research" msgstr "Programmé" -#: models.py:3155 +#: models.py:3157 msgid "Authority name" msgstr "Registre" -#: models.py:3156 +#: models.py:3158 msgid "Authority SRID" msgstr "SRID" -#: models.py:3160 +#: models.py:3162 msgid "Spatial reference systems" msgstr "Systèmes de référence spatiale" +#: models.py:3169 +msgid "Filename" +msgstr "Nom de fichier" + +#: models.py:3174 +msgid "Administration script" +msgstr "Script d'administration" + +#: models.py:3175 +msgid "Administration scripts" +msgstr "Scripts d'administration" + +#: models.py:3182 +msgid "Scheduled" +msgstr "Planifié" + +#: models.py:3183 +msgid "In progress" +msgstr "En cours" + +#: models.py:3198 +msgid "Result" +msgstr "Résultat" + +#: models.py:3201 +msgid "Administration task" +msgstr "Tâche d'administration" + +#: models.py:3202 +msgid "Administration tasks" +msgstr "Tâches d'administration" + +#: models.py:3206 +msgid "Unknown" +msgstr "Inconnu" + +#: models.py:3221 +msgid "" +"ISHTAR_SCRIPT_DIR is not set in your local_settings. Contact your " +"administrator." +msgstr "" +"ISHTAR_SCRIPT_DIR n'est pas défini dans votre fichier local_settings. " +"Contactez votre administrateur." + +#: models.py:3230 +msgid "" +"Your ISHTAR_SCRIPT_DIR is containing dots \"..\". As it can refer to " +"relative paths, it can be a security issue and this is not allowed. Only put " +"a full path." +msgstr "" +"La variable ISHTAR_SCRIPT_DIR contient des points « .. ». Comme cela peut " +"correspondre à un chemin relatif, il est possible que cela puisse poser un " +"problème de sécurité et cela n'est pas permis. Seul un chemin complet est " +"permis." + +#: models.py:3241 +msgid "Your ISHTAR_SCRIPT_DIR: \"{}\" is not a valid directory." +msgstr "ISHTAR_SCRIPT_DIR: « {} » n'est pas un répertoire valable." + +#: models.py:3257 +msgid "" +"Script \"{}\" is not available in your script directory. Check your " +"configuration." +msgstr "" +"Le script « {} »n'est pas un fichier valable de votre répertoire de script. " +"Vérifiez votre configuration." + #: utils.py:100 msgid " (...)" msgstr " (...)" @@ -1584,128 +1652,145 @@ msgstr " (...)" msgid "Load another random image?" msgstr "Charger une autre image au hasard ?" -#: views.py:121 +#: views.py:96 +msgid "" +"PROJECT_SLUG is set to \"default\" change it in your local_settings (or ask " +"your admin to do it)." +msgstr "" +"PROJECT_SLUG a été laissé à la valeur « default » changez le dans votre " +"fichier local_settings (ou demandez à un administrateur de le faire)." + +#: views.py:101 +msgid "" +"The slug of your current profile is set to \"default\" change it on the " +"administration page (or ask your admin to do it)." +msgstr "" +"Le « slug » du profil actuellement utilisé a été laissé à la valeur « " +"default » changez le sur la page d'administration (ou demandez à un " +"administrateur de le faire)." + +#: views.py:129 msgid "New person" msgstr "Ajouter une personne" -#: views.py:129 +#: views.py:137 msgid "Person modification" msgstr "Modifier une personne" -#: views.py:144 +#: views.py:152 msgid "Person deletion" msgstr "Supprimer une personne" -#: views.py:155 +#: views.py:163 msgid "New organization" msgstr "Ajouter une organisation" -#: views.py:162 +#: views.py:170 msgid "Organization modification" msgstr "Modifier une organisation" -#: views.py:178 +#: views.py:186 msgid "Organization deletion" msgstr "Supprimer une organisation" -#: views.py:185 +#: views.py:193 msgid "Account management" msgstr "Gérer les comptes" -#: views.py:191 +#: views.py:199 msgid "Account deletion" msgstr "Supprimer un compte" -#: views.py:253 +#: views.py:261 msgid "Archaeological file" msgstr "Dossier" -#: views.py:254 +#: views.py:262 msgid "Operation" msgstr "Opération" -#: views.py:256 +#: views.py:264 msgid "Context record" msgstr "Unité d'Enregistrement" -#: views.py:258 +#: views.py:266 msgid "Find" msgstr "Mobilier" -#: views.py:260 +#: views.py:268 msgid "Treatment request" msgstr "Demande de traitement" -#: views.py:261 +#: views.py:269 msgid "Treatment" msgstr "Traitement" -#: views.py:1376 views.py:1419 +#: views.py:1384 views.py:1427 msgid "Operation not permitted." msgstr "Opération non permise." -#: views.py:1378 +#: views.py:1386 #, python-format msgid "New %s" msgstr "Nouveau %s" -#: views.py:1437 views.py:1496 +#: views.py:1445 views.py:1504 msgid "Archaeological files" msgstr "Dossiers" -#: views.py:1442 views.py:1507 +#: views.py:1450 views.py:1515 msgid "Finds" msgstr "Mobilier" -#: views.py:1444 views.py:1512 +#: views.py:1452 views.py:1520 msgid "Treatment requests" msgstr "Demandes de traitement" -#: views.py:1445 views.py:1518 +#: views.py:1453 views.py:1526 msgid "Treatments" msgstr "Traitements" -#: views.py:1715 templates/ishtar/import_list.html:47 +#: views.py:1723 templates/ishtar/import_list.html:47 msgid "Link unmatched items" msgstr "Associer les éléments non rapprochés" -#: views.py:1730 +#: views.py:1738 msgid "Delete import" msgstr "Supprimer un import" -#: views.py:1769 +#: views.py:1777 msgid "Merge persons" msgstr "Fusionner des personnes" -#: views.py:1793 +#: views.py:1801 msgid "Select the main person" msgstr "Choisir la personne principale" -#: views.py:1802 +#: views.py:1810 msgid "Merge organization" msgstr "Fusionner des organisations" -#: views.py:1812 +#: views.py:1820 msgid "Select the main organization" msgstr "Sélectionner l'organisation principale" -#: views.py:1852 views.py:1868 +#: views.py:1860 views.py:1876 msgid "Corporation manager" msgstr "Représentant de la personne morale" -#: widgets.py:313 widgets.py:420 widgets.py:535 +#: widgets.py:327 widgets.py:434 widgets.py:549 msgid "Search..." msgstr "Recherche..." -#: widgets.py:724 templatetags/window_tables.py:96 +#: widgets.py:738 templatetags/window_tables.py:96 msgid "No results" msgstr "Pas de résultats" -#: widgets.py:725 templatetags/window_tables.py:97 +#: widgets.py:739 templatetags/window_tables.py:97 msgid "Loading..." msgstr "Chargement..." -#: widgets.py:726 +#: widgets.py:740 msgid "Remove" msgstr "Enlever" @@ -1794,19 +1879,19 @@ msgstr "Éléments courants" msgid ":" msgstr " :" -#: templates/base.html:123 +#: templates/base.html:128 msgid "Processing..." msgstr "En traitement..." -#: templates/base.html:124 +#: templates/base.html:129 msgid "This can be long." msgstr "Cela peut être long." -#: templates/base.html:125 +#: templates/base.html:130 msgid "Time to take a coffee?" msgstr "Il est peut-être temps de prendre un café ?" -#: templates/base.html:126 +#: templates/base.html:131 msgid "Time to take another coffee?" msgstr "Pourquoi pas un autre café ?" diff --git a/version.py b/version.py index 32f59cc6b..59c615ef9 100644 --- a/version.py +++ b/version.py @@ -1,4 +1,4 @@ -VERSION = (0, 99, 19) +VERSION = (0, 99, 20) def get_version(): |