summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-02 10:10:59 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-09-02 10:10:59 +0200
commit151e42654a4bcfcff408c7799db199c71e81b5c5 (patch)
tree02786db1039902c7cc75f76aa7159829299970ac
parent661218e0acd24fc3bca76229b61d0cb91a54be1c (diff)
parent5eb8667794636e379a8c324da46c617ad365747a (diff)
downloadIshtar-151e42654a4bcfcff408c7799db199c71e81b5c5.tar.bz2
Ishtar-151e42654a4bcfcff408c7799db199c71e81b5c5.zip
Merge branch 'master' into v0.9
-rw-r--r--CHANGES.md16
-rw-r--r--archaeological_context_records/forms.py29
-rw-r--r--archaeological_context_records/locale/django.pot62
-rw-r--r--archaeological_files/data_importer.py4
-rw-r--r--archaeological_files/forms.py30
-rw-r--r--archaeological_files/locale/django.pot118
-rw-r--r--archaeological_files/models.py4
-rw-r--r--archaeological_files/tests.py2
-rw-r--r--archaeological_files_pdl/forms.py18
-rw-r--r--archaeological_files_pdl/locale/django.pot48
-rw-r--r--archaeological_finds/forms.py40
-rw-r--r--archaeological_finds/locale/django.pot144
-rw-r--r--archaeological_operations/forms.py35
-rw-r--r--archaeological_operations/locale/django.pot238
-rw-r--r--archaeological_operations/utils.py4
-rw-r--r--archaeological_warehouse/forms.py12
-rw-r--r--archaeological_warehouse/locale/django.pot24
-rw-r--r--docs/fr/source/installation.rst4
-rw-r--r--install/nginx.conf.template2
-rw-r--r--ishtar_common/admin.py6
-rw-r--r--ishtar_common/forms.py31
-rw-r--r--ishtar_common/forms_common.py37
-rw-r--r--ishtar_common/locale/django.pot568
-rw-r--r--ishtar_common/migrations/0055_auto.py415
-rw-r--r--ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py434
-rw-r--r--ishtar_common/migrations/0057_rename_pretitle_old_title.py421
-rw-r--r--ishtar_common/migrations/0058_generate_title.py435
-rw-r--r--ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py419
-rw-r--r--ishtar_common/migrations/0060_auto__add_historicalperson.py498
-rw-r--r--ishtar_common/models.py81
-rw-r--r--ishtar_common/ooo_translation.py7
-rw-r--r--ishtar_common/templates/base.html2
-rw-r--r--ishtar_common/templates/ishtar/sheet_organization.html14
-rw-r--r--ishtar_common/templates/ishtar/sheet_person.html13
-rw-r--r--ishtar_common/tests.py51
-rw-r--r--ishtar_common/utils.py2
-rw-r--r--ishtar_common/wizards.py2
-rw-r--r--translations/de/ishtar_common.po570
-rw-r--r--translations/fr/archaeological_context_records.po64
-rw-r--r--translations/fr/archaeological_files.po120
-rw-r--r--translations/fr/archaeological_files_pdl.po50
-rw-r--r--translations/fr/archaeological_finds.po146
-rw-r--r--translations/fr/archaeological_operations.po240
-rw-r--r--translations/fr/archaeological_warehouse.po26
-rw-r--r--translations/fr/ishtar_common.po574
-rw-r--r--version.py2
46 files changed, 4480 insertions, 1582 deletions
diff --git a/CHANGES.md b/CHANGES.md
index 0e12ef0f0..affe96683 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -1,6 +1,22 @@
Ishtar changelog
================
+0.97.4 (2016-09-02)
+-------------------
+
+### Features ###
+
+- Non-available types are displayed when modifying old items using theses types
+- Title types are no more hard-coded
+- Archive item to exclude them from merge detection mechanism (python API only)
+- Organization, Person sheets: add link to files
+- Install: default nginx conf wait after long uwsgi response
+
+### Bug fixes ###
+
+- Account modify: fix bad initialization of the form
+- Imports: delete town when associated import is deleted
+
0.97.3 (2016-08-29)
-------------------
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index f3bbb1b65..4f10014de 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.py
@@ -36,7 +36,7 @@ import models
from ishtar_common import widgets
from archaeological_operations.widgets import OAWidget
from ishtar_common.forms import FinalForm, FormSet, \
- reverse_lazy, get_form_selection, TableSelect
+ reverse_lazy, get_form_selection, TableSelect, ManageOldType
from ishtar_common.forms_common import get_town_field, SourceSelect
from archaeological_operations.forms import OperationSelect, ParcelField,\
RecordRelationsForm as OpeRecordRelationsForm
@@ -114,7 +114,7 @@ class RecordFormSelection(forms.Form):
return cleaned_data
-class RecordFormGeneral(forms.Form):
+class RecordFormGeneral(ManageOldType, forms.Form):
form_label = _("General")
associated_models = {'parcel': Parcel, 'unit': models.Unit}
pk = forms.IntegerField(required=False, widget=forms.HiddenInput)
@@ -162,7 +162,8 @@ class RecordFormGeneral(forms.Form):
(" - ".join([k for k in key if k]),
[(parcel.pk, parcel.short_label) for parcel in gparcels])
)
- self.fields['unit'].choices = models.Unit.get_types()
+ self.fields['unit'].choices = models.Unit.get_types(
+ initial=self.init_data.get('unit'))
self.fields['unit'].help_text = models.Unit.get_help()
def clean(self):
@@ -180,7 +181,7 @@ class RecordFormGeneral(forms.Form):
return cleaned_data
-class DatingForm(forms.Form):
+class DatingForm(ManageOldType, forms.Form):
form_label = _("Dating")
base_model = 'dating'
associated_models = {'dating_type': models.DatingType,
@@ -195,11 +196,14 @@ class DatingForm(forms.Form):
def __init__(self, *args, **kwargs):
super(DatingForm, self).__init__(*args, **kwargs)
- self.fields['dating_type'].choices = models.DatingType.get_types()
+ self.fields['dating_type'].choices = models.DatingType.get_types(
+ initial=self.init_data.get('dating_type'))
self.fields['dating_type'].help_text = models.DatingType.get_help()
- self.fields['quality'].choices = models.DatingQuality.get_types()
+ self.fields['quality'].choices = models.DatingQuality.get_types(
+ initial=self.init_data.get('quality'))
self.fields['quality'].help_text = models.DatingQuality.get_help()
- self.fields['period'].choices = Period.get_types()
+ self.fields['period'].choices = Period.get_types(
+ initial=self.init_data.get('period'))
self.fields['period'].help_text = Period.get_help()
@@ -229,7 +233,8 @@ class RecordRelationsForm(OpeRecordRelationsForm):
kwargs.pop('files')
super(RecordRelationsForm, self).__init__(*args, **kwargs)
self.fields['relation_type'].choices = \
- models.RelationType.get_types()
+ models.RelationType.get_types(
+ initial=self.init_data.get('relation_type'))
if crs:
self.fields['right_record'].choices = [('', '-' * 2)] + crs
@@ -237,7 +242,7 @@ RecordRelationsFormSet = formset_factory(RecordRelationsForm, can_delete=True)
RecordRelationsFormSet.form_label = _(u"Relations")
-class RecordFormInterpretation(forms.Form):
+class RecordFormInterpretation(ManageOldType, forms.Form):
form_label = _("Interpretation")
associated_models = {'activity': models.ActivityType,
'identification': models.IdentificationType}
@@ -263,10 +268,12 @@ class RecordFormInterpretation(forms.Form):
def __init__(self, *args, **kwargs):
super(RecordFormInterpretation, self).__init__(*args, **kwargs)
- self.fields['activity'].choices = models.ActivityType.get_types()
+ self.fields['activity'].choices = models.ActivityType.get_types(
+ initial=self.init_data.get('activity'))
self.fields['activity'].help_text = models.ActivityType.get_help()
self.fields['identification'].choices = \
- models.IdentificationType.get_types()
+ models.IdentificationType.get_types(
+ initial=self.init_data.get('identification'))
self.fields['identification'].help_text = \
models.IdentificationType.get_help()
diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot
index 8daef7bec..3f3ab428e 100644
--- a/archaeological_context_records/locale/django.pot
+++ b/archaeological_context_records/locale/django.pot
@@ -32,7 +32,7 @@ msgstr ""
msgid "Search within operation relations"
msgstr ""
-#: forms.py:64 forms.py:189 models.py:48
+#: forms.py:64 forms.py:190 models.py:48
msgid "Period"
msgstr ""
@@ -48,7 +48,7 @@ msgstr ""
msgid "Search within relations"
msgstr ""
-#: forms.py:98 forms.py:288 views.py:118
+#: forms.py:98 forms.py:295 views.py:118
msgid "Context record search"
msgstr ""
@@ -94,120 +94,120 @@ msgstr ""
msgid "Location"
msgstr ""
-#: forms.py:178
+#: forms.py:179
msgid "This ID already exists for this operation."
msgstr ""
-#: forms.py:184 forms.py:208 models.py:59
+#: forms.py:185 forms.py:212 models.py:59
msgid "Dating"
msgstr ""
-#: forms.py:190 models.py:49
+#: forms.py:191 models.py:49
msgid "Start date"
msgstr ""
-#: forms.py:191 models.py:50 models.py:135
+#: forms.py:192 models.py:50 models.py:135
msgid "End date"
msgstr ""
-#: forms.py:192 models.py:53
+#: forms.py:193 models.py:53
msgid "Quality"
msgstr ""
-#: forms.py:193 models.py:35 models.py:51
+#: forms.py:194 models.py:35 models.py:51
msgid "Dating type"
msgstr ""
-#: forms.py:217 ishtar_menu.py:29 models.py:354
+#: forms.py:221 ishtar_menu.py:29 models.py:354
msgid "Context record"
msgstr ""
-#: forms.py:237
+#: forms.py:242
msgid "Relations"
msgstr ""
-#: forms.py:241 forms.py:251 models.py:153
+#: forms.py:246 forms.py:256 models.py:153
#: templates/ishtar/sheet_contextrecord.html:37
msgid "Interpretation"
msgstr ""
-#: forms.py:245
+#: forms.py:250
msgid "Comments on dating"
msgstr ""
-#: forms.py:247 models.py:150
+#: forms.py:252 models.py:150
msgid "Has furniture?"
msgstr ""
-#: forms.py:249 models.py:152
+#: forms.py:254 models.py:152
msgid "Filling"
msgstr ""
-#: forms.py:253 models.py:173
+#: forms.py:258 models.py:173
msgid "Activity"
msgstr ""
-#: forms.py:255 models.py:171
+#: forms.py:260 models.py:171
msgid "Identification"
msgstr ""
-#: forms.py:257 models.py:156
+#: forms.py:262 models.py:156
msgid "TAQ"
msgstr ""
-#: forms.py:258 models.py:160
+#: forms.py:263 models.py:160
msgid "Estimated TAQ"
msgstr ""
-#: forms.py:260 models.py:163
+#: forms.py:265 models.py:163
msgid "TPQ"
msgstr ""
-#: forms.py:261 models.py:167
+#: forms.py:266 models.py:167
msgid "Estimated TPQ"
msgstr ""
-#: forms.py:274
+#: forms.py:281
msgid "Operation search"
msgstr ""
-#: forms.py:276
+#: forms.py:283
msgid "You should select an operation."
msgstr ""
-#: forms.py:281
+#: forms.py:288
msgid "Would you like to delete this context record?"
msgstr ""
-#: forms.py:290
+#: forms.py:297
msgid "You should select a context record."
msgstr ""
-#: forms.py:295
+#: forms.py:302
msgid "Year of the operation"
msgstr ""
-#: forms.py:297
+#: forms.py:304
msgid "Numeric reference"
msgstr ""
-#: forms.py:303
+#: forms.py:310
msgid "Town of the operation"
msgstr ""
-#: forms.py:305
+#: forms.py:312
msgid "Period of the context record"
msgstr ""
-#: forms.py:307
+#: forms.py:314
msgid "Unit type of the context record"
msgstr ""
-#: forms.py:320
+#: forms.py:327
msgid "Documentation search"
msgstr ""
-#: forms.py:322
+#: forms.py:329
msgid "You should select a document."
msgstr ""
diff --git a/archaeological_files/data_importer.py b/archaeological_files/data_importer.py
index ba92c63ab..96b2ee007 100644
--- a/archaeological_files/data_importer.py
+++ b/archaeological_files/data_importer.py
@@ -23,7 +23,7 @@ import unicodecsv
from django.conf import settings
from ishtar_common.data_importer import *
-from ishtar_common.models import Person, OrganizationType
+from ishtar_common.models import OrganizationType
from archaeological_operations.data_importer import *
@@ -113,7 +113,7 @@ class FileImporterSraPdL(FilePostProcessing, Importer):
None, # D, 4
ImportFormater(
"general_contractor__title", # E, 5
- StrChoiceFormater(Person.TYPE, cli=True),
+ TypeFormater(models.TitleType),
required=False,
comment=u"Aménageur - titre"),
None, # F, 6
diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py
index 369ffdaf0..26b839940 100644
--- a/archaeological_files/forms.py
+++ b/archaeological_files/forms.py
@@ -33,7 +33,8 @@ from ishtar_common.models import Person, PersonType, Organization, \
from archaeological_operations.models import ActType, AdministrativeAct, \
OperationType
import models
-from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect
+from ishtar_common.forms import FinalForm, get_now, reverse_lazy, TableSelect, \
+ ManageOldType
from ishtar_common.forms_common import get_town_field
from archaeological_operations.forms import AdministrativeActOpeForm, \
AdministrativeActOpeFormSelection, \
@@ -103,7 +104,8 @@ class FileSelect(TableSelect):
def __init__(self, *args, **kwargs):
super(FileSelect, self).__init__(*args, **kwargs)
- self.fields['saisine_type'].choices = models.SaisineType.get_types()
+ self.fields['saisine_type'].choices = \
+ models.SaisineType.get_types()
self.fields['saisine_type'].help_text = models.SaisineType.get_help()
self.fields['permit_type'].choices = models.PermitType.get_types()
self.fields['permit_type'].help_text = models.PermitType.get_help()
@@ -195,7 +197,7 @@ class DashboardForm(forms.Form):
return fltr
-class FileFormGeneral(forms.Form):
+class FileFormGeneral(ManageOldType, forms.Form):
form_label = _("General")
associated_models = {'in_charge': Person,
'related_file': models.File,
@@ -237,7 +239,8 @@ class FileFormGeneral(forms.Form):
def __init__(self, *args, **kwargs):
super(FileFormGeneral, self).__init__(*args, **kwargs)
- self.fields['file_type'].choices = models.FileType.get_types()
+ self.fields['file_type'].choices = models.FileType.get_types(
+ initial=self.init_data.get('file_type'))
self.fields['file_type'].help_text = models.FileType.get_help()
q = models.File.objects\
.filter(internal_reference__isnull=False)\
@@ -276,7 +279,7 @@ RESPONSIBLE_PLANNING_SERVICE_ORGA, created = \
OrganizationType.objects.get_or_create(txt_idx='planning_service')
-class FileFormPreventive(forms.Form):
+class FileFormPreventive(ManageOldType, forms.Form):
form_label = _(u"Preventive informations")
associated_models = {'general_contractor': Person,
'saisine_type': models.SaisineType,
@@ -322,14 +325,18 @@ class FileFormPreventive(forms.Form):
def __init__(self, *args, **kwargs):
super(FileFormPreventive, self).__init__(*args, **kwargs)
- self.fields['saisine_type'].choices = models.SaisineType.get_types()
- self.fields['saisine_type'].help_text = models.SaisineType.get_help()
+ if 'saisine_type' in self.fields:
+ self.fields['saisine_type'].choices = \
+ models.SaisineType.get_types(
+ initial=self.init_data.get('saisine_type'))
+ self.fields['saisine_type'].help_text = \
+ models.SaisineType.get_help()
self.fields['permit_type'].choices = models.PermitType.get_types(
- default='NP')
+ initial=self.init_data.get('permit_type'), default='NP')
self.fields['permit_type'].help_text = models.PermitType.get_help()
-class FileFormResearch(forms.Form):
+class FileFormResearch(ManageOldType, forms.Form):
form_label = _("Research archaeology")
base_model = 'department'
associated_models = {'scientist': Person,
@@ -376,7 +383,9 @@ class FileFormResearch(forms.Form):
def __init__(self, *args, **kwargs):
super(FileFormResearch, self).__init__(*args, **kwargs)
self.fields['requested_operation_type'].choices = \
- OperationType.get_types(dct={"preventive": False})
+ OperationType.get_types(
+ dct={"preventive": False},
+ initial=self.init_data.get('requested_operation_type'))
self.fields['requested_operation_type'].help_text = \
OperationType.get_help()
@@ -535,6 +544,7 @@ class AdministrativeActFileForm(AdministrativeActOpeForm):
def __init__(self, *args, **kwargs):
super(AdministrativeActFileForm, self).__init__(*args, **kwargs)
self.fields['act_type'].choices = ActType.get_types(
+ initial=self.init_data.get('act_type'),
dct={'intented_to': 'F'})
self.fields['act_type'].help_text = ActType.get_help(
dct={'intented_to': 'F'})
diff --git a/archaeological_files/locale/django.pot b/archaeological_files/locale/django.pot
index d1d5e5820..b8146add8 100644
--- a/archaeological_files/locale/django.pot
+++ b/archaeological_files/locale/django.pot
@@ -8,243 +8,243 @@
msgid ""
msgstr ""
-#: forms.py:51 forms.py:210 forms.py:254 forms.py:395 forms.py:422
+#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431
#: models.py:76 templates/ishtar/sheet_file.html:139
msgid "Year"
msgstr ""
-#: forms.py:52 forms.py:215 forms.py:256 models.py:79
+#: forms.py:53 forms.py:217 forms.py:259 models.py:79
msgid "Numeric reference"
msgstr ""
-#: forms.py:54 forms.py:217
+#: forms.py:55 forms.py:219
msgid "Other reference"
msgstr ""
-#: forms.py:56 forms.py:430
+#: forms.py:57 forms.py:439
msgid "Parcel (section/number/public domain)"
msgstr ""
-#: forms.py:59 forms.py:406 forms.py:433 models.py:512
+#: forms.py:60 forms.py:415 forms.py:442 models.py:512
msgid "Department"
msgstr ""
-#: forms.py:60 forms.py:442
+#: forms.py:61 forms.py:451
msgid "File name"
msgstr ""
-#: forms.py:61 forms.py:156 forms.py:221 models.py:87
+#: forms.py:62 forms.py:158 forms.py:223 models.py:87
msgid "File type"
msgstr ""
-#: forms.py:62
+#: forms.py:63
msgid "Is active?"
msgstr ""
-#: forms.py:63 forms.py:158 forms.py:318
+#: forms.py:64 forms.py:160 forms.py:321
msgid "Saisine type"
msgstr ""
-#: forms.py:64 forms.py:308 models.py:58 models.py:118
+#: forms.py:65 forms.py:311 models.py:58 models.py:118
msgid "Permit type"
msgstr ""
-#: forms.py:66 forms.py:311 models.py:119
+#: forms.py:67 forms.py:314 models.py:119
msgid "Permit reference"
msgstr ""
-#: forms.py:67 forms.py:227 forms.py:365 models.py:148
+#: forms.py:68 forms.py:229 forms.py:372 models.py:148
#: templates/ishtar/sheet_file.html:94
msgid "Comment"
msgstr ""
-#: forms.py:69 templates/ishtar/sheet_file.html:112
+#: forms.py:70 templates/ishtar/sheet_file.html:112
msgid "In charge"
msgstr ""
-#: forms.py:76 forms.py:286 forms.py:444 models.py:94
+#: forms.py:77 forms.py:289 forms.py:453 models.py:94
msgid "General contractor"
msgstr ""
-#: forms.py:83 forms.py:453
+#: forms.py:84 forms.py:462
msgid "Organization of general contractor"
msgstr ""
-#: forms.py:90 forms.py:476
+#: forms.py:91 forms.py:485
msgid "Created by"
msgstr ""
-#: forms.py:97 forms.py:484
+#: forms.py:98 forms.py:493
msgid "Modified by"
msgstr ""
-#: forms.py:127
+#: forms.py:129
msgid "Archaeological file search"
msgstr ""
-#: forms.py:141
+#: forms.py:143
msgid "You should select a file."
msgstr ""
-#: forms.py:144 forms.py:219 models.py:127
+#: forms.py:146 forms.py:221 models.py:127
msgid "Creation date"
msgstr ""
-#: forms.py:145 forms.py:321 models.py:129
+#: forms.py:147 forms.py:324 models.py:129
msgid "Reception date"
msgstr ""
-#: forms.py:150
+#: forms.py:152
msgid "Slicing"
msgstr ""
-#: forms.py:152
+#: forms.py:154
msgid "Department detail"
msgstr ""
-#: forms.py:154
+#: forms.py:156
msgid "Date get from"
msgstr ""
-#: forms.py:160
+#: forms.py:162
msgid "Date after"
msgstr ""
-#: forms.py:162
+#: forms.py:164
msgid "Date before"
msgstr ""
-#: forms.py:199 templates/ishtar/sheet_file.html:14
+#: forms.py:201 templates/ishtar/sheet_file.html:14
msgid "General"
msgstr ""
-#: forms.py:204 models.py:89
+#: forms.py:206 models.py:89
msgid "Person in charge"
msgstr ""
-#: forms.py:218 models.py:86
+#: forms.py:220 models.py:86
msgid "Name"
msgstr ""
-#: forms.py:223 models.py:131
+#: forms.py:225 models.py:131
msgid "Related file"
msgstr ""
-#: forms.py:231 models.py:139
+#: forms.py:233 models.py:139
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:234 models.py:145
+#: forms.py:236 models.py:145
msgid "Main address"
msgstr ""
-#: forms.py:235
+#: forms.py:237
msgid "Main address - complement"
msgstr ""
-#: forms.py:247
+#: forms.py:250
#, python-format
msgid "<br/>(last recorded: %s)"
msgstr ""
-#: forms.py:269
+#: forms.py:272
msgid "Another file with this numeric id exists."
msgstr ""
-#: forms.py:280
+#: forms.py:283
msgid "Preventive informations"
msgstr ""
-#: forms.py:298 models.py:106
+#: forms.py:301 models.py:106
msgid "Responsible for town planning service"
msgstr ""
-#: forms.py:314 models.py:142
+#: forms.py:317 models.py:142
msgid "Total developed surface (m2)"
msgstr ""
-#: forms.py:333 templates/ishtar/sheet_file.html:84
+#: forms.py:340 templates/ishtar/sheet_file.html:84
#: templates/ishtar/dashboards/dashboard_file.html:45
msgid "Research archaeology"
msgstr ""
-#: forms.py:341 models.py:151 templates/ishtar/sheet_file.html:85
+#: forms.py:348 models.py:151 templates/ishtar/sheet_file.html:85
msgid "Departments"
msgstr ""
-#: forms.py:352 models.py:160
+#: forms.py:359 models.py:160
msgid "Scientist in charge"
msgstr ""
-#: forms.py:354 models.py:154 templates/ishtar/sheet_file.html:87
+#: forms.py:361 models.py:154 templates/ishtar/sheet_file.html:87
msgid "Requested operation type"
msgstr ""
-#: forms.py:356
+#: forms.py:363
msgid "Lead organization"
msgstr ""
-#: forms.py:372 models.py:164 templates/ishtar/sheet_file.html:92
+#: forms.py:379 models.py:164 templates/ishtar/sheet_file.html:92
msgid "Classified area"
msgstr ""
-#: forms.py:374 models.py:166 templates/ishtar/sheet_file.html:93
+#: forms.py:381 models.py:166 templates/ishtar/sheet_file.html:93
msgid "Protected area"
msgstr ""
-#: forms.py:386
+#: forms.py:395
msgid "Would you like to close this archaeological file?"
msgstr ""
-#: forms.py:391
+#: forms.py:400
msgid "Would you like to delete this archaelogical file ?"
msgstr ""
-#: forms.py:396 forms.py:423 forms.py:546
+#: forms.py:405 forms.py:432 forms.py:556
msgid "Index"
msgstr ""
-#: forms.py:400 forms.py:427 forms.py:533
+#: forms.py:409 forms.py:436 forms.py:542
msgid "Act type"
msgstr ""
-#: forms.py:401
+#: forms.py:410
msgid "Object (full text search)"
msgstr ""
-#: forms.py:428
+#: forms.py:437
msgid "Indexed?"
msgstr ""
-#: forms.py:434
+#: forms.py:443
msgid "Object"
msgstr ""
-#: forms.py:438
+#: forms.py:447
msgid "Signature date after"
msgstr ""
-#: forms.py:440
+#: forms.py:449
msgid "Signature date before"
msgstr ""
-#: forms.py:461
+#: forms.py:470
msgid "File numeric reference"
msgstr ""
-#: forms.py:462
+#: forms.py:471
msgid "File year"
msgstr ""
-#: forms.py:464
+#: forms.py:473
msgid "File other reference"
msgstr ""
-#: forms.py:466
+#: forms.py:475
msgid "File in charge"
msgstr ""
-#: forms.py:474
+#: forms.py:483
msgid "File permit reference"
msgstr ""
diff --git a/archaeological_files/models.py b/archaeological_files/models.py
index 1cfbe35d3..98223d7ff 100644
--- a/archaeological_files/models.py
+++ b/archaeological_files/models.py
@@ -30,7 +30,7 @@ from ishtar_common.utils import cached_label_changed, get_cache
from ishtar_common.models import GeneralType, BaseHistorizedItem, \
HistoricalRecords, OwnPerms, Person, Organization, Department, Town, \
- Dashboard, DashboardFormItem, IshtarUser, ValueGetter, ShortMenuItem, \
+ Dashboard, DashboardFormItem, ValueGetter, ShortMenuItem, \
OperationType, get_external_id
from archaeological_operations.models import get_values_town_related, \
@@ -243,7 +243,7 @@ class File(ClosedItem, BaseHistorizedItem, OwnPerms, ValueGetter,
if self.general_contractor:
if self.general_contractor.name:
address = u" ".join([
- getattr(self.general_contractor, key)
+ unicode(getattr(self.general_contractor, key))
for key in ('title', 'surname', 'name')
if getattr(self.general_contractor, key)])
elif self.general_contractor.raw_name:
diff --git a/archaeological_files/tests.py b/archaeological_files/tests.py
index 030bc1624..63b8550e2 100644
--- a/archaeological_files/tests.py
+++ b/archaeological_files/tests.py
@@ -50,7 +50,7 @@ class FileInit(object):
self.extra_models['person_type'] = person_type
self.model_list.append(person_type)
- person = models.Person(title='Mr', surname='Surname', name='Name',
+ person = models.Person(surname='Surname', name='Name',
history_modifier=self.o_user)
person.save()
self.extra_models['person'] = person
diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py
index a182d0f0e..99dc97137 100644
--- a/archaeological_files_pdl/forms.py
+++ b/archaeological_files_pdl/forms.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2014-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2014-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -27,7 +27,7 @@ from django.utils.translation import ugettext_lazy as _
from ishtar_common.models import Person, Town, Department, valid_id
from archaeological_files import models
-from ishtar_common.forms import get_now, reverse_lazy
+from ishtar_common.forms import get_now, reverse_lazy, ManageOldType
from archaeological_files.forms import GENERAL_CONTRACTOR, \
GENERAL_CONTRACTOR_ORGA, RESPONSIBLE_PLANNING_SERVICE, \
RESPONSIBLE_PLANNING_SERVICE_ORGA
@@ -37,7 +37,7 @@ from archaeological_operations.forms import SRA_AGENT
from ishtar_common import widgets
-class FileFormGeneral(forms.Form):
+class FileFormGeneral(ManageOldType, forms.Form):
form_label = _("General")
associated_models = {'file_type': models.FileType}
file_type = forms.ChoiceField(label=_("File type"), choices=[])
@@ -52,7 +52,8 @@ class FileFormGeneral(forms.Form):
def __init__(self, *args, **kwargs):
super(FileFormGeneral, self).__init__(*args, **kwargs)
- self.fields['file_type'].choices = models.FileType.get_types()
+ self.fields['file_type'].choices = models.FileType.get_types(
+ initial=self.init_data.get('file_type'))
self.fields['file_type'].help_text = models.FileType.get_help()
def clean_reception_date(self):
@@ -63,7 +64,7 @@ class FileFormGeneral(forms.Form):
return value
-class FileFormPreventiveType(forms.Form):
+class FileFormPreventiveType(ManageOldType, forms.Form):
form_label = u"Saisine"
associated_models = {'saisine_type': models.SaisineType,
'permit_type': models.PermitType}
@@ -74,10 +75,11 @@ class FileFormPreventiveType(forms.Form):
def __init__(self, *args, **kwargs):
super(FileFormPreventiveType, self).__init__(*args, **kwargs)
- self.fields['saisine_type'].choices = models.SaisineType.get_types()
+ self.fields['saisine_type'].choices = models.SaisineType.get_types(
+ initial=self.init_data.get('saisine_type'))
self.fields['saisine_type'].help_text = models.SaisineType.get_help()
- self.fields['permit_type'].choices = \
- models.PermitType.get_types(default='NP')
+ self.fields['permit_type'].choices = models.PermitType.get_types(
+ default='NP', initial=self.init_data.get('permit_type'))
self.fields['permit_type'].help_text = models.PermitType.get_help()
diff --git a/archaeological_files_pdl/locale/django.pot b/archaeological_files_pdl/locale/django.pot
index a4f73fea5..5c3d03a37 100644
--- a/archaeological_files_pdl/locale/django.pot
+++ b/archaeological_files_pdl/locale/django.pot
@@ -15,7 +15,7 @@ msgstr ""
msgid "File type"
msgstr ""
-#: forms.py:44 forms.py:401
+#: forms.py:44 forms.py:403
msgid "Year"
msgstr ""
@@ -27,97 +27,97 @@ msgstr ""
msgid "Reception date"
msgstr ""
-#: forms.py:62
+#: forms.py:63
msgid "Reception date cannot be after today."
msgstr ""
-#: forms.py:70
+#: forms.py:71
msgid "Permit type"
msgstr ""
-#: forms.py:72
+#: forms.py:73
msgid "Saisine type"
msgstr ""
-#: forms.py:85
+#: forms.py:87
msgid "Planning"
msgstr ""
-#: forms.py:88
+#: forms.py:90
msgid "Planning name"
msgstr ""
-#: forms.py:91 forms.py:121
+#: forms.py:93 forms.py:123
#: templates/ishtar/wizard/wizard_preventiveplanning.html:31
msgid "Towns"
msgstr ""
-#: forms.py:93 forms.py:123
+#: forms.py:95 forms.py:125
#: templates/ishtar/wizard/wizard_preventiveplanning.html:41
msgid "Departments"
msgstr ""
-#: forms.py:94 forms.py:124
+#: forms.py:96 forms.py:126
msgid "Locality"
msgstr ""
-#: forms.py:97 forms.py:127
+#: forms.py:99 forms.py:129
msgid "Address (number/street)"
msgstr ""
-#: forms.py:98 forms.py:128
+#: forms.py:100 forms.py:130
msgid "Number/street"
msgstr ""
-#: forms.py:100 forms.py:130
+#: forms.py:102 forms.py:132
msgid "Postal code"
msgstr ""
-#: forms.py:105
+#: forms.py:107
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:110
+#: forms.py:112
msgid "Total developed surface (m2)"
msgstr ""
-#: forms.py:117
+#: forms.py:119
msgid "Address"
msgstr ""
-#: forms.py:231 forms.py:235 forms.py:265 forms.py:268
+#: forms.py:233 forms.py:237 forms.py:267 forms.py:270
msgid "General contractor"
msgstr ""
-#: forms.py:250 forms.py:362
+#: forms.py:252 forms.py:364
msgid "In charge"
msgstr ""
-#: forms.py:340
+#: forms.py:342
msgid "Town planning service"
msgstr ""
-#: forms.py:344
+#: forms.py:346
msgid "File reference"
msgstr ""
-#: forms.py:347
+#: forms.py:349
msgid "Planning service"
msgstr ""
-#: forms.py:381
+#: forms.py:383
msgid "Person in charge"
msgstr ""
-#: forms.py:393
+#: forms.py:395
msgid "Related file"
msgstr ""
-#: forms.py:397
+#: forms.py:399
msgid "Comment"
msgstr ""
-#: forms.py:404
+#: forms.py:406
msgid "Numeric reference"
msgstr ""
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py
index 1ca359cce..6c6f41457 100644
--- a/archaeological_finds/forms.py
+++ b/archaeological_finds/forms.py
@@ -41,7 +41,8 @@ import models
from ishtar_common import widgets
from archaeological_operations.widgets import OAWidget
from ishtar_common.forms import FormSet, FloatField, \
- get_form_selection, reverse_lazy, TableSelect, get_now, FinalForm
+ get_form_selection, reverse_lazy, TableSelect, get_now, FinalForm, \
+ ManageOldType
from ishtar_common.forms_common import get_town_field, SourceSelect
@@ -77,7 +78,7 @@ class RecordFormSelection(forms.Form):
cr.operation.pk)
-class FindForm(forms.Form):
+class FindForm(ManageOldType, forms.Form):
file_upload = True
form_label = _("Find")
base_models = ['get_first_base_find', 'object_type', 'material_type',
@@ -147,22 +148,28 @@ class FindForm(forms.Form):
def __init__(self, *args, **kwargs):
super(FindForm, self).__init__(*args, **kwargs)
self.fields['checked'].choices = models.CHECK_CHOICES
- self.fields['material_type'].choices = models.MaterialType.get_types()
self.fields['material_type'].help_text = models.MaterialType.get_help()
self.fields['conservatory_state'].choices = \
- models.ConservatoryState.get_types()
+ models.ConservatoryState.get_types(
+ initial=self.init_data.get('conservatory_state'))
self.fields['conservatory_state'].help_text = \
models.ConservatoryState.get_help()
self.fields['preservation_to_consider'].choices = \
- models.PreservationType.get_types(empty_first=False)
+ models.PreservationType.get_types(
+ empty_first=False,
+ initial=self.init_data.get('preservation_to_consider'))
self.fields['preservation_to_consider'].help_text = \
models.PreservationType.get_help()
self.fields['integritie'].choices = \
- models.IntegrityType.get_types(empty_first=False)
+ models.IntegrityType.get_types(
+ empty_first=False,
+ initial=self.init_data.get('integritie'))
self.fields['integritie'].help_text = \
models.IntegrityType.get_help()
self.fields['remarkabilitie'].choices = \
- models.RemarkabilityType.get_types(empty_first=False)
+ models.RemarkabilityType.get_types(
+ empty_first=False,
+ initial=self.init_data.get('remarkabilitie'))
self.fields['remarkabilitie'].help_text = \
models.RemarkabilityType.get_help()
self.fields['estimated_value'].label = u"{} ({})".format(
@@ -170,7 +177,7 @@ class FindForm(forms.Form):
get_current_profile().currency)
-class DateForm(forms.Form):
+class DateForm(ManageOldType, forms.Form):
form_label = _("Dating")
base_model = 'dating'
associated_models = {'dating_type': DatingType,
@@ -189,11 +196,14 @@ class DateForm(forms.Form):
def __init__(self, *args, **kwargs):
super(DateForm, self).__init__(*args, **kwargs)
- self.fields['dating_type'].choices = DatingType.get_types()
+ self.fields['dating_type'].choices = DatingType.get_types(
+ initial=self.init_data.get('dating_type'))
self.fields['dating_type'].help_text = DatingType.get_help()
- self.fields['period'].choices = Period.get_types()
+ self.fields['period'].choices = Period.get_types(
+ initial=self.init_data.get('period'))
self.fields['period'].help_text = Period.get_help()
- self.fields['quality'].choices = DatingQuality.get_types()
+ self.fields['quality'].choices = DatingQuality.get_types(
+ initial=self.init_data.get('quality'))
self.fields['quality'].help_text = DatingQuality.get_help()
@@ -405,7 +415,7 @@ def check_treatment(form_name, type_key, type_list=[], not_type_list=[]):
return func
-class ResultFindForm(forms.Form):
+class ResultFindForm(ManageOldType, forms.Form):
form_label = _(u"Resulting find")
associated_models = {'material_type': models.MaterialType}
label = forms.CharField(
@@ -420,7 +430,8 @@ class ResultFindForm(forms.Form):
def __init__(self, *args, **kwargs):
super(ResultFindForm, self).__init__(*args, **kwargs)
- self.fields['material_type'].choices = models.MaterialType.get_types()
+ self.fields['material_type'].choices = models.MaterialType.get_types(
+ initial=self.init_data.get('material_type'))
self.fields['material_type'].help_text = models.MaterialType.get_help()
ResultFindFormSet = formset_factory(ResultFindForm, can_delete=True,
@@ -555,7 +566,7 @@ class FindBasketAddItemForm(forms.Form):
return basket
-class BaseTreatmentForm(SelectFindBasketForm):
+class BaseTreatmentForm(ManageOldType, SelectFindBasketForm):
form_label = _(u"Base treatment")
associated_models = {'treatment_type': models.TreatmentType,
'person': Person,
@@ -584,6 +595,7 @@ class BaseTreatmentForm(SelectFindBasketForm):
def __init__(self, *args, **kwargs):
super(BaseTreatmentForm, self).__init__(*args, **kwargs)
self.fields['treatment_type'].choices = models.TreatmentType.get_types(
+ initial=self.init_data.get('treatment_type'),
exclude=['packaging'])
self.fields['treatment_type'].help_text = \
models.TreatmentType.get_help(exclude=['packaging'])
diff --git a/archaeological_finds/locale/django.pot b/archaeological_finds/locale/django.pot
index 19327cda6..ba5742288 100644
--- a/archaeological_finds/locale/django.pot
+++ b/archaeological_finds/locale/django.pot
@@ -8,299 +8,299 @@
msgid ""
msgstr ""
-#: forms.py:49 forms.py:53 wizards.py:62
+#: forms.py:50 forms.py:54 wizards.py:62
msgid "Context record"
msgstr ""
-#: forms.py:82 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747
+#: forms.py:83 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747
#: models.py:891 templates/ishtar/sheet_find.html:5
msgid "Find"
msgstr ""
-#: forms.py:93 forms.py:208 forms.py:412 models.py:113 models.py:317
+#: forms.py:94 forms.py:218 forms.py:422 models.py:113 models.py:317
msgid "Free ID"
msgstr ""
-#: forms.py:95 models.py:365
+#: forms.py:96 models.py:365
msgid "Previous ID"
msgstr ""
-#: forms.py:96 forms.py:237 forms.py:577 models.py:117 models.py:318
+#: forms.py:97 forms.py:247 forms.py:588 models.py:117 models.py:318
#: models.py:681
msgid "Description"
msgstr ""
-#: forms.py:99 forms.py:239 models.py:128
+#: forms.py:100 forms.py:249 models.py:128
msgid "Batch/object"
msgstr ""
-#: forms.py:101 models.py:346
+#: forms.py:102 models.py:346
msgid "Is complete?"
msgstr ""
-#: forms.py:104 forms.py:228 forms.py:416 models.py:48
+#: forms.py:105 forms.py:238 forms.py:426 models.py:48
msgid "Material type"
msgstr ""
-#: forms.py:105 forms.py:232 models.py:58 models.py:322
+#: forms.py:106 forms.py:242 models.py:58 models.py:322
msgid "Conservatory state"
msgstr ""
-#: forms.py:108 models.py:324
+#: forms.py:109 models.py:324
msgid "Conservatory comment"
msgstr ""
-#: forms.py:111 models.py:90 models.py:349
+#: forms.py:112 models.py:90 models.py:349
msgid "Object types"
msgstr ""
-#: forms.py:113 forms.py:231 models.py:65
+#: forms.py:114 forms.py:241 models.py:65
msgid "Preservation type"
msgstr ""
-#: forms.py:116 forms.py:234 models.py:351
+#: forms.py:117 forms.py:244 models.py:351
msgid "Integrity"
msgstr ""
-#: forms.py:119 forms.py:235 models.py:353
+#: forms.py:120 forms.py:245 models.py:353
msgid "Remarkability"
msgstr ""
-#: forms.py:121 models.py:355
+#: forms.py:122 models.py:355
msgid "Length (cm)"
msgstr ""
-#: forms.py:122 models.py:356
+#: forms.py:123 models.py:356
msgid "Width (cm)"
msgstr ""
-#: forms.py:123 models.py:357
+#: forms.py:124 models.py:357
msgid "Height (cm)"
msgstr ""
-#: forms.py:124 models.py:358
+#: forms.py:125 models.py:358
msgid "Diameter (cm)"
msgstr ""
-#: forms.py:125 forms.py:417 models.py:329
+#: forms.py:126 forms.py:427 models.py:329
msgid "Volume (l)"
msgstr ""
-#: forms.py:126 forms.py:418 models.py:330
+#: forms.py:127 forms.py:428 models.py:330
msgid "Weight (g)"
msgstr ""
-#: forms.py:128 models.py:359
+#: forms.py:129 models.py:359
msgid "Dimensions comment"
msgstr ""
-#: forms.py:129 forms.py:419 models.py:333
+#: forms.py:130 forms.py:429 models.py:333
msgid "Find number"
msgstr ""
-#: forms.py:130 models.py:361
+#: forms.py:131 models.py:361
msgid "Mark"
msgstr ""
-#: forms.py:131 forms.py:241 models.py:367
+#: forms.py:132 forms.py:251 models.py:367
msgid "Check"
msgstr ""
-#: forms.py:133 models.py:369
+#: forms.py:134 models.py:369
msgid "Check date"
msgstr ""
-#: forms.py:134 models.py:118 models.py:362 models.py:682
+#: forms.py:135 models.py:118 models.py:362 models.py:682
msgid "Comment"
msgstr ""
-#: forms.py:137 models.py:363
+#: forms.py:138 models.py:363
msgid "Comment on dating"
msgstr ""
-#: forms.py:138 models.py:371
+#: forms.py:139 models.py:371
msgid "Estimated value"
msgstr ""
-#: forms.py:140
+#: forms.py:141
msgid "Image"
msgstr ""
-#: forms.py:141
+#: forms.py:142
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
"p>"
msgstr ""
-#: forms.py:174 forms.py:202 models.py:341
+#: forms.py:181 forms.py:212 models.py:341
msgid "Dating"
msgstr ""
-#: forms.py:179 forms.py:226
+#: forms.py:186 forms.py:236
msgid "Period"
msgstr ""
-#: forms.py:180 forms.py:579 models.py:695 models.py:760 models.py:896
+#: forms.py:187 forms.py:590 models.py:695 models.py:760 models.py:896
#: templates/ishtar/sheet_find.html:81 templates/ishtar/sheet_find.html:110
msgid "Start date"
msgstr ""
-#: forms.py:182 forms.py:581 models.py:696 models.py:761 models.py:897
+#: forms.py:189 forms.py:592 models.py:696 models.py:761 models.py:897
#: templates/ishtar/sheet_find.html:82 templates/ishtar/sheet_find.html:111
msgid "End date"
msgstr ""
-#: forms.py:183
+#: forms.py:190
msgid "Quality"
msgstr ""
-#: forms.py:185
+#: forms.py:192
msgid "Dating type"
msgstr ""
-#: forms.py:187
+#: forms.py:194
msgid "Precise dating"
msgstr ""
-#: forms.py:206 models.py:136
+#: forms.py:216 models.py:136
msgid "Short ID"
msgstr ""
-#: forms.py:207 models.py:139
+#: forms.py:217 models.py:139
msgid "Complete ID"
msgstr ""
-#: forms.py:211
+#: forms.py:221
msgid "Year"
msgstr ""
-#: forms.py:214
+#: forms.py:224
msgid "Code PATRIARCHE"
msgstr ""
-#: forms.py:218
+#: forms.py:228
msgid "Archaelogical site"
msgstr ""
-#: forms.py:224
+#: forms.py:234
msgid "Search within operation relations"
msgstr ""
-#: forms.py:229 models.py:89
+#: forms.py:239 models.py:89
msgid "Object type"
msgstr ""
-#: forms.py:242
+#: forms.py:252
msgid "Has an image?"
msgstr ""
-#: forms.py:284 forms.py:297 views.py:120
+#: forms.py:294 forms.py:307 views.py:120
msgid "Find search"
msgstr ""
-#: forms.py:311
+#: forms.py:321
msgid "Upstream finds"
msgstr ""
-#: forms.py:313 models.py:385
+#: forms.py:323 models.py:385
msgid "Finds"
msgstr ""
-#: forms.py:323
+#: forms.py:333
msgid "You should at least select one archaeological find."
msgstr ""
-#: forms.py:409
+#: forms.py:419
msgid "Resulting find"
msgstr ""
-#: forms.py:414
+#: forms.py:424
msgid "Precise description"
msgstr ""
-#: forms.py:428
+#: forms.py:439
msgid "Resulting finds"
msgstr ""
-#: forms.py:433
+#: forms.py:444
msgid "Would you like to delete this find?"
msgstr ""
-#: forms.py:437
+#: forms.py:448
msgid "Upstream find"
msgstr ""
-#: forms.py:448
+#: forms.py:459
msgid "Archaeological find search"
msgstr ""
-#: forms.py:450
+#: forms.py:461
msgid "You should select an archaeological find."
msgstr ""
-#: forms.py:455
+#: forms.py:466
msgid "Year of the operation"
msgstr ""
-#: forms.py:457
+#: forms.py:468
msgid "Numeric reference"
msgstr ""
-#: forms.py:464
+#: forms.py:475
msgid "Period of the archaelogical find"
msgstr ""
-#: forms.py:466
+#: forms.py:477
msgid "Material type of the archaelogical find"
msgstr ""
-#: forms.py:468
+#: forms.py:479
msgid "Description of the archaelogical find"
msgstr ""
-#: forms.py:480
+#: forms.py:491
msgid "Documentation search"
msgstr ""
-#: forms.py:482
+#: forms.py:493
msgid "You should select a document."
msgstr ""
-#: forms.py:499
+#: forms.py:510
msgid "Another basket already exist with this name."
msgstr ""
-#: forms.py:509 ishtar_menu.py:60
+#: forms.py:520 ishtar_menu.py:60
msgid "Basket"
msgstr ""
-#: forms.py:559
+#: forms.py:570
msgid "Base treatment"
msgstr ""
-#: forms.py:564 models.py:671 models.py:684 models.py:759
+#: forms.py:575 models.py:671 models.py:684 models.py:759
msgid "Treatment type"
msgstr ""
-#: forms.py:566 models.py:693 models.py:764
+#: forms.py:577 models.py:693 models.py:764
#: templates/ishtar/sheet_find.html:79 templates/ishtar/sheet_find.html:108
msgid "Doer"
msgstr ""
-#: forms.py:572 models.py:686 models.py:762
+#: forms.py:583 models.py:686 models.py:762
msgid "Location"
msgstr ""
-#: forms.py:592
+#: forms.py:604
msgid "Leave it blank if you want to select a single item"
msgstr ""
-#: forms.py:599
+#: forms.py:611
msgid "This treatment type is not available."
msgstr ""
-#: forms.py:603
+#: forms.py:615
msgid "This treatment needs a basket."
msgstr ""
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index d524fdbc5..247dcc20a 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -45,7 +45,8 @@ from widgets import ParcelWidget, SelectParcelWidget, OAWidget
from ishtar_common import widgets
from ishtar_common.forms import FinalForm, FormSet, get_now, \
- reverse_lazy, get_form_selection, TableSelect, get_data_from_formset
+ reverse_lazy, get_form_selection, TableSelect, get_data_from_formset, \
+ ManageOldType
from ishtar_common.forms_common import TownFormSet, SourceForm, SourceSelect, \
get_town_field
@@ -368,7 +369,7 @@ ParcelFormSet = formset_factory(ParcelForm, can_delete=True,
ParcelFormSet.form_label = _(u"Parcels")
-class RecordRelationsForm(forms.Form):
+class RecordRelationsForm(ManageOldType, forms.Form):
base_model = 'right_relation'
current_model = models.RelationType
current_related_model = models.Operation
@@ -386,7 +387,8 @@ class RecordRelationsForm(forms.Form):
def __init__(self, *args, **kwargs):
super(RecordRelationsForm, self).__init__(*args, **kwargs)
self.fields['relation_type'].choices = \
- models.RelationType.get_types()
+ models.RelationType.get_types(
+ initial=self.init_data.get('relation_type'))
@classmethod
def _format_lst(cls, current):
@@ -709,7 +711,7 @@ class DashboardForm(forms.Form):
return fltr
-class OperationFormGeneral(forms.Form):
+class OperationFormGeneral(ManageOldType, forms.Form):
form_label = _(u"General")
base_model = 'archaeological_site'
associated_models = {'scientist': Person,
@@ -804,11 +806,13 @@ class OperationFormGeneral(forms.Form):
def __init__(self, *args, **kwargs):
super(OperationFormGeneral, self).__init__(*args, **kwargs)
self.fields['operation_type'].choices = \
- models.OperationType.get_types()
+ models.OperationType.get_types(
+ initial=self.init_data.get('operation_type'))
self.fields['operation_type'].help_text = \
models.OperationType.get_help()
self.fields['report_processing'].choices = \
- models.ReportState.get_types()
+ models.ReportState.get_types(
+ initial=self.init_data.get('report_processing'))
self.fields['report_processing'].help_text = \
models.ReportState.get_help()
self.fields['record_quality'].choices = \
@@ -1003,7 +1007,7 @@ class SelectedParcelFormSet(forms.Form):
"""
-class RemainForm(forms.Form):
+class RemainForm(ManageOldType, forms.Form):
form_label = _("Remain types")
base_model = 'remain'
associated_models = {'remain': models.RemainType}
@@ -1014,11 +1018,12 @@ class RemainForm(forms.Form):
def __init__(self, *args, **kwargs):
super(RemainForm, self).__init__(*args, **kwargs)
self.fields['remain'].choices = models.RemainType.get_types(
+ initial=self.init_data.get('remain'),
empty_first=False)
self.fields['remain'].help_text = models.RemainType.get_help()
-class PeriodForm(forms.Form):
+class PeriodForm(ManageOldType, forms.Form):
form_label = _("Periods")
base_model = 'period'
associated_models = {'period': models.Period}
@@ -1029,11 +1034,12 @@ class PeriodForm(forms.Form):
def __init__(self, *args, **kwargs):
super(PeriodForm, self).__init__(*args, **kwargs)
self.fields['period'].choices = models.Period.get_types(
+ initial=self.init_data.get('period'),
empty_first=False)
self.fields['period'].help_text = models.Period.get_help()
-class ArchaeologicalSiteForm(forms.Form):
+class ArchaeologicalSiteForm(ManageOldType, forms.Form):
reference = forms.CharField(label=_(u"Reference"), max_length=20)
name = forms.CharField(label=_(u"Name"), max_length=200, required=False)
periods = forms.MultipleChoiceField(
@@ -1049,10 +1055,14 @@ class ArchaeologicalSiteForm(forms.Form):
kwargs.pop('limits')
super(ArchaeologicalSiteForm, self).__init__(*args, **kwargs)
self.fields['periods'].choices = \
- models.Period.get_types(empty_first=False)
+ models.Period.get_types(
+ empty_first=False,
+ initial=self.init_data.get('periods'))
self.fields['periods'].help_text = models.Period.get_help()
self.fields['remains'].choices = \
- models.RemainType.get_types(empty_first=False)
+ models.RemainType.get_types(
+ initial=self.init_data.get('remains'),
+ empty_first=False)
self.fields['remains'].help_text = models.RemainType.get_help()
def clean_reference(self):
@@ -1260,7 +1270,7 @@ class AdministrativeActOpeFormSelection(forms.Form):
return cleaned_data
-class AdministrativeActOpeForm(forms.Form):
+class AdministrativeActOpeForm(ManageOldType, forms.Form):
form_label = _("General")
associated_models = {'act_type': models.ActType, }
# 'signatory':Person}
@@ -1280,6 +1290,7 @@ class AdministrativeActOpeForm(forms.Form):
def __init__(self, *args, **kwargs):
super(AdministrativeActOpeForm, self).__init__(*args, **kwargs)
self.fields['act_type'].choices = models.ActType.get_types(
+ initial=self.init_data.get('act_type'),
dct={'intented_to': 'O'})
self.fields['act_type'].help_text = models.ActType.get_help(
dct={'intented_to': 'O'})
diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot
index 7c2ea0d62..5a84d8c91 100644
--- a/archaeological_operations/locale/django.pot
+++ b/archaeological_operations/locale/django.pot
@@ -8,12 +8,12 @@
msgid ""
msgstr ""
-#: forms.py:66 forms.py:368 forms.py:952 forms.py:974 forms.py:978
+#: forms.py:67 forms.py:369 forms.py:956 forms.py:978 forms.py:982
#: models.py:815 templates/ishtar/blocks/window_tables/parcels.html:10
msgid "Parcels"
msgstr ""
-#: forms.py:69 forms.py:202 forms.py:928 models.py:801
+#: forms.py:70 forms.py:203 forms.py:932 models.py:801
#: templates/ishtar/blocks/window_tables/parcels.html:7
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -22,92 +22,92 @@ msgstr ""
msgid "Town"
msgstr ""
-#: forms.py:71 forms.py:457 forms.py:731 forms.py:1192 models.py:194
+#: forms.py:72 forms.py:459 forms.py:733 forms.py:1202 models.py:194
#: models.py:618 models.py:799
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Year"
msgstr ""
-#: forms.py:74 models.py:802
+#: forms.py:75 models.py:802
#: templates/ishtar/blocks/window_tables/parcels.html:9
msgid "Section"
msgstr ""
-#: forms.py:77 models.py:804
+#: forms.py:78 models.py:804
msgid "Parcel number"
msgstr ""
-#: forms.py:79 models.py:806 models.py:823 models.py:872
+#: forms.py:80 models.py:806 models.py:823 models.py:872
msgid "Public domain"
msgstr ""
-#: forms.py:123
+#: forms.py:124
msgid "Town section is required."
msgstr ""
-#: forms.py:167
+#: forms.py:168
msgid "Current parcels"
msgstr ""
-#: forms.py:169
+#: forms.py:170
msgid "Deleted parcels"
msgstr ""
-#: forms.py:205
+#: forms.py:206
msgid "Full text input"
msgstr ""
-#: forms.py:207
+#: forms.py:208
msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""
msgstr ""
-#: forms.py:362
+#: forms.py:363
msgid "There are identical parcels."
msgstr ""
-#: forms.py:377
+#: forms.py:378
msgid "Relation type"
msgstr ""
-#: forms.py:380 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543
+#: forms.py:381 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543
#: models.py:559 models.py:610 models.py:798 wizards.py:338 wizards.py:349
#: templates/ishtar/sheet_operation.html:4
msgid "Operation"
msgstr ""
-#: forms.py:399
+#: forms.py:401
msgid ":"
msgstr ""
-#: forms.py:407 forms.py:585 forms.py:1157
+#: forms.py:409 forms.py:587 forms.py:1167
msgid "You should select an operation."
msgstr ""
-#: forms.py:411
+#: forms.py:413
msgid "You should select a relation type."
msgstr ""
-#: forms.py:441
+#: forms.py:443
msgid "Current relations"
msgstr ""
-#: forms.py:443
+#: forms.py:445
msgid "Deleted relations"
msgstr ""
-#: forms.py:447 templates/ishtar/sheet_operation.html:114
+#: forms.py:449 templates/ishtar/sheet_operation.html:114
msgid "Relations"
msgstr ""
-#: forms.py:458 forms.py:1163
+#: forms.py:460 forms.py:1173
msgid "Numeric reference"
msgstr ""
-#: forms.py:464 forms.py:1203
+#: forms.py:466 forms.py:1213
msgid "Parcel (section/number/public domain)"
msgstr ""
-#: forms.py:467 forms.py:1206 models.py:519
+#: forms.py:469 forms.py:1216 models.py:519
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -115,404 +115,404 @@ msgstr ""
msgid "Department"
msgstr ""
-#: forms.py:468 forms.py:1038 models.py:78
+#: forms.py:470 forms.py:1044 models.py:78
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Name"
msgstr ""
-#: forms.py:470 forms.py:652 forms.py:729 forms.py:1169 models.py:202
+#: forms.py:472 forms.py:654 forms.py:731 forms.py:1179 models.py:202
msgid "Operation type"
msgstr ""
-#: forms.py:472
+#: forms.py:474
msgid "Is open?"
msgstr ""
-#: forms.py:481 forms.py:758 models.py:191
+#: forms.py:483 forms.py:760 models.py:191
msgid "In charge"
msgstr ""
-#: forms.py:488 models.py:604
+#: forms.py:490 models.py:604
msgid "Scientist in charge"
msgstr ""
-#: forms.py:490 forms.py:654 forms.py:749 models.py:189
+#: forms.py:492 forms.py:656 forms.py:751 models.py:189
msgid "Operator"
msgstr ""
-#: forms.py:497 forms.py:1043 models.py:82 models.py:204
+#: forms.py:499 forms.py:1049 models.py:82 models.py:204
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10
msgid "Remains"
msgstr ""
-#: forms.py:498 forms.py:1022 forms.py:1040 models.py:80 models.py:209
+#: forms.py:500 forms.py:1027 forms.py:1046 models.py:80 models.py:209
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Periods"
msgstr ""
-#: forms.py:499
+#: forms.py:501
msgid "Started before"
msgstr ""
-#: forms.py:501
+#: forms.py:503
msgid "Started after"
msgstr ""
-#: forms.py:503
+#: forms.py:505
msgid "Ended before"
msgstr ""
-#: forms.py:505
+#: forms.py:507
msgid "Ended after"
msgstr ""
-#: forms.py:508
+#: forms.py:510
msgid "Search within relations"
msgstr ""
-#: forms.py:510 forms.py:797 models.py:255
+#: forms.py:512 forms.py:799 models.py:255
msgid "Comment"
msgstr ""
-#: forms.py:511
+#: forms.py:513
msgid "Abstract (full text search)"
msgstr ""
-#: forms.py:512 forms.py:799 models.py:267
+#: forms.py:514 forms.py:801 models.py:267
msgid "Record quality"
msgstr ""
-#: forms.py:513 forms.py:781 models.py:221
+#: forms.py:515 forms.py:783 models.py:221
msgid "Report processing"
msgstr ""
-#: forms.py:515 forms.py:802 models.py:262
+#: forms.py:517 forms.py:804 models.py:262
msgid "Virtual operation"
msgstr ""
-#: forms.py:517 forms.py:1083
+#: forms.py:519 forms.py:1093
msgid "Archaelogical site"
msgstr ""
-#: forms.py:523 forms.py:1210
+#: forms.py:525 forms.py:1220
msgid "Created by"
msgstr ""
-#: forms.py:529 forms.py:1216
+#: forms.py:531 forms.py:1226
msgid "Modified by"
msgstr ""
-#: forms.py:572 forms.py:1155 views.py:247
+#: forms.py:574 forms.py:1165 views.py:247
msgid "Operation search"
msgstr ""
-#: forms.py:616
+#: forms.py:618
msgid "Associated file"
msgstr ""
-#: forms.py:620 forms.py:876 models.py:615 wizards.py:76
+#: forms.py:622 forms.py:880 models.py:615 wizards.py:76
msgid "Archaelogical file"
msgstr ""
-#: forms.py:627 forms.py:629 models.py:269
+#: forms.py:629 forms.py:631 models.py:269
msgid "Abstract"
msgstr ""
-#: forms.py:632
+#: forms.py:634
msgid "months"
msgstr ""
-#: forms.py:632
+#: forms.py:634
msgid "years"
msgstr ""
-#: forms.py:634 models.py:175
+#: forms.py:636 models.py:175
msgid "Creation date"
msgstr ""
-#: forms.py:635
+#: forms.py:637
msgid "Start of field work"
msgstr ""
-#: forms.py:637
+#: forms.py:639
msgid "All"
msgstr ""
-#: forms.py:638
+#: forms.py:640
msgid "Preventive"
msgstr ""
-#: forms.py:639
+#: forms.py:641
msgid "Research"
msgstr ""
-#: forms.py:643
+#: forms.py:645
msgid "Slicing"
msgstr ""
-#: forms.py:646
+#: forms.py:648
msgid "Department detail"
msgstr ""
-#: forms.py:648
+#: forms.py:650
msgid "Date get from"
msgstr ""
-#: forms.py:650
+#: forms.py:652
msgid "Preventive/Research"
msgstr ""
-#: forms.py:656
+#: forms.py:658
msgid "Date after"
msgstr ""
-#: forms.py:658
+#: forms.py:660
msgid "Date before"
msgstr ""
-#: forms.py:660
+#: forms.py:662
msgid "With reports"
msgstr ""
-#: forms.py:661
+#: forms.py:663
msgid "With finds"
msgstr ""
-#: forms.py:713 forms.py:1264 templates/ishtar/sheet_administrativeact.html:13
+#: forms.py:715 forms.py:1274 templates/ishtar/sheet_administrativeact.html:13
#: templates/ishtar/sheet_operation.html:30
msgid "General"
msgstr ""
-#: forms.py:727 models.py:254
+#: forms.py:729 models.py:254
msgid "Generic name"
msgstr ""
-#: forms.py:736 models.py:223
+#: forms.py:738 models.py:223
msgid "Old code"
msgstr ""
-#: forms.py:739
+#: forms.py:741
msgid "Head scientist"
msgstr ""
-#: forms.py:755 models.py:253
+#: forms.py:757 models.py:253
msgid "Operator reference"
msgstr ""
-#: forms.py:767
+#: forms.py:769
msgid "Total surface (m2)"
msgstr ""
-#: forms.py:774 models.py:50 models.py:178 models.py:988
+#: forms.py:776 models.py:50 models.py:178 models.py:988
msgid "Start date"
msgstr ""
-#: forms.py:776 models.py:180
+#: forms.py:778 models.py:180
msgid "Excavation end date"
msgstr ""
-#: forms.py:779 models.py:181
+#: forms.py:781 models.py:181
msgid "Report delivery date"
msgstr ""
-#: forms.py:829
+#: forms.py:833
msgid ""
"If you want to set an excavation end date you have to provide a start date."
msgstr ""
-#: forms.py:834
+#: forms.py:838
msgid "The excavation end date cannot be before the start date."
msgstr ""
-#: forms.py:862
+#: forms.py:866
#, python-format
msgid ""
"Operation code already exist for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:866
+#: forms.py:870
msgid "Bad operation code"
msgstr ""
-#: forms.py:872 models.py:195 models.py:405
+#: forms.py:876 models.py:195 models.py:405
msgid "Operation code"
msgstr ""
-#: forms.py:898
+#: forms.py:902
msgid "Preventive informations - excavation"
msgstr ""
-#: forms.py:899 models.py:207
+#: forms.py:903 models.py:207
#: templates/ishtar/dashboards/dashboard_operation.html:699
msgid "Cost (euros)"
msgstr ""
-#: forms.py:900 models.py:212
+#: forms.py:904 models.py:212
msgid "Scheduled man-days"
msgstr ""
-#: forms.py:902 models.py:215
+#: forms.py:906 models.py:215
msgid "Optional man-days"
msgstr ""
-#: forms.py:904 models.py:218
+#: forms.py:908 models.py:218
msgid "Effective man-days"
msgstr ""
-#: forms.py:914
+#: forms.py:918
msgid "Preventive informations - diagnostic"
msgstr ""
-#: forms.py:917 models.py:237
+#: forms.py:921 models.py:237
msgid "Prescription on zoning"
msgstr ""
-#: forms.py:919 models.py:240
+#: forms.py:923 models.py:240
msgid "Prescription on large area"
msgstr ""
-#: forms.py:922 models.py:242
+#: forms.py:926 models.py:242
msgid "Prescription on geoarchaeological context"
msgstr ""
-#: forms.py:926 forms.py:948 models.py:206 models.py:628
+#: forms.py:930 forms.py:952 models.py:206 models.py:628
msgid "Towns"
msgstr ""
-#: forms.py:955 models.py:814 models.py:986
+#: forms.py:959 models.py:814 models.py:986
msgid "Parcel"
msgstr ""
-#: forms.py:1007 models.py:44
+#: forms.py:1011 models.py:44
msgid "Remain types"
msgstr ""
-#: forms.py:1011 models.py:43
+#: forms.py:1015 models.py:43
msgid "Remain type"
msgstr ""
-#: forms.py:1026
+#: forms.py:1031
msgid "Period"
msgstr ""
-#: forms.py:1037 models.py:77
+#: forms.py:1043 models.py:77
msgid "Reference"
msgstr ""
-#: forms.py:1062
+#: forms.py:1072
msgid "This reference already exists."
msgstr ""
-#: forms.py:1079 models.py:86
+#: forms.py:1089 models.py:86
msgid "Archaeological site"
msgstr ""
-#: forms.py:1094 models.py:87 models.py:259
+#: forms.py:1104 models.py:87 models.py:259
#: templates/ishtar/sheet_operation.html:125
msgid "Archaeological sites"
msgstr ""
-#: forms.py:1098
+#: forms.py:1108
msgid "Associated archaelogical sites"
msgstr ""
-#: forms.py:1104 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
+#: forms.py:1114 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
msgid "Search"
msgstr ""
-#: forms.py:1109
+#: forms.py:1119
msgid "Would you like to close this operation?"
msgstr ""
-#: forms.py:1114
+#: forms.py:1124
msgid "Would you like to delete this operation?"
msgstr ""
-#: forms.py:1123 forms.py:1193 forms.py:1328 models.py:545 models.py:595
+#: forms.py:1133 forms.py:1203 forms.py:1339 models.py:545 models.py:595
msgid "Index"
msgstr ""
-#: forms.py:1149
+#: forms.py:1159
#, python-format
msgid ""
"Index already exists for operation: %(operation)s - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:1161
+#: forms.py:1171
msgid "Operation's year"
msgstr ""
-#: forms.py:1168
+#: forms.py:1178
msgid "Operation's town"
msgstr ""
-#: forms.py:1181
+#: forms.py:1191
msgid "Documentation search"
msgstr ""
-#: forms.py:1183
+#: forms.py:1193
msgid "You should select a document."
msgstr ""
-#: forms.py:1200 forms.py:1267 models.py:570 models.py:589
+#: forms.py:1210 forms.py:1277 models.py:570 models.py:589
msgid "Act type"
msgstr ""
-#: forms.py:1201 forms.py:1398
+#: forms.py:1211 forms.py:1409
msgid "Indexed?"
msgstr ""
-#: forms.py:1207 forms.py:1272 models.py:619
+#: forms.py:1217 forms.py:1282 models.py:619
#: templates/ishtar/blocks/window_tables/administrativacts.html:10
msgid "Object"
msgstr ""
-#: forms.py:1244 views.py:403
+#: forms.py:1254 views.py:403
msgid "Administrative act search"
msgstr ""
-#: forms.py:1259 forms.py:1356 forms.py:1423
+#: forms.py:1269 forms.py:1367 forms.py:1434
msgid "You should select an administrative act."
msgstr ""
-#: forms.py:1275 models.py:616
+#: forms.py:1285 models.py:616
msgid "Signature date"
msgstr ""
-#: forms.py:1316
+#: forms.py:1327
#, python-format
msgid ""
"This index already exist for year: %(year)d - use a value bigger than "
"%(last_val)d"
msgstr ""
-#: forms.py:1320
+#: forms.py:1331
msgid "Bad index"
msgstr ""
-#: forms.py:1333
+#: forms.py:1344
msgid "Would you like to delete this administrative act?"
msgstr ""
-#: forms.py:1338
+#: forms.py:1349
msgid "Template"
msgstr ""
-#: forms.py:1362 forms.py:1366
+#: forms.py:1373 forms.py:1377
msgid "This document is not intended for this type of act."
msgstr ""
-#: forms.py:1384
+#: forms.py:1395
msgid "Doc generation"
msgstr ""
-#: forms.py:1386
+#: forms.py:1397
msgid "Generate the associated doc?"
msgstr ""
-#: forms.py:1407 ishtar_menu.py:121 views.py:456
+#: forms.py:1418 ishtar_menu.py:121 views.py:456
msgctxt "admin act register"
msgid "Register"
msgstr ""
diff --git a/archaeological_operations/utils.py b/archaeological_operations/utils.py
index 53bfedc62..a84ff44ae 100644
--- a/archaeological_operations/utils.py
+++ b/archaeological_operations/utils.py
@@ -289,7 +289,7 @@ def parse_title(value):
return value.title()
-def parse_name_surname(value):
+def parse_name_surname(value, owner):
value = parse_string(value)
items = value.split(' ')
name = items[0]
@@ -305,7 +305,7 @@ def parse_name_surname(value):
if q.count():
return q.all()[0]
else:
- defaults = {'history_modifier': get_default_user(),
+ defaults = {'history_modifier': owner,
'title': ''}
defaults.update(values)
p = Person.objects.create(**defaults)
diff --git a/archaeological_warehouse/forms.py b/archaeological_warehouse/forms.py
index d56df8139..b34be3ab3 100644
--- a/archaeological_warehouse/forms.py
+++ b/archaeological_warehouse/forms.py
@@ -26,7 +26,7 @@ from archaeological_finds.models import TreatmentType, FindBasket
import models
from ishtar_common import widgets
from ishtar_common.forms import name_validator, reverse_lazy, \
- get_form_selection, TableSelect
+ get_form_selection, TableSelect, ManageOldType
from archaeological_finds.forms import FindMultipleFormSelection, \
SelectFindBasketForm
@@ -39,7 +39,7 @@ def get_warehouse_field(label=_(u"Warehouse"), required=True):
validators=[valid_id(models.Warehouse)])
-class WarehouseForm(forms.Form):
+class WarehouseForm(ManageOldType, forms.Form):
name = forms.CharField(label=_(u"Name"), max_length=40,
validators=[name_validator])
warehouse_type = forms.ChoiceField(label=_(u"Warehouse type"),
@@ -71,7 +71,8 @@ class WarehouseForm(forms.Form):
kwargs.pop('limits')
super(WarehouseForm, self).__init__(*args, **kwargs)
self.fields['warehouse_type'].choices = \
- models.WarehouseType.get_types()
+ models.WarehouseType.get_types(
+ initial=self.init_data.get('warehouse_type'))
self.fields['warehouse_type'].help_text = \
models.WarehouseType.get_help()
@@ -88,7 +89,7 @@ class WarehouseForm(forms.Form):
return new_item
-class ContainerForm(forms.Form):
+class ContainerForm(ManageOldType, forms.Form):
form_label = _(u"Container")
reference = forms.CharField(label=_(u"Ref."))
container_type = forms.ChoiceField(label=_(u"Container type"), choices=[])
@@ -106,7 +107,8 @@ class ContainerForm(forms.Form):
kwargs.pop('limits')
super(ContainerForm, self).__init__(*args, **kwargs)
self.fields['container_type'].choices = \
- models.ContainerType.get_types()
+ models.ContainerType.get_types(
+ initial=self.init_data.get('container_type'))
self.fields['container_type'].help_text = \
models.ContainerType.get_help()
diff --git a/archaeological_warehouse/locale/django.pot b/archaeological_warehouse/locale/django.pot
index 264ef3791..c00e26082 100644
--- a/archaeological_warehouse/locale/django.pot
+++ b/archaeological_warehouse/locale/django.pot
@@ -6,7 +6,7 @@
msgid ""
msgstr ""
-#: forms.py:34 forms.py:96 models.py:44 models.py:73
+#: forms.py:34 forms.py:97 models.py:44 models.py:73
msgid "Warehouse"
msgstr ""
@@ -22,7 +22,7 @@ msgstr ""
msgid "Person in charge"
msgstr ""
-#: forms.py:54 forms.py:101 models.py:41 models.py:77
+#: forms.py:54 forms.py:102 models.py:41 models.py:77
msgid "Comment"
msgstr ""
@@ -50,43 +50,43 @@ msgstr ""
msgid "Phone"
msgstr ""
-#: forms.py:92 models.py:80
+#: forms.py:93 models.py:80
msgid "Container"
msgstr ""
-#: forms.py:93 forms.py:127 models.py:63
+#: forms.py:94 forms.py:129 models.py:63
msgid "Ref."
msgstr ""
-#: forms.py:94 forms.py:126 models.py:66 models.py:75
+#: forms.py:95 forms.py:128 models.py:66 models.py:75
msgid "Container type"
msgstr ""
-#: forms.py:137
+#: forms.py:139
msgid "Container search"
msgstr ""
-#: forms.py:139
+#: forms.py:141
msgid "You should select a container."
msgstr ""
-#: forms.py:140
+#: forms.py:142
msgid "Add a new container"
msgstr ""
-#: forms.py:144 ishtar_menu.py:33 views.py:94
+#: forms.py:146 ishtar_menu.py:33 views.py:94
msgid "Packaging"
msgstr ""
-#: forms.py:151
+#: forms.py:153
msgid "Packager"
msgstr ""
-#: forms.py:157
+#: forms.py:159
msgid "Date"
msgstr ""
-#: forms.py:166
+#: forms.py:168
msgid "Packaged finds"
msgstr ""
diff --git a/docs/fr/source/installation.rst b/docs/fr/source/installation.rst
index 5c6d3fdc6..e262e0df9 100644
--- a/docs/fr/source/installation.rst
+++ b/docs/fr/source/installation.rst
@@ -5,7 +5,7 @@ Installation
============
:Auteur: Étienne Loks
-:Date: 2016-06-09
+:Date: 2016-08-31
:Copyright: CC-BY 3.0
Ce document présente les instructions d'installation d'Ishtar.
@@ -44,7 +44,7 @@ Enfin pour créer une nouvelle instance d'Ishtar ::
INSTANCE=le_nom_de_mon_instance URL=ishtar.my-organization.net ishtar-prepare-instance
-INSTANCE est le nom de l'instance et URL le nom du domaine associé.
+INSTANCE est le nom de l'instance et URL le nom du domaine associé (juste l'url pas de http:// ou https://).
.. note:: Le nom de domaine doit bien entendu pointer vers l'adresse IP du serveur. Si à l'issue de l'installation, le service n'est pas joignable, verifiez bien votre configuration DNS ou le cas échéant verifez bien auprès du gestionnaire de nom de domaine que c'est le cas.
diff --git a/install/nginx.conf.template b/install/nginx.conf.template
index 8df09e859..673135c0e 100644
--- a/install/nginx.conf.template
+++ b/install/nginx.conf.template
@@ -29,6 +29,8 @@ server {
location / {
include uwsgi_params;
uwsgi_pass 127.0.0.1:#UWSGI_PORT#;
+ uwsgi_read_timeout 1800;
+ uwsgi_send_timeout 600;
}
}
diff --git a/ishtar_common/admin.py b/ishtar_common/admin.py
index 675d85ec5..fb0ab1170 100644
--- a/ishtar_common/admin.py
+++ b/ishtar_common/admin.py
@@ -112,8 +112,7 @@ class OrganizationAdmin(HistorizedObjectAdmin):
list_display = ('pk', 'name', 'organization_type')
list_filter = ("organization_type",)
search_fields = ('name',)
- exclude = ('merge_key', 'merge_exclusion', 'merge_candidate',
- 'exclude_from_merge')
+ exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', )
model = models.Organization
admin.site.register(models.Organization, OrganizationAdmin)
@@ -123,8 +122,7 @@ class PersonAdmin(HistorizedObjectAdmin):
list_display = ('pk', 'name', 'surname', 'raw_name', 'email')
list_filter = ("person_types",)
search_fields = ('name', 'surname', 'email', 'raw_name')
- exclude = ('merge_key', 'merge_exclusion', 'merge_candidate',
- 'exclude_from_merge')
+ exclude = ('merge_key', 'merge_exclusion', 'merge_candidate', )
model = models.Person
admin.site.register(models.Person, PersonAdmin)
diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py
index 89df1b1a5..79ca2c360 100644
--- a/ishtar_common/forms.py
+++ b/ishtar_common/forms.py
@@ -194,6 +194,37 @@ def get_data_from_formset(data):
return values
+class ManageOldType(object):
+ def __init__(self, *args, **kwargs):
+ """
+ init_data is used to manage deactivated items in list when editing
+ old data
+ """
+ prefix = kwargs.get('prefix') or ''
+ self.init_data = {}
+ if 'data' in kwargs and kwargs['data']:
+ for k in kwargs['data']:
+ if prefix not in k:
+ continue
+ new_k = k[len(prefix) + 1:]
+ for val in kwargs['data'].getlist(k):
+ if not val:
+ continue
+ if new_k not in self.init_data:
+ self.init_data[new_k] = []
+ self.init_data[new_k].append(val)
+ if 'initial' in kwargs and kwargs['initial']:
+ for k in kwargs['initial']:
+ if k not in self.init_data or not self.init_data[k]:
+ for val in kwargs['initial'].getlist(k):
+ if not val:
+ continue
+ if k not in self.init_data:
+ self.init_data[k] = []
+ self.init_data[k].append(val)
+ super(ManageOldType, self).__init__(*args, **kwargs)
+
+
class DocumentGenerationForm(forms.Form):
"""
Form to generate document by choosing the template
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index aef94476c..f6889ae1f 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -33,7 +33,8 @@ from django.utils.translation import ugettext_lazy as _
import models
import widgets
-from forms import FinalForm, FormSet, reverse_lazy, name_validator, TableSelect
+from forms import FinalForm, FormSet, reverse_lazy, name_validator, \
+ TableSelect, ManageOldType
def get_town_field(label=_(u"Town"), required=True):
@@ -154,7 +155,7 @@ class TargetKeyForm(forms.ModelForm):
self.instance.save()
-class OrganizationForm(NewItemForm):
+class OrganizationForm(ManageOldType, NewItemForm):
form_label = _(u"Organization")
associated_models = {'organization_type': models.OrganizationType}
name = forms.CharField(
@@ -178,7 +179,8 @@ class OrganizationForm(NewItemForm):
def __init__(self, *args, **kwargs):
super(OrganizationForm, self).__init__(*args, **kwargs)
self.fields['organization_type'].choices = \
- models.OrganizationType.get_types()
+ models.OrganizationType.get_types(
+ initial=self.init_data.get('organization_type'))
self.fields['organization_type'].help_text = \
models.OrganizationType.get_help()
self.limit_fields()
@@ -254,10 +256,11 @@ class PersonFormSelection(forms.Form):
validators=[models.valid_id(models.Person)])
-class SimplePersonForm(NewItemForm):
+class SimplePersonForm(ManageOldType, NewItemForm):
form_label = _("Identity")
- associated_models = {'attached_to': models.Organization}
- title = forms.ChoiceField(label=_("Title"), choices=models.Person.TYPE)
+ associated_models = {'attached_to': models.Organization,
+ 'title': models.TitleType}
+ title = forms.ChoiceField(label=_("Title"), choices=[])
surname = forms.CharField(label=_(u"Surname"), max_length=50,
validators=[name_validator])
name = forms.CharField(label=_(u"Name"), max_length=200,
@@ -308,6 +311,8 @@ class SimplePersonForm(NewItemForm):
def __init__(self, *args, **kwargs):
super(SimplePersonForm, self).__init__(*args, **kwargs)
self.fields['raw_name'].widget.attrs['readonly'] = True
+ self.fields['title'].choices = models.TitleType.get_types(
+ initial=self.init_data.get('title'))
class PersonUserSelect(PersonSelect):
@@ -398,6 +403,7 @@ class PersonForm(SimplePersonForm):
def __init__(self, *args, **kwargs):
super(PersonForm, self).__init__(*args, **kwargs)
self.fields['person_types'].choices = models.PersonType.get_types(
+ initial=self.init_data.get('person_types'),
empty_first=False)
self.fields['person_types'].help_text = models.PersonType.get_help()
self.limit_fields()
@@ -421,7 +427,7 @@ class NoOrgaPersonForm(PersonForm):
self.fields.pop('attached_to')
-class PersonTypeForm(forms.Form):
+class PersonTypeForm(ManageOldType, forms.Form):
form_label = _("Person type")
base_model = 'person_type'
associated_models = {'person_type': models.PersonType}
@@ -432,6 +438,7 @@ class PersonTypeForm(forms.Form):
def __init__(self, *args, **kwargs):
super(PersonTypeForm, self).__init__(*args, **kwargs)
self.fields['person_type'].choices = models.PersonType.get_types(
+ initial=self.init_data.get('person_type'),
empty_first=False)
self.fields['person_type'].help_text = models.PersonType.get_help()
@@ -457,8 +464,10 @@ class AccountForm(forms.Form):
try:
person = models.Person.objects.get(pk=kwargs['initial']['pk'])
account = models.IshtarUser.objects.get(person=person)
- kwargs['initial'].update({'username': account.username,
- 'email': account.email})
+ if not kwargs['initial'].get('username'):
+ kwargs['initial']['username'] = account.username
+ if not kwargs['initial'].get('email'):
+ kwargs['initial']['email'] = account.email
except ObjectDoesNotExist:
pass
return super(AccountForm, self).__init__(*args, **kwargs)
@@ -638,7 +647,7 @@ class MergeOrganizationForm(MergeForm):
######################
# Sources management #
######################
-class SourceForm(forms.Form):
+class SourceForm(ManageOldType, forms.Form):
form_label = _(u"Documentation informations")
associated_models = {'source_type': models.SourceType}
title = forms.CharField(label=_(u"Title"),
@@ -671,7 +680,8 @@ class SourceForm(forms.Form):
def __init__(self, *args, **kwargs):
super(SourceForm, self).__init__(*args, **kwargs)
- self.fields['source_type'].choices = models.SourceType.get_types()
+ self.fields['source_type'].choices = models.SourceType.get_types(
+ initial=self.init_data.get('source_type'))
class SourceSelect(TableSelect):
@@ -707,7 +717,7 @@ class SourceDeletionForm(FinalForm):
######################
-class AuthorForm(NewItemForm):
+class AuthorForm(ManageOldType, NewItemForm):
form_label = _(u"Author")
associated_models = {'person': models.Person,
'author_type': models.AuthorType}
@@ -720,7 +730,8 @@ class AuthorForm(NewItemForm):
def __init__(self, *args, **kwargs):
super(AuthorForm, self).__init__(*args, **kwargs)
- self.fields['author_type'].choices = models.AuthorType.get_types()
+ self.fields['author_type'].choices = models.AuthorType.get_types(
+ initial=self.init_data.get('author_type'))
self.limit_fields()
def save(self, user):
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index 79a65ce86..a8a0a8682 100644
--- a/ishtar_common/locale/django.pot
+++ b/ishtar_common/locale/django.pot
@@ -24,7 +24,7 @@ msgstr ""
msgid "Archaeological file"
msgstr ""
-#: context_processors.py:39 models.py:1457
+#: context_processors.py:39 models.py:1486
msgid "Operation"
msgstr ""
@@ -147,7 +147,7 @@ msgstr ""
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr ""
-#: forms.py:71 forms_common.py:490
+#: forms.py:71 forms_common.py:499
msgid "Confirm"
msgstr ""
@@ -171,18 +171,18 @@ msgstr ""
msgid "Add a new item"
msgstr ""
-#: forms.py:204 models.py:1234
+#: forms.py:235 models.py:1255
msgid "Template"
msgstr ""
-#: forms_common.py:39 forms_common.py:57 forms_common.py:170
-#: forms_common.py:293 models.py:1300 models.py:2583
+#: forms_common.py:40 forms_common.py:58 forms_common.py:171
+#: forms_common.py:296 models.py:1321 models.py:2618
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
msgstr ""
-#: forms_common.py:41
+#: forms_common.py:42
msgid ""
"<p>Type name, department code and/or postal code of the town you would like "
"to select. The search is insensitive to case.</p>\n"
@@ -192,70 +192,70 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455
-#: models.py:2255 models.py:2407 models.py:2464
+#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484
+#: models.py:2295 models.py:2442 models.py:2499
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
-#: forms_common.py:158 forms_common.py:234 forms_common.py:336
-#: ishtar_menu.py:71 models.py:1456 models.py:2172
+#: forms_common.py:159 forms_common.py:236 forms_common.py:341
+#: ishtar_menu.py:71 models.py:1485 models.py:2202
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
-#: forms_common.py:161 forms_common.py:197 forms_common.py:229
-#: forms_common.py:263 forms_common.py:331 models.py:902 models.py:1233
-#: models.py:1501 models.py:1719 models.py:2166 models.py:2242 models.py:2569
+#: forms_common.py:162 forms_common.py:199 forms_common.py:231
+#: forms_common.py:266 forms_common.py:336 models.py:923 models.py:1254
+#: models.py:1530 models.py:1748 models.py:2196 models.py:2281 models.py:2604
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:162 models.py:1442 models.py:1850
+#: forms_common.py:163 models.py:1471 models.py:1879
msgid "Organization type"
msgstr ""
-#: forms_common.py:164 forms_common.py:287 models.py:1295
+#: forms_common.py:165 forms_common.py:290 models.py:1316
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:166 forms_common.py:290 models.py:1296
+#: forms_common.py:167 forms_common.py:293 models.py:1317
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:168 forms_common.py:291 models.py:1298
+#: forms_common.py:169 forms_common.py:294 models.py:1319
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:171 forms_common.py:294 models.py:1301
+#: forms_common.py:172 forms_common.py:297 models.py:1322
msgid "Country"
msgstr ""
-#: forms_common.py:173 forms_common.py:231 forms_common.py:267
-#: forms_common.py:333 forms_common.py:446 models.py:1328
+#: forms_common.py:174 forms_common.py:233 forms_common.py:270
+#: forms_common.py:338 forms_common.py:453 models.py:1349
msgid "Email"
msgstr ""
-#: forms_common.py:174 forms_common.py:270 models.py:1313
+#: forms_common.py:175 forms_common.py:273 models.py:1334
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:18
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr ""
-#: forms_common.py:175 forms_common.py:279 models.py:1325
+#: forms_common.py:176 forms_common.py:282 models.py:1346
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:36
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr ""
-#: forms_common.py:198 forms_common.py:232 forms_common.py:334 models.py:1877
-#: models.py:2168 models.py:2505 templates/sheet_ope.html:85
+#: forms_common.py:200 forms_common.py:234 forms_common.py:339 models.py:1907
+#: models.py:2198 models.py:2540 templates/sheet_ope.html:85
#: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126
#: templates/ishtar/import_list.html:13
#: templates/ishtar/sheet_organization.html:23
@@ -263,210 +263,210 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:207 views.py:130
+#: forms_common.py:209 views.py:130
msgid "Organization search"
msgstr ""
-#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240
+#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:246 forms_common.py:319 views.py:95
+#: forms_common.py:248 forms_common.py:324 views.py:95
msgid "Person search"
msgstr ""
-#: forms_common.py:258 templates/ishtar/sheet_person.html:7
+#: forms_common.py:260 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr ""
-#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238
-#: models.py:2502 templates/sheet_ope.html:104
+#: forms_common.py:263 forms_common.py:653 forms_common.py:695 models.py:1880
+#: models.py:2275 models.py:2277 models.py:2537 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:265 models.py:2244
+#: forms_common.py:268 models.py:2283
msgid "Raw name"
msgstr ""
-#: forms_common.py:268 models.py:1314
+#: forms_common.py:271 models.py:1335
msgid "Phone description"
msgstr ""
-#: forms_common.py:271 models.py:1316 models.py:1318
+#: forms_common.py:274 models.py:1337 models.py:1339
msgid "Phone description 2"
msgstr ""
-#: forms_common.py:273
+#: forms_common.py:276
msgid "Phone 2"
msgstr ""
-#: forms_common.py:275 models.py:1322
+#: forms_common.py:278 models.py:1343
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:277 models.py:1320
+#: forms_common.py:280 models.py:1341
msgid "Phone 3"
msgstr ""
-#: forms_common.py:282
+#: forms_common.py:285
msgid "Current organization"
msgstr ""
-#: forms_common.py:296 models.py:1303
+#: forms_common.py:299 models.py:1324
msgid "Other address: address"
msgstr ""
-#: forms_common.py:299 models.py:1306
+#: forms_common.py:302 models.py:1327
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:301 models.py:1307
+#: forms_common.py:304 models.py:1328
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:303 models.py:1309
+#: forms_common.py:306 models.py:1330
msgid "Other address: town"
msgstr ""
-#: forms_common.py:305 models.py:1311
+#: forms_common.py:308 models.py:1332
msgid "Other address: country"
msgstr ""
-#: forms_common.py:315
+#: forms_common.py:320
msgid "Already has an account"
msgstr ""
-#: forms_common.py:330
+#: forms_common.py:335
msgid "Username"
msgstr ""
-#: forms_common.py:348
+#: forms_common.py:353
msgid "Account search"
msgstr ""
-#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220
+#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250
msgid "Person type"
msgstr ""
-#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32
+#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32
msgid "Account"
msgstr ""
-#: forms_common.py:449 wizards.py:1170
+#: forms_common.py:456 wizards.py:1170
msgid "New password"
msgstr ""
-#: forms_common.py:452
+#: forms_common.py:459
msgid "New password (confirmation)"
msgstr ""
-#: forms_common.py:471
+#: forms_common.py:480
msgid "Your password and confirmation password do not match."
msgstr ""
-#: forms_common.py:476
+#: forms_common.py:485
msgid "You must provide a correct password."
msgstr ""
-#: forms_common.py:484
+#: forms_common.py:493
msgid "This username already exists."
msgstr ""
-#: forms_common.py:491
+#: forms_common.py:500
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:500 forms_common.py:513 models.py:2584
+#: forms_common.py:509 forms_common.py:522 models.py:2619
msgid "Towns"
msgstr ""
-#: forms_common.py:510
+#: forms_common.py:519
msgid "There are identical towns."
msgstr ""
-#: forms_common.py:594
+#: forms_common.py:603
msgid "Only one choice can be checked."
msgstr ""
-#: forms_common.py:642
+#: forms_common.py:651
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485
+#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520
msgid "Source type"
msgstr ""
-#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84
+#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84
msgid "Reference"
msgstr ""
-#: forms_common.py:651 forms_common.py:688
+#: forms_common.py:660 forms_common.py:698
msgid "Internal reference"
msgstr ""
-#: forms_common.py:654 models.py:2516
+#: forms_common.py:663 models.py:2551
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:655 models.py:2518
+#: forms_common.py:664 models.py:2553
msgid "Receipt date"
msgstr ""
-#: forms_common.py:657 models.py:2004 models.py:2520
+#: forms_common.py:666 models.py:2034 models.py:2555
msgid "Creation date"
msgstr ""
-#: forms_common.py:660 models.py:2523
+#: forms_common.py:669 models.py:2558
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516
-#: models.py:1746 models.py:2248 models.py:2530
+#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537
+#: models.py:1775 models.py:2287 models.py:2565
msgid "Comment"
msgstr ""
-#: forms_common.py:664 forms_common.py:689 models.py:904 models.py:1505
-#: models.py:1678 models.py:1720 models.py:2529 templates/sheet_ope.html:128
+#: forms_common.py:673 forms_common.py:699 models.py:925 models.py:1534
+#: models.py:1707 models.py:1749 models.py:2564 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:667 models.py:2531
+#: forms_common.py:676 models.py:2566
msgid "Additional information"
msgstr ""
-#: forms_common.py:669 forms_common.py:693 models.py:2533
+#: forms_common.py:678 forms_common.py:703 models.py:2568
msgid "Has a duplicate"
msgstr ""
-#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469
+#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
-#: forms_common.py:692
+#: forms_common.py:702
msgid "Additional informations"
msgstr ""
-#: forms_common.py:703
+#: forms_common.py:713
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466
+#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501
msgid "Author type"
msgstr ""
-#: forms_common.py:737
+#: forms_common.py:748
msgid "Author selection"
msgstr ""
-#: forms_common.py:751
+#: forms_common.py:762
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:755 models.py:2470 models.py:2512
+#: forms_common.py:766 models.py:2505 models.py:2547
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -484,7 +484,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1029 views.py:1232
+#: ishtar_menu.py:39 models.py:1050 views.py:1232
msgid "Global variables"
msgstr ""
@@ -508,12 +508,12 @@ msgstr ""
msgid "Merge"
msgstr ""
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr ""
-#: ishtar_menu.py:101 models.py:2015
+#: ishtar_menu.py:101 models.py:2045
msgid "Imports"
msgstr ""
@@ -541,7 +541,7 @@ msgstr ""
msgid "This item already exists."
msgstr ""
-#: models.py:283 models.py:515 models.py:1268 models.py:1280
+#: models.py:283 models.py:536 models.py:1289 models.py:1301
msgid "Label"
msgstr ""
@@ -549,191 +549,191 @@ msgstr ""
msgid "Textual ID"
msgstr ""
-#: models.py:288 models.py:518 models.py:1237
+#: models.py:288 models.py:539 models.py:1258
msgid "Available"
msgstr ""
-#: models.py:537 models.py:1792
+#: models.py:558 models.py:1821
msgid "Key"
msgstr ""
-#: models.py:543
+#: models.py:564
msgid "Specific key to an import"
msgstr ""
-#: models.py:623
+#: models.py:644
msgid "Last editor"
msgstr ""
-#: models.py:626
+#: models.py:647
msgid "Creator"
msgstr ""
-#: models.py:766 models.py:2595
+#: models.py:787 models.py:2630
msgid "Order"
msgstr ""
-#: models.py:767
+#: models.py:788
msgid "Symmetrical"
msgstr ""
-#: models.py:768
+#: models.py:789
msgid "Tiny label"
msgstr ""
-#: models.py:782
+#: models.py:803
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:896
+#: models.py:917
msgid "Euro"
msgstr ""
-#: models.py:897
+#: models.py:918
msgid "US dollar"
msgstr ""
-#: models.py:903 models.py:1503
+#: models.py:924 models.py:1532
msgid "Slug"
msgstr ""
-#: models.py:905
+#: models.py:926
msgid "Files module"
msgstr ""
-#: models.py:906
+#: models.py:927
msgid "Context records module"
msgstr ""
-#: models.py:908
+#: models.py:929
msgid "Finds module"
msgstr ""
-#: models.py:909
+#: models.py:930
msgid "Need context records module"
msgstr ""
-#: models.py:911
+#: models.py:932
msgid "Warehouses module"
msgstr ""
-#: models.py:912
+#: models.py:933
msgid "Need finds module"
msgstr ""
-#: models.py:914
+#: models.py:935
msgid "Home page"
msgstr ""
-#: models.py:915
+#: models.py:936
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax."
msgstr ""
-#: models.py:918
+#: models.py:939
msgid "File external id"
msgstr ""
-#: models.py:920
+#: models.py:941
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:925
+#: models.py:946
msgid "Parcel external id"
msgstr ""
-#: models.py:928
+#: models.py:949
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:933
+#: models.py:954
msgid "Context record external id"
msgstr ""
-#: models.py:935
+#: models.py:956
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:940
+#: models.py:961
msgid "Base find external id"
msgstr ""
-#: models.py:942
+#: models.py:963
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:947
+#: models.py:968
msgid "Find external id"
msgstr ""
-#: models.py:949
+#: models.py:970
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:954
+#: models.py:975
msgid "Raw name for person"
msgstr ""
-#: models.py:956
+#: models.py:977
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:960
+#: models.py:981
msgid "Current active"
msgstr ""
-#: models.py:961
+#: models.py:982
msgid "Currency"
msgstr ""
-#: models.py:965
+#: models.py:986
msgid "Ishtar site profile"
msgstr ""
-#: models.py:966
+#: models.py:987
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1022
+#: models.py:1043
msgid "Variable name"
msgstr ""
-#: models.py:1023
+#: models.py:1044
msgid "Description of the variable"
msgstr ""
-#: models.py:1025 models.py:1793
+#: models.py:1046 models.py:1822
msgid "Value"
msgstr ""
-#: models.py:1028
+#: models.py:1049
msgid "Global variable"
msgstr ""
-#: models.py:1138 models.py:1168
+#: models.py:1159 models.py:1189
msgid "Total"
msgstr ""
-#: models.py:1145 models.py:1269 models.py:1281
+#: models.py:1166 models.py:1290 models.py:1302
#: templates/ishtar/sheet_person.html:21
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -741,581 +741,589 @@ msgstr ""
msgid "Number"
msgstr ""
-#: models.py:1232
+#: models.py:1253
msgid "Administrative Act"
msgstr ""
-#: models.py:1236
+#: models.py:1257
msgid "Associated object"
msgstr ""
-#: models.py:1240
+#: models.py:1261
msgid "Document template"
msgstr ""
-#: models.py:1241
+#: models.py:1262
msgid "Document templates"
msgstr ""
-#: models.py:1272 models.py:1282 models.py:1999
+#: models.py:1293 models.py:1303 models.py:2029
msgid "State"
msgstr ""
-#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1287
+#: models.py:1308
msgid "Departments"
msgstr ""
-#: models.py:1324
+#: models.py:1345
msgid "Raw phone"
msgstr ""
-#: models.py:1330
+#: models.py:1351
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1369
+#: models.py:1390
msgid "Tel: "
msgstr ""
-#: models.py:1373
+#: models.py:1394
msgid "Mobile: "
msgstr ""
-#: models.py:1377
+#: models.py:1398
msgid "Email: "
msgstr ""
-#: models.py:1382
+#: models.py:1403
msgid "Merge key"
msgstr ""
-#: models.py:1443
+#: models.py:1472
msgid "Organization types"
msgstr ""
-#: models.py:1459
+#: models.py:1488
msgid "Archaeological site"
msgstr ""
-#: models.py:1460
+#: models.py:1489
msgid "Parcels"
msgstr ""
-#: models.py:1462
+#: models.py:1491
msgid "Operation source"
msgstr ""
-#: models.py:1465 views.py:1057 views.py:1108
+#: models.py:1494 views.py:1057 views.py:1108
msgid "Archaeological files"
msgstr ""
-#: models.py:1467 views.py:1060 views.py:1116
+#: models.py:1496 views.py:1060 views.py:1116
msgid "Context records"
msgstr ""
-#: models.py:1469
+#: models.py:1498
msgid "Context record relations"
msgstr ""
-#: models.py:1471 views.py:1062 views.py:1119
+#: models.py:1500 views.py:1062 views.py:1119
msgid "Finds"
msgstr ""
-#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1509
+#: models.py:1538
msgid "Associated model"
msgstr ""
-#: models.py:1512
+#: models.py:1541
msgid "Is template"
msgstr ""
-#: models.py:1513
+#: models.py:1542
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1517
+#: models.py:1546
msgid "Importer - Type"
msgstr ""
-#: models.py:1518
+#: models.py:1547
msgid "Importer - Types"
msgstr ""
-#: models.py:1608
+#: models.py:1637
msgid "Importer - Default"
msgstr ""
-#: models.py:1609
+#: models.py:1638
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1644
+#: models.py:1673
msgid "Importer - Default value"
msgstr ""
-#: models.py:1645
+#: models.py:1674
msgid "Importer - Default values"
msgstr ""
-#: models.py:1677
+#: models.py:1706
msgid "Column number"
msgstr ""
-#: models.py:1680
+#: models.py:1709
msgid "Required"
msgstr ""
-#: models.py:1683
+#: models.py:1712
msgid "Importer - Column"
msgstr ""
-#: models.py:1684
+#: models.py:1713
msgid "Importer - Columns"
msgstr ""
-#: models.py:1704
+#: models.py:1733
msgid "Field name"
msgstr ""
-#: models.py:1706 models.py:1740
+#: models.py:1735 models.py:1769
msgid "Force creation of new items"
msgstr ""
-#: models.py:1708 models.py:1742
+#: models.py:1737 models.py:1771
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1710 models.py:1744
+#: models.py:1739 models.py:1773
msgid "Concatenate character"
msgstr ""
-#: models.py:1714
+#: models.py:1743
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1715
+#: models.py:1744
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1722
+#: models.py:1751
msgid "Regular expression"
msgstr ""
-#: models.py:1725
+#: models.py:1754
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1726
+#: models.py:1755
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1749
+#: models.py:1778
msgid "Importer - Target"
msgstr ""
-#: models.py:1750
+#: models.py:1779
msgid "Importer - Targets"
msgstr ""
-#: models.py:1774 views.py:343
+#: models.py:1803 views.py:343
msgid "True"
msgstr ""
-#: models.py:1775 views.py:345
+#: models.py:1804 views.py:345
msgid "False"
msgstr ""
-#: models.py:1794
+#: models.py:1823
msgid "Is set"
msgstr ""
-#: models.py:1801
+#: models.py:1830
msgid "Importer - Target key"
msgstr ""
-#: models.py:1802
+#: models.py:1831
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1853 models.py:2497 models.py:2508
+#: models.py:1883 models.py:2532 models.py:2543
msgid "Format"
msgstr ""
-#: models.py:1854 models.py:2599
+#: models.py:1884 models.py:2634
msgid "Operation type"
msgstr ""
-#: models.py:1855
+#: models.py:1885
msgid "Period"
msgstr ""
-#: models.py:1856
+#: models.py:1886
msgid "Report state"
msgstr ""
-#: models.py:1857
+#: models.py:1887
msgid "Unit"
msgstr ""
-#: models.py:1858
+#: models.py:1888
msgid "Material"
msgstr ""
-#: models.py:1860
+#: models.py:1890
msgid "Conservatory state"
msgstr ""
-#: models.py:1861
+#: models.py:1891
msgid "Preservation type"
msgstr ""
-#: models.py:1862
+#: models.py:1892
msgid "Object type"
msgstr ""
-#: models.py:1864
+#: models.py:1894
msgid "Identification type"
msgstr ""
-#: models.py:1866
+#: models.py:1896
msgid "Context record relation type"
msgstr ""
-#: models.py:1867 models.py:2491
+#: models.py:1897 models.py:2526
msgid "Support type"
msgstr ""
-#: models.py:1873
+#: models.py:1903
msgid "Integer"
msgstr ""
-#: models.py:1874
+#: models.py:1904
msgid "Float"
msgstr ""
-#: models.py:1875
+#: models.py:1905
msgid "String"
msgstr ""
-#: models.py:1876 templates/sheet_ope.html:86
+#: models.py:1906 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1908 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1879
+#: models.py:1909
msgid "String to boolean"
msgstr ""
-#: models.py:1880
+#: models.py:1910
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1881
+#: models.py:1911
msgid "Unknow type"
msgstr ""
-#: models.py:1897
+#: models.py:1927
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1898
+#: models.py:1928
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1899
+#: models.py:1929
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:1909
+#: models.py:1939
msgid "Options"
msgstr ""
-#: models.py:1911
+#: models.py:1941
msgid "Split character(s)"
msgstr ""
-#: models.py:1915
+#: models.py:1945
msgid "Importer - Formater type"
msgstr ""
-#: models.py:1916
+#: models.py:1946
msgid "Importer - Formater types"
msgstr ""
-#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:1964
+#: models.py:1994
msgid "Analyse in progress"
msgstr ""
-#: models.py:1965
+#: models.py:1995
msgid "Analysed"
msgstr ""
-#: models.py:1966
+#: models.py:1996
msgid "Import pending"
msgstr ""
-#: models.py:1967
+#: models.py:1997
msgid "Import in progress"
msgstr ""
-#: models.py:1968
+#: models.py:1998
msgid "Finished with errors"
msgstr ""
-#: models.py:1969
+#: models.py:1999
msgid "Finished"
msgstr ""
-#: models.py:1970
+#: models.py:2000
msgid "Archived"
msgstr ""
-#: models.py:1982
+#: models.py:2012
msgid "Imported file"
msgstr ""
-#: models.py:1985
+#: models.py:2015
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:1987
+#: models.py:2017
msgid "Encoding"
msgstr ""
-#: models.py:1989
+#: models.py:2019
msgid "Skip lines"
msgstr ""
-#: models.py:1990 templates/ishtar/import_list.html:47
+#: models.py:2020 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:1993
+#: models.py:2023
msgid "Result file"
msgstr ""
-#: models.py:1996 templates/ishtar/import_list.html:53
+#: models.py:2026 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2002
+#: models.py:2032
msgid "Conservative import"
msgstr ""
-#: models.py:2007
+#: models.py:2037
msgid "End date"
msgstr ""
-#: models.py:2009
+#: models.py:2039
msgid "Remaining seconds"
msgstr ""
-#: models.py:2014
+#: models.py:2044
msgid "Import"
msgstr ""
-#: models.py:2031
+#: models.py:2061
msgid "Analyse"
msgstr ""
-#: models.py:2033 models.py:2036
+#: models.py:2063 models.py:2066
msgid "Re-analyse"
msgstr ""
-#: models.py:2034
+#: models.py:2064
msgid "Launch import"
msgstr ""
-#: models.py:2037
+#: models.py:2067
msgid "Re-import"
msgstr ""
-#: models.py:2038
+#: models.py:2068
msgid "Archive"
msgstr ""
-#: models.py:2040
+#: models.py:2070
msgid "Unarchive"
msgstr ""
-#: models.py:2173
+#: models.py:2203
msgid "Organizations"
msgstr ""
-#: models.py:2175
+#: models.py:2205
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2176
+#: models.py:2206
msgid "Can view own Organization"
msgstr ""
-#: models.py:2177
+#: models.py:2207
msgid "Can add own Organization"
msgstr ""
-#: models.py:2179
+#: models.py:2209
msgid "Can change own Organization"
msgstr ""
-#: models.py:2181
+#: models.py:2211
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2216
+#: models.py:2246
msgid "Groups"
msgstr ""
-#: models.py:2221
+#: models.py:2251
msgid "Person types"
msgstr ""
-#: models.py:2228
+#: models.py:2257
+msgid "Title type"
+msgstr ""
+
+#: models.py:2258
+msgid "Title types"
+msgstr ""
+
+#: models.py:2265
msgid "Mr"
msgstr ""
-#: models.py:2229
+#: models.py:2266
msgid "Miss"
msgstr ""
-#: models.py:2230
+#: models.py:2267
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2231
+#: models.py:2268
msgid "Mrs"
msgstr ""
-#: models.py:2232
+#: models.py:2269
msgid "Doctor"
msgstr ""
-#: models.py:2246
+#: models.py:2285
msgid "Contact type"
msgstr ""
-#: models.py:2249 models.py:2296
+#: models.py:2288 models.py:2331
msgid "Types"
msgstr ""
-#: models.py:2252
+#: models.py:2291
msgid "Is attached to"
msgstr ""
-#: models.py:2256
+#: models.py:2296
msgid "Persons"
msgstr ""
-#: models.py:2258
+#: models.py:2298
msgid "Can view all Persons"
msgstr ""
-#: models.py:2259
+#: models.py:2299
msgid "Can view own Person"
msgstr ""
-#: models.py:2260
+#: models.py:2300
msgid "Can add own Person"
msgstr ""
-#: models.py:2261
+#: models.py:2301
msgid "Can change own Person"
msgstr ""
-#: models.py:2262
+#: models.py:2302
msgid "Can delete own Person"
msgstr ""
-#: models.py:2411
+#: models.py:2446
msgid "Ishtar user"
msgstr ""
-#: models.py:2412
+#: models.py:2447
msgid "Ishtar users"
msgstr ""
-#: models.py:2454
+#: models.py:2489
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2460
+#: models.py:2495
msgid "Author types"
msgstr ""
-#: models.py:2486
+#: models.py:2521
msgid "Source types"
msgstr ""
-#: models.py:2492
+#: models.py:2527
msgid "Support types"
msgstr ""
-#: models.py:2498
+#: models.py:2533
msgid "Formats"
msgstr ""
-#: models.py:2503
+#: models.py:2538
msgid "External ID"
msgstr ""
-#: models.py:2506
+#: models.py:2541
msgid "Support"
msgstr ""
-#: models.py:2510
+#: models.py:2545
msgid "Scale"
msgstr ""
-#: models.py:2524
+#: models.py:2559
msgid "Item number"
msgstr ""
-#: models.py:2525
+#: models.py:2560
msgid "Ref."
msgstr ""
-#: models.py:2528
+#: models.py:2563
msgid "Internal ref."
msgstr ""
-#: models.py:2570
+#: models.py:2605
msgid "Surface (m2)"
msgstr ""
-#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2596
+#: models.py:2631
msgid "Is preventive"
msgstr ""
-#: models.py:2600
+#: models.py:2635
msgid "Operation types"
msgstr ""
-#: models.py:2626
+#: models.py:2661
msgid "Preventive"
msgstr ""
-#: models.py:2627
+#: models.py:2662
msgid "Research"
msgstr ""
@@ -1983,6 +1991,14 @@ msgstr ""
msgid "No person in this organization"
msgstr ""
+#: templates/ishtar/sheet_organization.html:38
+msgid "General contractor organization of archaelogical files"
+msgstr ""
+
+#: templates/ishtar/sheet_organization.html:43
+msgid "Town planning service of archaelogical files"
+msgstr ""
+
#: templates/ishtar/sheet_person.html:20
#: templates/ishtar/wizard/wizard_person.html:19
msgid "Phone type"
@@ -2010,19 +2026,27 @@ msgstr ""
msgid "Associated operations as responsible"
msgstr ""
-#: templates/ishtar/sheet_person.html:80
-msgid "Associated archaelogical files"
+#: templates/ishtar/sheet_person.html:79
+msgid "In charge of archaelogical files"
+msgstr ""
+
+#: templates/ishtar/sheet_person.html:84
+msgid "General contractor of archaelogical files"
+msgstr ""
+
+#: templates/ishtar/sheet_person.html:89
+msgid "Responsible for town planning service of archaelogical files"
msgstr ""
-#: templates/ishtar/sheet_person.html:86
+#: templates/ishtar/sheet_person.html:95
msgid "Documents associated to operations"
msgstr ""
-#: templates/ishtar/sheet_person.html:91
+#: templates/ishtar/sheet_person.html:100
msgid "Documents associated to context records"
msgstr ""
-#: templates/ishtar/sheet_person.html:96
+#: templates/ishtar/sheet_person.html:105
msgid "Documents associated to finds"
msgstr ""
diff --git a/ishtar_common/migrations/0055_auto.py b/ishtar_common/migrations/0055_auto.py
new file mode 100644
index 000000000..db41eb868
--- /dev/null
+++ b/ishtar_common/migrations/0055_auto.py
@@ -0,0 +1,415 @@
+# -*- 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 M2M table for field imports on 'Town'
+ db.create_table('ishtar_common_town_imports', (
+ ('id', models.AutoField(verbose_name='ID', primary_key=True, auto_created=True)),
+ ('town', models.ForeignKey(orm['ishtar_common.town'], null=False)),
+ ('import', models.ForeignKey(orm['ishtar_common.import'], null=False))
+ ))
+ db.create_unique('ishtar_common_town_imports', ['town_id', 'import_id'])
+
+
+ def backwards(self, orm):
+ # Removing M2M table for field imports on 'Town'
+ db.delete_table('ishtar_common_town_imports')
+
+
+ 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.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': {'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': {'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'}),
+ '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': {'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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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.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': '100', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
+ 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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'}),
+ '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']"}),
+ '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.importertype': {
+ 'Meta': {'object_name': 'ImporterType'},
+ 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ '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_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}),
+ 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}),
+ 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}),
+ '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', [], {}),
+ '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'})
+ },
+ 'ishtar_common.ishtaruser': {
+ 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']},
+ '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '100', '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': {'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.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.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/migrations/0056_auto__add_titletype__add_field_person_pretitle.py b/ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py
new file mode 100644
index 000000000..6db62c107
--- /dev/null
+++ b/ishtar_common/migrations/0056_auto__add_titletype__add_field_person_pretitle.py
@@ -0,0 +1,434 @@
+# -*- 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 'TitleType'
+ db.create_table('ishtar_common_titletype', (
+ ('id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('label', self.gf('django.db.models.fields.CharField')(max_length=100)),
+ ('txt_idx', self.gf('django.db.models.fields.CharField')(unique=True, max_length=100)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('available', self.gf('django.db.models.fields.BooleanField')(default=True)),
+ ))
+ db.send_create_signal('ishtar_common', ['TitleType'])
+
+ # Adding field 'Person.pretitle'
+ db.add_column('ishtar_common_person', 'pretitle',
+ self.gf('django.db.models.fields.related.ForeignKey')(to=orm['ishtar_common.TitleType'], null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting model 'TitleType'
+ db.delete_table('ishtar_common_titletype')
+
+ # Deleting field 'Person.pretitle'
+ db.delete_column('ishtar_common_person', 'pretitle_id')
+
+
+ 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.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': {'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': {'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'}),
+ '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': {'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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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.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': '100', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
+ 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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'}),
+ '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']"}),
+ '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.importertype': {
+ 'Meta': {'object_name': 'ImporterType'},
+ 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ '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_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}),
+ 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}),
+ 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}),
+ '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', [], {}),
+ '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'})
+ },
+ 'ishtar_common.ishtaruser': {
+ 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']},
+ '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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'}),
+ 'pretitle': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", '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'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.CharField', [], {'max_length': '100', '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': {'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.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/migrations/0057_rename_pretitle_old_title.py b/ishtar_common/migrations/0057_rename_pretitle_old_title.py
new file mode 100644
index 000000000..8a13b6c88
--- /dev/null
+++ b/ishtar_common/migrations/0057_rename_pretitle_old_title.py
@@ -0,0 +1,421 @@
+# -*- 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):
+ db.delete_index('ishtar_common_person', ['pretitle_id'])
+ db.rename_column('ishtar_common_person', 'pretitle_id', 'title_id')
+ db.create_index('ishtar_common_person', ['title_id'])
+ db.rename_column('ishtar_common_person', 'title', 'old_title')
+
+ def backwards(self, orm):
+ db.delete_index('ishtar_common_person', ['title_id'])
+ db.rename_column('ishtar_common_person', 'title_id', 'pretitle_id')
+ db.create_index('ishtar_common_person', ['pretitle_id'])
+ db.rename_column('ishtar_common_person', 'old_title', 'title')
+
+ 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.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': {'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': {'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'}),
+ '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': {'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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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.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': '100', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
+ 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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'}),
+ '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']"}),
+ '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.importertype': {
+ 'Meta': {'object_name': 'ImporterType'},
+ 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ '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_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}),
+ 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}),
+ 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}),
+ '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', [], {}),
+ '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'})
+ },
+ 'ishtar_common.ishtaruser': {
+ 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']},
+ '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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': {'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.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']
diff --git a/ishtar_common/migrations/0058_generate_title.py b/ishtar_common/migrations/0058_generate_title.py
new file mode 100644
index 000000000..ac0d1d602
--- /dev/null
+++ b/ishtar_common/migrations/0058_generate_title.py
@@ -0,0 +1,435 @@
+# -*- coding: utf-8 -*-
+import datetime
+from south.db import db
+from south.v2 import SchemaMigration
+from django.db import models
+from django.utils import translation
+
+TYPE = (
+ ('Mr', u'Mr'),
+ ('Ms', u'Miss'),
+ ('Mr and Miss', u'Mr and Mrs'),
+ ('Md', u'Mrs'),
+ ('Dr', u'Doctor'),
+)
+
+
+class Migration(SchemaMigration):
+
+ def forwards(self, orm):
+ keys = {}
+ translation.activate('fr')
+ for key, lbl in TYPE:
+ lbl = translation.ugettext(lbl)
+ keys[key] = orm['ishtar_common.TitleType'].objects.create(
+ label=lbl, txt_idx=key.lower())
+ translation.deactivate()
+ for person in orm['ishtar_common.Person'].objects.all():
+ if not person.old_title:
+ continue
+ person.title_id = keys[person.old_title].id
+ person.save()
+
+ def backwards(self, orm):
+ pass
+
+ 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.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': {'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': {'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'}),
+ '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': {'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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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.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': '100', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
+ 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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'}),
+ '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']"}),
+ '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.importertype': {
+ 'Meta': {'object_name': 'ImporterType'},
+ 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ '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_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}),
+ 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}),
+ 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}),
+ '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', [], {}),
+ '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'})
+ },
+ 'ishtar_common.ishtaruser': {
+ 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']},
+ '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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'}),
+ 'exclude_from_merge': ('django.db.models.fields.NullBooleanField', [], {'default': 'False', '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'}),
+ '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': {'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.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']
diff --git a/ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py b/ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py
new file mode 100644
index 000000000..c329b76e2
--- /dev/null
+++ b/ishtar_common/migrations/0059_rename_exc_from_merge_to_archived.py
@@ -0,0 +1,419 @@
+# -*- 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):
+ db.rename_column('ishtar_common_person', 'exclude_from_merge', 'archived')
+ db.rename_column('ishtar_common_organization', 'exclude_from_merge', 'archived')
+ db.rename_column('ishtar_common_historicalorganization', 'exclude_from_merge', 'archived')
+
+ def backwards(self, orm):
+ db.rename_column('ishtar_common_person', 'archived', 'exclude_from_merge')
+ db.rename_column('ishtar_common_organization', 'archived', 'exclude_from_merge')
+ db.rename_column('ishtar_common_historicalorganization', 'archived', 'exclude_from_merge')
+
+ 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.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': {'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': {'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'}),
+ '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': {'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.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': '100', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
+ 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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'}),
+ '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']"}),
+ '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.importertype': {
+ 'Meta': {'object_name': 'ImporterType'},
+ 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ '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_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}),
+ 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}),
+ 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}),
+ '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', [], {}),
+ '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'})
+ },
+ 'ishtar_common.ishtaruser': {
+ 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']},
+ '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'}),
+ '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': {'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.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']
diff --git a/ishtar_common/migrations/0060_auto__add_historicalperson.py b/ishtar_common/migrations/0060_auto__add_historicalperson.py
new file mode 100644
index 000000000..a1db55c37
--- /dev/null
+++ b/ishtar_common/migrations/0060_auto__add_historicalperson.py
@@ -0,0 +1,498 @@
+# -*- 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 'HistoricalPerson'
+ db.create_table('ishtar_common_historicalperson', (
+ ('id', self.gf('django.db.models.fields.IntegerField')(db_index=True, blank=True)),
+ ('history_modifier_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('history_creator_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('address', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('address_complement', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('postal_code', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)),
+ ('town', self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True)),
+ ('country', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)),
+ ('alt_address', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('alt_address_complement', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('alt_postal_code', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)),
+ ('alt_town', self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True)),
+ ('alt_country', self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True)),
+ ('phone', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)),
+ ('phone_desc', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)),
+ ('phone2', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)),
+ ('phone_desc2', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)),
+ ('phone3', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)),
+ ('phone_desc3', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)),
+ ('raw_phone', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('mobile_phone', self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True)),
+ ('email', self.gf('django.db.models.fields.EmailField')(max_length=300, null=True, blank=True)),
+ ('alt_address_is_prefered', self.gf('django.db.models.fields.BooleanField')(default=False)),
+ ('merge_key', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('archived', self.gf('django.db.models.fields.NullBooleanField')(default=False, null=True, blank=True)),
+ ('old_title', self.gf('django.db.models.fields.CharField')(max_length=100, null=True, blank=True)),
+ ('title_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('surname', self.gf('django.db.models.fields.CharField')(max_length=50, null=True, blank=True)),
+ ('name', self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True)),
+ ('raw_name', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)),
+ ('contact_type', self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True)),
+ ('comment', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
+ ('attached_to_id', self.gf('django.db.models.fields.IntegerField')(db_index=True, null=True, blank=True)),
+ ('history_id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
+ ('history_date', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
+ ('history_user', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['auth.User'], null=True)),
+ ('history_type', self.gf('django.db.models.fields.CharField')(max_length=1)),
+ ))
+ db.send_create_signal('ishtar_common', ['HistoricalPerson'])
+
+
+ def backwards(self, orm):
+ # Deleting model 'HistoricalPerson'
+ db.delete_table('ishtar_common_historicalperson')
+
+
+ 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.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': {'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': {'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'}),
+ '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': {'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'}),
+ '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'imported_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
+ 'imported_images': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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': '100', 'null': 'True', 'blank': 'True'}),
+ 'result_file': ('django.db.models.fields.files.FileField', [], {'max_length': '100', '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'}),
+ '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']"}),
+ '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.importertype': {
+ 'Meta': {'object_name': 'ImporterType'},
+ 'associated_models': ('django.db.models.fields.CharField', [], {'max_length': '200'}),
+ '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_find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{context_record__external_id}-{label}'"}),
+ 'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ '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': "'{settings__ISHTAR_LOCAL_PREFIX}{year}-{numeric_reference}'"}),
+ 'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'find_external_id': ('django.db.models.fields.TextField', [], {'default': "'{get_first_base_find__context_record__external_id}-{label}'"}),
+ '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', [], {}),
+ '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'})
+ },
+ 'ishtar_common.ishtaruser': {
+ 'Meta': {'object_name': 'IshtarUser', '_ormbases': ['auth.User']},
+ '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'}),
+ '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': {'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.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 6228ea1d0..c536b64ae 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -329,8 +329,36 @@ class GeneralType(Cached, models.Model):
return u""
@classmethod
+ def _get_initial_types(cls, initial, type_pks):
+ new_vals = []
+ for value in initial:
+ try:
+ pk = int(value)
+ except ValueError:
+ continue
+ if pk in type_pks:
+ continue
+ try:
+ extra_type = cls.objects.get(pk=pk)
+ new_vals.append((extra_type.pk, unicode(extra_type)))
+ except cls.DoesNotExist:
+ continue
+ return new_vals
+
+ @classmethod
def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True,
- default=None):
+ default=None, initial=None):
+ types = cls._pre_get_types(dct, instances, exclude, empty_first,
+ default)
+ if not initial:
+ return types
+ new_vals = cls._get_initial_types(initial, [idx for idx, lbl in types])
+ types += new_vals
+ return types
+
+ @classmethod
+ def _pre_get_types(cls, dct={}, instances=False, exclude=[],
+ empty_first=True, default=None):
# cache
cache_key = None
if not instances:
@@ -1384,8 +1412,8 @@ class Merge(models.Model):
blank=True, null=True)
merge_exclusion = models.ManyToManyField("self",
blank=True, null=True)
- exclude_from_merge = models.NullBooleanField(default=False,
- blank=True, null=True)
+ archived = models.NullBooleanField(default=False,
+ blank=True, null=True)
# 1 for one word similarity, 2 for two word similarity, etc.
MERGE_CLEMENCY = None
EMPTY_MERGE_KEY = '--'
@@ -1394,7 +1422,7 @@ class Merge(models.Model):
abstract = True
def generate_merge_key(self):
- if self.exclude_from_merge:
+ if self.archived:
return
self.merge_key = slugify(self.name if self.name else '')
if not self.merge_key:
@@ -1402,7 +1430,7 @@ class Merge(models.Model):
self.merge_key = self.merge_key
def generate_merge_candidate(self):
- if self.exclude_from_merge:
+ if self.archived:
return
if not self.merge_key:
self.generate_merge_key()
@@ -1413,7 +1441,7 @@ class Merge(models.Model):
.exclude(pk=self.pk)\
.exclude(merge_exclusion=self)\
.exclude(merge_candidate=self)\
- .exclude(exclude_from_merge=True)
+ .exclude(archived=True)
if not self.MERGE_CLEMENCY:
q = q.filter(merge_key=self.merge_key)
else:
@@ -1432,6 +1460,14 @@ class Merge(models.Model):
self.generate_merge_candidate()
return item
+ def archive(self):
+ self.archived = True
+ self.save()
+ for m in self.merge_candidate.all():
+ m.delete()
+ for m in self.merge_exclusion.all():
+ m.delete()
+
def merge(self, item):
merge_model_objects(self, item)
self.generate_merge_candidate()
@@ -1848,6 +1884,7 @@ class TargetKey(models.Model):
TARGET_MODELS = [
('OrganizationType', _(u"Organization type")),
+ ('TitleType', _(u"Title")),
('SourceType', _(u"Source type")),
('AuthorType', _(u"Author type")),
('Format', _(u"Format")),
@@ -2222,6 +2259,13 @@ class PersonType(GeneralType):
ordering = ('label',)
+class TitleType(GeneralType):
+ class Meta:
+ verbose_name = _(u"Title type")
+ verbose_name_plural = _(u"Title types")
+ ordering = ('label',)
+
+
class Person(Address, Merge, OwnPerms, ValueGetter):
_prefix = 'person_'
TYPE = (
@@ -2235,8 +2279,10 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
'attached_to')
SHOW_URL = 'show-person'
MODIFY_URL = 'person_modify'
- title = models.CharField(_(u"Title"), max_length=100, choices=TYPE,
- blank=True, null=True)
+ old_title = models.CharField(_(u"Title"), max_length=100, choices=TYPE,
+ blank=True, null=True)
+ title = models.ForeignKey(TitleType, verbose_name=_(u"Title"),
+ blank=True, null=True)
surname = models.CharField(_(u"Surname"), max_length=50, blank=True,
null=True)
name = models.CharField(_(u"Name"), max_length=200, blank=True,
@@ -2250,6 +2296,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
attached_to = models.ForeignKey(
'Organization', related_name='members', on_delete=models.SET_NULL,
verbose_name=_(u"Is attached to"), blank=True, null=True)
+ history = HistoricalRecords()
class Meta:
verbose_name = _(u"Person")
@@ -2283,11 +2330,6 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
def get_values(self, prefix=''):
values = super(Person, self).get_values(prefix=prefix)
- title = ''
- TYPES = dict(self.TYPE)
- if self.title in TYPES:
- title = dict(self.TYPE)[self.title]
- values[prefix + 'title'] = title
if not self.attached_to:
values.update(
Person.get_empty_values(prefix=prefix + 'attached_to_'))
@@ -2354,7 +2396,7 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
def full_label(self):
values = []
if self.title:
- values = [unicode(_(self.title))]
+ values = [self.title.label]
values += [unicode(getattr(self, attr))
for attr in ('surname', 'name') if getattr(self, attr)]
if not values and self.raw_name:
@@ -2425,7 +2467,7 @@ class IshtarUser(User):
else:
person_type, created = PersonType.objects.get_or_create(
txt_idx='public_access')
- person = Person.objects.create(title='Mr', surname=surname,
+ person = Person.objects.create(surname=surname,
name=name, email=email,
history_modifier=user)
person.person_types.add(person_type)
@@ -2565,7 +2607,7 @@ if settings.COUNTRY == 'fr':
(self.name, unicode(self.arrondissement)))
-class Town(models.Model):
+class Town(Imported, models.Model):
name = models.CharField(_(u"Name"), max_length=100)
surface = models.IntegerField(_(u"Surface (m2)"), blank=True, null=True)
center = models.PointField(_(u"Localisation"), srid=settings.SRID,
@@ -2602,7 +2644,7 @@ class OperationType(GeneralType):
@classmethod
def get_types(cls, dct={}, instances=False, exclude=[], empty_first=True,
- default=None):
+ default=None, initial=[]):
tuples = []
dct['available'] = True
if not instances and empty_first and not default:
@@ -2619,7 +2661,10 @@ class OperationType(GeneralType):
if exclude:
items = items.exclude(txt_idx__in=exclude)
current_preventive, current_lst = None, None
- for item in items.order_by(*cls._meta.ordering).all():
+ item_list = list(items.order_by(*cls._meta.ordering).all())
+ new_vals = cls._get_initial_types(initial, [i.pk for i in item_list])
+ item_list += new_vals
+ for item in item_list:
if not current_lst or item.preventive != current_preventive:
if current_lst:
tuples.append(current_lst)
diff --git a/ishtar_common/ooo_translation.py b/ishtar_common/ooo_translation.py
index a93a916ae..5a3d4cb84 100644
--- a/ishtar_common/ooo_translation.py
+++ b/ishtar_common/ooo_translation.py
@@ -1,6 +1,6 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
-# Copyright (C) 2013-2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2013-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -19,9 +19,10 @@
from django.conf import settings
from django.utils import translation
-from django.utils.translation import pgettext_lazy
+# from django.utils.translation import pgettext_lazy
+
+# [('study', pgettext_lazy('ooo key', u'study')),]
-# [('study', pgettext_lazy('ooo key', u'study')),]
TRANSLATION_STRINGS = []
ooo_translation = {}
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index b601076fe..4b8b68f8a 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -125,7 +125,7 @@
<p class='progress-detail progress-1'>{% trans "Processing..." %}</p>
<p class='progress-detail progress-2'>{% trans "This can be long." %}</p>
<p class='progress-detail progress-3'>{% trans "Time to take a coffee?" %} <i class="fa fa-coffee" aria-hidden="true"></i></p>
- <p class='progress-detail progress-4'>{% trans "Time to take another coffee?" %} <i class="fa fa-coffee" aria-hidden="true"></i></p></div>
+ <p class='progress-detail progress-4'>{% trans "Time to take another coffee?" %} <i class="fa fa-coffee" aria-hidden="true"></i></p>
</div>
</div>
</body>
diff --git a/ishtar_common/templates/ishtar/sheet_organization.html b/ishtar_common/templates/ishtar/sheet_organization.html
index 2ece97a8b..8a47c35f5 100644
--- a/ishtar_common/templates/ishtar/sheet_organization.html
+++ b/ishtar_common/templates/ishtar/sheet_organization.html
@@ -1,5 +1,5 @@
{% extends "ishtar/sheet.html" %}
-{% load i18n window_header %}
+{% load i18n window_header window_tables %}
{% block head_title %}{% trans "Organization" %}{% endblock %}
@@ -15,7 +15,7 @@
{% if item.mobile_phone %}<p><label>{% trans "Mobile phone" %}</label> <span class='value'>{{item.mobile_phone}}</span></p> {% endif %}
-<table>
+<table class='simple'>
<caption>{%trans "Person in the organization"%}</caption>
<tr>
<th>{% trans "Name" %}</th>
@@ -35,4 +35,14 @@
{% endfor %}
</table>
+{% trans "General contractor organization of archaelogical files" as af %}
+{% if item.general_contractor_files.count %}
+{% dynamic_table_document af 'files' 'corporation_general_contractor' item.pk '' output %}
+{% endif %}
+
+{% trans "Town planning service of archaelogical files" as af %}
+{% if item.planning_service_files.count %}
+{% dynamic_table_document af 'files' 'planning_service' item.pk '' output %}
+{% endif %}
+
{% endblock %}
diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html
index f5c42c11a..8fc2d9211 100644
--- a/ishtar_common/templates/ishtar/sheet_person.html
+++ b/ishtar_common/templates/ishtar/sheet_person.html
@@ -76,12 +76,21 @@
{% dynamic_table_document ao 'operations' 'in_charge' item.pk '' output %}
{% endif %}
-
-{% trans "Associated archaelogical files" as af %}
+{% trans "In charge of archaelogical files" as af %}
{% if item.file_responsability.count %}
{% dynamic_table_document af 'files' 'in_charge' item.pk '' output %}
{% endif %}
+{% trans "General contractor of archaelogical files" as af %}
+{% if item.general_contractor_files.count %}
+{% dynamic_table_document af 'files' 'general_contractor' item.pk '' output %}
+{% endif %}
+
+{% trans "Responsible for town planning service of archaelogical files" as af %}
+{% if item.responsible_town_planning_service_files.count %}
+{% dynamic_table_document af 'files' 'responsible_town_planning_service' item.pk '' output %}
+{% endif %}
+
{% if item.operation_docs_q.count %}
{% trans "Documents associated to operations" as operation_docs %}
{% dynamic_table_document operation_docs 'operation_docs' 'person' item.pk '' output %}
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index a4d354eb1..8c918b5a9 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2015 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2015-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
@@ -24,6 +24,7 @@ from django.contrib.auth.models import User
from django.contrib.contenttypes.models import ContentType
from django.core.cache import cache
from django.core.exceptions import ValidationError
+from django.core.files.base import File as DjangoFile
from django.core.urlresolvers import reverse
from django.template.defaultfilters import slugify
from django.test import TestCase
@@ -175,12 +176,14 @@ class MergeTest(TestCase):
self.author_1_pk = models.Author.objects.create(
person=self.person_1, author_type=self.author_types[0]).pk
+ self.title = models.TitleType.objects.create(label='Test')
+
self.company_2 = models.Organization.objects.create(
history_modifier=self.user, name='Goscinny Corp.',
organization_type=self.organisation_types[1])
self.person_2 = models.Person.objects.create(
name='Bill', history_modifier=self.user, surname='Peyo',
- title='Mr', attached_to=self.company_2)
+ title=self.title, attached_to=self.company_2)
self.person_2.person_types.add(self.person_types[1])
self.author_2_pk = models.Author.objects.create(
person=self.person_2, author_type=self.author_types[1]).pk
@@ -193,7 +196,7 @@ class MergeTest(TestCase):
# preserve existing fields
self.assertEqual(self.person_1.name, 'Boule')
# fill missing fields
- self.assertEqual(self.person_1.title, 'Mr')
+ self.assertEqual(self.person_1.title, self.title)
# string field with only spaces is an empty field
self.assertEqual(self.person_1.surname, 'Peyo')
# preserve existing foreign key
@@ -215,8 +218,42 @@ class MergeTest(TestCase):
self.assertTrue(self.person_types[1]
in self.person_3.person_types.all())
+ def testPersonMergeCandidate(self):
+ init_mc = self.person_1.merge_candidate.count()
+ person = models.Person.objects.create(
+ name=self.person_1.name,
+ surname=self.person_1.surname, history_modifier=self.user,
+ attached_to=self.person_1.attached_to)
+ self.assertEqual(self.person_1.merge_candidate.count(),
+ init_mc + 1)
+ person.archive()
+ self.assertEqual(self.person_1.merge_candidate.count(),
+ init_mc)
+
+
+class ImportTest(TestCase):
+ def testDeleteRelated(self):
+ town = models.Town.objects.create(name='my-test')
+ self.assertEqual(models.Town.objects.filter(name='my-test').count(), 1)
+
+ # create an import, fields are not relevant...
+ create_user()
+ importer_type = models.ImporterType.objects.create(
+ associated_models='ishtar_common.models.Person')
+ mcc_operation_file = DjangoFile(file(
+ settings.ROOT_PATH +
+ '../archaeological_operations/tests/MCC-operations-example.csv',
+ 'rb'))
+ imprt = models.Import.objects.create(
+ user=models.IshtarUser.objects.all()[0],
+ importer_type=importer_type,
+ imported_file=mcc_operation_file)
+
+ town.imports.add(imprt)
+ imprt.delete()
+ # town should be deleted
+ self.assertEqual(models.Town.objects.filter(name='my-test').count(), 0)
-class ImportKeyTest(TestCase):
def testKeys(self):
content_type = ContentType.objects.get_for_model(
models.OrganizationType)
@@ -291,12 +328,12 @@ class IshtarSiteProfileTest(TestCase):
self.assertTrue(profile2.context_record and profile2.find)
def testDefaultProfile(self):
- cache.set('default-ishtarsiteprofile-is-current-profile', None,
+ cache.set('default-ishtar_common-IshtarSiteProfile', None,
settings.CACHE_TIMEOUT)
self.assertFalse(models.IshtarSiteProfile.objects.count())
- profile = models.get_current_profile()
+ profile = models.get_current_profile(force=True)
self.assertTrue(profile)
- self.assertTrue(models.IshtarSiteProfile.objects.count())
+ self.assertEqual(models.IshtarSiteProfile.objects.count(), 1)
def testMenuFiltering(self):
cache.set('default-ishtarsiteprofile-is-current-profile', None,
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 28b1affa5..9fe7a3a00 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
-# Copyright (C) 2013 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
+# Copyright (C) 2013-2016 Étienne Loks <etienne.loks_AT_peacefrogsDOTnet>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py
index 1ac28d640..a42e2d8b5 100644
--- a/ishtar_common/wizards.py
+++ b/ishtar_common/wizards.py
@@ -113,10 +113,10 @@ def _check_right(step, condition=True):
class Wizard(NamedUrlWizardView):
model = None
label = ''
+ translated_keys = []
modification = None # True when the wizard modify an item
storage_name = \
'django.contrib.formtools.wizard.storage.session.SessionStorage'
- translated_keys = ['title']
wizard_done_template = 'ishtar/wizard/wizard_done.html'
wizard_done_window = ''
wizard_confirm = 'ishtar/wizard/confirm_wizard.html'
diff --git a/translations/de/ishtar_common.po b/translations/de/ishtar_common.po
index 32f5c3109..94c3ec5cd 100644
--- a/translations/de/ishtar_common.po
+++ b/translations/de/ishtar_common.po
@@ -8,7 +8,7 @@ msgstr ""
"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n"
"Language-Team: German (Germany)\n"
"Language: de-DE\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n"
#: __init__.py:8
@@ -27,7 +27,7 @@ msgstr ""
msgid "Archaeological file"
msgstr ""
-#: context_processors.py:39 models.py:1457
+#: context_processors.py:39 models.py:1486
msgid "Operation"
msgstr ""
@@ -150,7 +150,7 @@ msgstr ""
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr ""
-#: forms.py:71 forms_common.py:490
+#: forms.py:71 forms_common.py:499
msgid "Confirm"
msgstr ""
@@ -174,18 +174,18 @@ msgstr ""
msgid "Add a new item"
msgstr ""
-#: forms.py:204 models.py:1234
+#: forms.py:235 models.py:1255
msgid "Template"
msgstr ""
-#: forms_common.py:39 forms_common.py:57 forms_common.py:170
-#: forms_common.py:293 models.py:1300 models.py:2583
+#: forms_common.py:40 forms_common.py:58 forms_common.py:171
+#: forms_common.py:296 models.py:1321 models.py:2618
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
msgstr ""
-#: forms_common.py:41
+#: forms_common.py:42
msgid ""
"<p>Type name, department code and/or postal code of the town you would like "
"to select. The search is insensitive to case.</p>\n"
@@ -195,70 +195,70 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455
-#: models.py:2255 models.py:2407 models.py:2464
+#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484
+#: models.py:2295 models.py:2442 models.py:2499
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
-#: forms_common.py:158 forms_common.py:234 forms_common.py:336
-#: ishtar_menu.py:71 models.py:1456 models.py:2172
+#: forms_common.py:159 forms_common.py:236 forms_common.py:341
+#: ishtar_menu.py:71 models.py:1485 models.py:2202
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
-#: forms_common.py:161 forms_common.py:197 forms_common.py:229
-#: forms_common.py:263 forms_common.py:331 models.py:902 models.py:1233
-#: models.py:1501 models.py:1719 models.py:2166 models.py:2242 models.py:2569
+#: forms_common.py:162 forms_common.py:199 forms_common.py:231
+#: forms_common.py:266 forms_common.py:336 models.py:923 models.py:1254
+#: models.py:1530 models.py:1748 models.py:2196 models.py:2281 models.py:2604
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:162 models.py:1442 models.py:1850
+#: forms_common.py:163 models.py:1471 models.py:1879
msgid "Organization type"
msgstr ""
-#: forms_common.py:164 forms_common.py:287 models.py:1295
+#: forms_common.py:165 forms_common.py:290 models.py:1316
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:166 forms_common.py:290 models.py:1296
+#: forms_common.py:167 forms_common.py:293 models.py:1317
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:168 forms_common.py:291 models.py:1298
+#: forms_common.py:169 forms_common.py:294 models.py:1319
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:171 forms_common.py:294 models.py:1301
+#: forms_common.py:172 forms_common.py:297 models.py:1322
msgid "Country"
msgstr ""
-#: forms_common.py:173 forms_common.py:231 forms_common.py:267
-#: forms_common.py:333 forms_common.py:446 models.py:1328
+#: forms_common.py:174 forms_common.py:233 forms_common.py:270
+#: forms_common.py:338 forms_common.py:453 models.py:1349
msgid "Email"
msgstr ""
-#: forms_common.py:174 forms_common.py:270 models.py:1313
+#: forms_common.py:175 forms_common.py:273 models.py:1334
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:18
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr ""
-#: forms_common.py:175 forms_common.py:279 models.py:1325
+#: forms_common.py:176 forms_common.py:282 models.py:1346
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:36
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr ""
-#: forms_common.py:198 forms_common.py:232 forms_common.py:334 models.py:1877
-#: models.py:2168 models.py:2505 templates/sheet_ope.html:85
+#: forms_common.py:200 forms_common.py:234 forms_common.py:339 models.py:1907
+#: models.py:2198 models.py:2540 templates/sheet_ope.html:85
#: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126
#: templates/ishtar/import_list.html:13
#: templates/ishtar/sheet_organization.html:23
@@ -266,210 +266,210 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:207 views.py:130
+#: forms_common.py:209 views.py:130
msgid "Organization search"
msgstr ""
-#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240
+#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:246 forms_common.py:319 views.py:95
+#: forms_common.py:248 forms_common.py:324 views.py:95
msgid "Person search"
msgstr ""
-#: forms_common.py:258 templates/ishtar/sheet_person.html:7
+#: forms_common.py:260 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr ""
-#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238
-#: models.py:2502 templates/sheet_ope.html:104
+#: forms_common.py:263 forms_common.py:653 forms_common.py:695 models.py:1880
+#: models.py:2275 models.py:2277 models.py:2537 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:265 models.py:2244
+#: forms_common.py:268 models.py:2283
msgid "Raw name"
msgstr ""
-#: forms_common.py:268 models.py:1314
+#: forms_common.py:271 models.py:1335
msgid "Phone description"
msgstr ""
-#: forms_common.py:271 models.py:1316 models.py:1318
+#: forms_common.py:274 models.py:1337 models.py:1339
msgid "Phone description 2"
msgstr ""
-#: forms_common.py:273
+#: forms_common.py:276
msgid "Phone 2"
msgstr ""
-#: forms_common.py:275 models.py:1322
+#: forms_common.py:278 models.py:1343
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:277 models.py:1320
+#: forms_common.py:280 models.py:1341
msgid "Phone 3"
msgstr ""
-#: forms_common.py:282
+#: forms_common.py:285
msgid "Current organization"
msgstr ""
-#: forms_common.py:296 models.py:1303
+#: forms_common.py:299 models.py:1324
msgid "Other address: address"
msgstr ""
-#: forms_common.py:299 models.py:1306
+#: forms_common.py:302 models.py:1327
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:301 models.py:1307
+#: forms_common.py:304 models.py:1328
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:303 models.py:1309
+#: forms_common.py:306 models.py:1330
msgid "Other address: town"
msgstr ""
-#: forms_common.py:305 models.py:1311
+#: forms_common.py:308 models.py:1332
msgid "Other address: country"
msgstr ""
-#: forms_common.py:315
+#: forms_common.py:320
msgid "Already has an account"
msgstr ""
-#: forms_common.py:330
+#: forms_common.py:335
msgid "Username"
msgstr ""
-#: forms_common.py:348
+#: forms_common.py:353
msgid "Account search"
msgstr ""
-#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220
+#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250
msgid "Person type"
msgstr ""
-#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32
+#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32
msgid "Account"
msgstr ""
-#: forms_common.py:449 wizards.py:1170
+#: forms_common.py:456 wizards.py:1170
msgid "New password"
msgstr ""
-#: forms_common.py:452
+#: forms_common.py:459
msgid "New password (confirmation)"
msgstr ""
-#: forms_common.py:471
+#: forms_common.py:480
msgid "Your password and confirmation password do not match."
msgstr ""
-#: forms_common.py:476
+#: forms_common.py:485
msgid "You must provide a correct password."
msgstr ""
-#: forms_common.py:484
+#: forms_common.py:493
msgid "This username already exists."
msgstr ""
-#: forms_common.py:491
+#: forms_common.py:500
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:500 forms_common.py:513 models.py:2584
+#: forms_common.py:509 forms_common.py:522 models.py:2619
msgid "Towns"
msgstr ""
-#: forms_common.py:510
+#: forms_common.py:519
msgid "There are identical towns."
msgstr ""
-#: forms_common.py:594
+#: forms_common.py:603
msgid "Only one choice can be checked."
msgstr ""
-#: forms_common.py:642
+#: forms_common.py:651
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485
+#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520
msgid "Source type"
msgstr ""
-#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84
+#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84
msgid "Reference"
msgstr ""
-#: forms_common.py:651 forms_common.py:688
+#: forms_common.py:660 forms_common.py:698
msgid "Internal reference"
msgstr ""
-#: forms_common.py:654 models.py:2516
+#: forms_common.py:663 models.py:2551
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:655 models.py:2518
+#: forms_common.py:664 models.py:2553
msgid "Receipt date"
msgstr ""
-#: forms_common.py:657 models.py:2004 models.py:2520
+#: forms_common.py:666 models.py:2034 models.py:2555
msgid "Creation date"
msgstr ""
-#: forms_common.py:660 models.py:2523
+#: forms_common.py:669 models.py:2558
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516
-#: models.py:1746 models.py:2248 models.py:2530
+#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537
+#: models.py:1775 models.py:2287 models.py:2565
msgid "Comment"
msgstr ""
-#: forms_common.py:664 forms_common.py:689 models.py:904 models.py:1505
-#: models.py:1678 models.py:1720 models.py:2529 templates/sheet_ope.html:128
+#: forms_common.py:673 forms_common.py:699 models.py:925 models.py:1534
+#: models.py:1707 models.py:1749 models.py:2564 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:667 models.py:2531
+#: forms_common.py:676 models.py:2566
msgid "Additional information"
msgstr ""
-#: forms_common.py:669 forms_common.py:693 models.py:2533
+#: forms_common.py:678 forms_common.py:703 models.py:2568
msgid "Has a duplicate"
msgstr ""
-#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469
+#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
-#: forms_common.py:692
+#: forms_common.py:702
msgid "Additional informations"
msgstr ""
-#: forms_common.py:703
+#: forms_common.py:713
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466
+#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501
msgid "Author type"
msgstr ""
-#: forms_common.py:737
+#: forms_common.py:748
msgid "Author selection"
msgstr ""
-#: forms_common.py:751
+#: forms_common.py:762
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:755 models.py:2470 models.py:2512
+#: forms_common.py:766 models.py:2505 models.py:2547
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -487,7 +487,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1029 views.py:1232
+#: ishtar_menu.py:39 models.py:1050 views.py:1232
msgid "Global variables"
msgstr ""
@@ -511,12 +511,12 @@ msgstr ""
msgid "Merge"
msgstr ""
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr ""
-#: ishtar_menu.py:101 models.py:2015
+#: ishtar_menu.py:101 models.py:2045
msgid "Imports"
msgstr ""
@@ -544,7 +544,7 @@ msgstr ""
msgid "This item already exists."
msgstr ""
-#: models.py:283 models.py:515 models.py:1268 models.py:1280
+#: models.py:283 models.py:536 models.py:1289 models.py:1301
msgid "Label"
msgstr ""
@@ -552,191 +552,191 @@ msgstr ""
msgid "Textual ID"
msgstr ""
-#: models.py:288 models.py:518 models.py:1237
+#: models.py:288 models.py:539 models.py:1258
msgid "Available"
msgstr ""
-#: models.py:537 models.py:1792
+#: models.py:558 models.py:1821
msgid "Key"
msgstr ""
-#: models.py:543
+#: models.py:564
msgid "Specific key to an import"
msgstr ""
-#: models.py:623
+#: models.py:644
msgid "Last editor"
msgstr ""
-#: models.py:626
+#: models.py:647
msgid "Creator"
msgstr ""
-#: models.py:766 models.py:2595
+#: models.py:787 models.py:2630
msgid "Order"
msgstr ""
-#: models.py:767
+#: models.py:788
msgid "Symmetrical"
msgstr ""
-#: models.py:768
+#: models.py:789
msgid "Tiny label"
msgstr ""
-#: models.py:782
+#: models.py:803
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:896
+#: models.py:917
msgid "Euro"
msgstr ""
-#: models.py:897
+#: models.py:918
msgid "US dollar"
msgstr ""
-#: models.py:903 models.py:1503
+#: models.py:924 models.py:1532
msgid "Slug"
msgstr ""
-#: models.py:905
+#: models.py:926
msgid "Files module"
msgstr ""
-#: models.py:906
+#: models.py:927
msgid "Context records module"
msgstr ""
-#: models.py:908
+#: models.py:929
msgid "Finds module"
msgstr ""
-#: models.py:909
+#: models.py:930
msgid "Need context records module"
msgstr ""
-#: models.py:911
+#: models.py:932
msgid "Warehouses module"
msgstr ""
-#: models.py:912
+#: models.py:933
msgid "Need finds module"
msgstr ""
-#: models.py:914
+#: models.py:935
msgid "Home page"
msgstr ""
-#: models.py:915
+#: models.py:936
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax."
msgstr ""
-#: models.py:918
+#: models.py:939
msgid "File external id"
msgstr ""
-#: models.py:920
+#: models.py:941
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:925
+#: models.py:946
msgid "Parcel external id"
msgstr ""
-#: models.py:928
+#: models.py:949
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:933
+#: models.py:954
msgid "Context record external id"
msgstr ""
-#: models.py:935
+#: models.py:956
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:940
+#: models.py:961
msgid "Base find external id"
msgstr ""
-#: models.py:942
+#: models.py:963
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:947
+#: models.py:968
msgid "Find external id"
msgstr ""
-#: models.py:949
+#: models.py:970
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:954
+#: models.py:975
msgid "Raw name for person"
msgstr ""
-#: models.py:956
+#: models.py:977
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:960
+#: models.py:981
msgid "Current active"
msgstr ""
-#: models.py:961
+#: models.py:982
msgid "Currency"
msgstr ""
-#: models.py:965
+#: models.py:986
msgid "Ishtar site profile"
msgstr ""
-#: models.py:966
+#: models.py:987
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1022
+#: models.py:1043
msgid "Variable name"
msgstr ""
-#: models.py:1023
+#: models.py:1044
msgid "Description of the variable"
msgstr ""
-#: models.py:1025 models.py:1793
+#: models.py:1046 models.py:1822
msgid "Value"
msgstr ""
-#: models.py:1028
+#: models.py:1049
msgid "Global variable"
msgstr ""
-#: models.py:1138 models.py:1168
+#: models.py:1159 models.py:1189
msgid "Total"
msgstr ""
-#: models.py:1145 models.py:1269 models.py:1281
+#: models.py:1166 models.py:1290 models.py:1302
#: templates/ishtar/sheet_person.html:21
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -744,581 +744,589 @@ msgstr ""
msgid "Number"
msgstr ""
-#: models.py:1232
+#: models.py:1253
msgid "Administrative Act"
msgstr ""
-#: models.py:1236
+#: models.py:1257
msgid "Associated object"
msgstr ""
-#: models.py:1240
+#: models.py:1261
msgid "Document template"
msgstr ""
-#: models.py:1241
+#: models.py:1262
msgid "Document templates"
msgstr ""
-#: models.py:1272 models.py:1282 models.py:1999
+#: models.py:1293 models.py:1303 models.py:2029
msgid "State"
msgstr ""
-#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1287
+#: models.py:1308
msgid "Departments"
msgstr ""
-#: models.py:1324
+#: models.py:1345
msgid "Raw phone"
msgstr ""
-#: models.py:1330
+#: models.py:1351
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1369
+#: models.py:1390
msgid "Tel: "
msgstr ""
-#: models.py:1373
+#: models.py:1394
msgid "Mobile: "
msgstr ""
-#: models.py:1377
+#: models.py:1398
msgid "Email: "
msgstr ""
-#: models.py:1382
+#: models.py:1403
msgid "Merge key"
msgstr ""
-#: models.py:1443
+#: models.py:1472
msgid "Organization types"
msgstr ""
-#: models.py:1459
+#: models.py:1488
msgid "Archaeological site"
msgstr ""
-#: models.py:1460
+#: models.py:1489
msgid "Parcels"
msgstr ""
-#: models.py:1462
+#: models.py:1491
msgid "Operation source"
msgstr ""
-#: models.py:1465 views.py:1057 views.py:1108
+#: models.py:1494 views.py:1057 views.py:1108
msgid "Archaeological files"
msgstr ""
-#: models.py:1467 views.py:1060 views.py:1116
+#: models.py:1496 views.py:1060 views.py:1116
msgid "Context records"
msgstr ""
-#: models.py:1469
+#: models.py:1498
msgid "Context record relations"
msgstr ""
-#: models.py:1471 views.py:1062 views.py:1119
+#: models.py:1500 views.py:1062 views.py:1119
msgid "Finds"
msgstr ""
-#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1509
+#: models.py:1538
msgid "Associated model"
msgstr ""
-#: models.py:1512
+#: models.py:1541
msgid "Is template"
msgstr ""
-#: models.py:1513
+#: models.py:1542
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1517
+#: models.py:1546
msgid "Importer - Type"
msgstr ""
-#: models.py:1518
+#: models.py:1547
msgid "Importer - Types"
msgstr ""
-#: models.py:1608
+#: models.py:1637
msgid "Importer - Default"
msgstr ""
-#: models.py:1609
+#: models.py:1638
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1644
+#: models.py:1673
msgid "Importer - Default value"
msgstr ""
-#: models.py:1645
+#: models.py:1674
msgid "Importer - Default values"
msgstr ""
-#: models.py:1677
+#: models.py:1706
msgid "Column number"
msgstr ""
-#: models.py:1680
+#: models.py:1709
msgid "Required"
msgstr ""
-#: models.py:1683
+#: models.py:1712
msgid "Importer - Column"
msgstr ""
-#: models.py:1684
+#: models.py:1713
msgid "Importer - Columns"
msgstr ""
-#: models.py:1704
+#: models.py:1733
msgid "Field name"
msgstr ""
-#: models.py:1706 models.py:1740
+#: models.py:1735 models.py:1769
msgid "Force creation of new items"
msgstr ""
-#: models.py:1708 models.py:1742
+#: models.py:1737 models.py:1771
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1710 models.py:1744
+#: models.py:1739 models.py:1773
msgid "Concatenate character"
msgstr ""
-#: models.py:1714
+#: models.py:1743
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1715
+#: models.py:1744
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1722
+#: models.py:1751
msgid "Regular expression"
msgstr ""
-#: models.py:1725
+#: models.py:1754
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1726
+#: models.py:1755
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1749
+#: models.py:1778
msgid "Importer - Target"
msgstr ""
-#: models.py:1750
+#: models.py:1779
msgid "Importer - Targets"
msgstr ""
-#: models.py:1774 views.py:343
+#: models.py:1803 views.py:343
msgid "True"
msgstr ""
-#: models.py:1775 views.py:345
+#: models.py:1804 views.py:345
msgid "False"
msgstr ""
-#: models.py:1794
+#: models.py:1823
msgid "Is set"
msgstr ""
-#: models.py:1801
+#: models.py:1830
msgid "Importer - Target key"
msgstr ""
-#: models.py:1802
+#: models.py:1831
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1853 models.py:2497 models.py:2508
+#: models.py:1883 models.py:2532 models.py:2543
msgid "Format"
msgstr ""
-#: models.py:1854 models.py:2599
+#: models.py:1884 models.py:2634
msgid "Operation type"
msgstr ""
-#: models.py:1855
+#: models.py:1885
msgid "Period"
msgstr ""
-#: models.py:1856
+#: models.py:1886
msgid "Report state"
msgstr ""
-#: models.py:1857
+#: models.py:1887
msgid "Unit"
msgstr ""
-#: models.py:1858
+#: models.py:1888
msgid "Material"
msgstr ""
-#: models.py:1860
+#: models.py:1890
msgid "Conservatory state"
msgstr ""
-#: models.py:1861
+#: models.py:1891
msgid "Preservation type"
msgstr ""
-#: models.py:1862
+#: models.py:1892
msgid "Object type"
msgstr ""
-#: models.py:1864
+#: models.py:1894
msgid "Identification type"
msgstr ""
-#: models.py:1866
+#: models.py:1896
msgid "Context record relation type"
msgstr ""
-#: models.py:1867 models.py:2491
+#: models.py:1897 models.py:2526
msgid "Support type"
msgstr ""
-#: models.py:1873
+#: models.py:1903
msgid "Integer"
msgstr ""
-#: models.py:1874
+#: models.py:1904
msgid "Float"
msgstr ""
-#: models.py:1875
+#: models.py:1905
msgid "String"
msgstr ""
-#: models.py:1876 templates/sheet_ope.html:86
+#: models.py:1906 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1908 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1879
+#: models.py:1909
msgid "String to boolean"
msgstr ""
-#: models.py:1880
+#: models.py:1910
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1881
+#: models.py:1911
msgid "Unknow type"
msgstr ""
-#: models.py:1897
+#: models.py:1927
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1898
+#: models.py:1928
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1899
+#: models.py:1929
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:1909
+#: models.py:1939
msgid "Options"
msgstr ""
-#: models.py:1911
+#: models.py:1941
msgid "Split character(s)"
msgstr ""
-#: models.py:1915
+#: models.py:1945
msgid "Importer - Formater type"
msgstr ""
-#: models.py:1916
+#: models.py:1946
msgid "Importer - Formater types"
msgstr ""
-#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:1964
+#: models.py:1994
msgid "Analyse in progress"
msgstr ""
-#: models.py:1965
+#: models.py:1995
msgid "Analysed"
msgstr ""
-#: models.py:1966
+#: models.py:1996
msgid "Import pending"
msgstr ""
-#: models.py:1967
+#: models.py:1997
msgid "Import in progress"
msgstr ""
-#: models.py:1968
+#: models.py:1998
msgid "Finished with errors"
msgstr ""
-#: models.py:1969
+#: models.py:1999
msgid "Finished"
msgstr ""
-#: models.py:1970
+#: models.py:2000
msgid "Archived"
msgstr ""
-#: models.py:1982
+#: models.py:2012
msgid "Imported file"
msgstr ""
-#: models.py:1985
+#: models.py:2015
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:1987
+#: models.py:2017
msgid "Encoding"
msgstr ""
-#: models.py:1989
+#: models.py:2019
msgid "Skip lines"
msgstr ""
-#: models.py:1990 templates/ishtar/import_list.html:47
+#: models.py:2020 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:1993
+#: models.py:2023
msgid "Result file"
msgstr ""
-#: models.py:1996 templates/ishtar/import_list.html:53
+#: models.py:2026 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2002
+#: models.py:2032
msgid "Conservative import"
msgstr ""
-#: models.py:2007
+#: models.py:2037
msgid "End date"
msgstr ""
-#: models.py:2009
+#: models.py:2039
msgid "Remaining seconds"
msgstr ""
-#: models.py:2014
+#: models.py:2044
msgid "Import"
msgstr ""
-#: models.py:2031
+#: models.py:2061
msgid "Analyse"
msgstr ""
-#: models.py:2033 models.py:2036
+#: models.py:2063 models.py:2066
msgid "Re-analyse"
msgstr ""
-#: models.py:2034
+#: models.py:2064
msgid "Launch import"
msgstr ""
-#: models.py:2037
+#: models.py:2067
msgid "Re-import"
msgstr ""
-#: models.py:2038
+#: models.py:2068
msgid "Archive"
msgstr ""
-#: models.py:2040
+#: models.py:2070
msgid "Unarchive"
msgstr ""
-#: models.py:2173
+#: models.py:2203
msgid "Organizations"
msgstr ""
-#: models.py:2175
+#: models.py:2205
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2176
+#: models.py:2206
msgid "Can view own Organization"
msgstr ""
-#: models.py:2177
+#: models.py:2207
msgid "Can add own Organization"
msgstr ""
-#: models.py:2179
+#: models.py:2209
msgid "Can change own Organization"
msgstr ""
-#: models.py:2181
+#: models.py:2211
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2216
+#: models.py:2246
msgid "Groups"
msgstr ""
-#: models.py:2221
+#: models.py:2251
msgid "Person types"
msgstr ""
-#: models.py:2228
+#: models.py:2257
+msgid "Title type"
+msgstr ""
+
+#: models.py:2258
+msgid "Title types"
+msgstr ""
+
+#: models.py:2265
msgid "Mr"
msgstr ""
-#: models.py:2229
+#: models.py:2266
msgid "Miss"
msgstr ""
-#: models.py:2230
+#: models.py:2267
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2231
+#: models.py:2268
msgid "Mrs"
msgstr ""
-#: models.py:2232
+#: models.py:2269
msgid "Doctor"
msgstr ""
-#: models.py:2246
+#: models.py:2285
msgid "Contact type"
msgstr ""
-#: models.py:2249 models.py:2296
+#: models.py:2288 models.py:2331
msgid "Types"
msgstr ""
-#: models.py:2252
+#: models.py:2291
msgid "Is attached to"
msgstr ""
-#: models.py:2256
+#: models.py:2296
msgid "Persons"
msgstr ""
-#: models.py:2258
+#: models.py:2298
msgid "Can view all Persons"
msgstr ""
-#: models.py:2259
+#: models.py:2299
msgid "Can view own Person"
msgstr ""
-#: models.py:2260
+#: models.py:2300
msgid "Can add own Person"
msgstr ""
-#: models.py:2261
+#: models.py:2301
msgid "Can change own Person"
msgstr ""
-#: models.py:2262
+#: models.py:2302
msgid "Can delete own Person"
msgstr ""
-#: models.py:2411
+#: models.py:2446
msgid "Ishtar user"
msgstr ""
-#: models.py:2412
+#: models.py:2447
msgid "Ishtar users"
msgstr ""
-#: models.py:2454
+#: models.py:2489
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2460
+#: models.py:2495
msgid "Author types"
msgstr ""
-#: models.py:2486
+#: models.py:2521
msgid "Source types"
msgstr ""
-#: models.py:2492
+#: models.py:2527
msgid "Support types"
msgstr ""
-#: models.py:2498
+#: models.py:2533
msgid "Formats"
msgstr ""
-#: models.py:2503
+#: models.py:2538
msgid "External ID"
msgstr ""
-#: models.py:2506
+#: models.py:2541
msgid "Support"
msgstr ""
-#: models.py:2510
+#: models.py:2545
msgid "Scale"
msgstr ""
-#: models.py:2524
+#: models.py:2559
msgid "Item number"
msgstr ""
-#: models.py:2525
+#: models.py:2560
msgid "Ref."
msgstr ""
-#: models.py:2528
+#: models.py:2563
msgid "Internal ref."
msgstr ""
-#: models.py:2570
+#: models.py:2605
msgid "Surface (m2)"
msgstr ""
-#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2596
+#: models.py:2631
msgid "Is preventive"
msgstr ""
-#: models.py:2600
+#: models.py:2635
msgid "Operation types"
msgstr ""
-#: models.py:2626
+#: models.py:2661
msgid "Preventive"
msgstr ""
-#: models.py:2627
+#: models.py:2662
msgid "Research"
msgstr ""
@@ -1986,6 +1994,14 @@ msgstr ""
msgid "No person in this organization"
msgstr ""
+#: templates/ishtar/sheet_organization.html:38
+msgid "General contractor organization of archaelogical files"
+msgstr ""
+
+#: templates/ishtar/sheet_organization.html:43
+msgid "Town planning service of archaelogical files"
+msgstr ""
+
#: templates/ishtar/sheet_person.html:20
#: templates/ishtar/wizard/wizard_person.html:19
msgid "Phone type"
@@ -2013,19 +2029,27 @@ msgstr ""
msgid "Associated operations as responsible"
msgstr ""
-#: templates/ishtar/sheet_person.html:80
-msgid "Associated archaelogical files"
+#: templates/ishtar/sheet_person.html:79
+msgid "In charge of archaelogical files"
+msgstr ""
+
+#: templates/ishtar/sheet_person.html:84
+msgid "General contractor of archaelogical files"
+msgstr ""
+
+#: templates/ishtar/sheet_person.html:89
+msgid "Responsible for town planning service of archaelogical files"
msgstr ""
-#: templates/ishtar/sheet_person.html:86
+#: templates/ishtar/sheet_person.html:95
msgid "Documents associated to operations"
msgstr ""
-#: templates/ishtar/sheet_person.html:91
+#: templates/ishtar/sheet_person.html:100
msgid "Documents associated to context records"
msgstr ""
-#: templates/ishtar/sheet_person.html:96
+#: templates/ishtar/sheet_person.html:105
msgid "Documents associated to finds"
msgstr ""
diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po
index 8091a7cb7..d763386d0 100644
--- a/translations/fr/archaeological_context_records.po
+++ b/translations/fr/archaeological_context_records.po
@@ -14,7 +14,7 @@ msgstr ""
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
#: forms.py:46 forms.py:123 models.py:130
#: templates/ishtar/sheet_contextrecord.html:59
@@ -41,7 +41,7 @@ msgstr "Entité Archéologique"
msgid "Search within operation relations"
msgstr "Rechercher parmi les opérations reliées"
-#: forms.py:64 forms.py:189 models.py:48
+#: forms.py:64 forms.py:190 models.py:48
msgid "Period"
msgstr "Période"
@@ -57,7 +57,7 @@ msgstr "Parcelle (section/nombre/domaine public)"
msgid "Search within relations"
msgstr "Recherche parmi les relations"
-#: forms.py:98 forms.py:288 views.py:118
+#: forms.py:98 forms.py:295 views.py:118
msgid "Context record search"
msgstr "Recherche d'Unité d'Enregistrement"
@@ -103,120 +103,120 @@ msgstr "Unité"
msgid "Location"
msgstr "Lieu"
-#: forms.py:178
+#: forms.py:179
msgid "This ID already exists for this operation."
msgstr "Cet identifiant existe déjà pour cette opération."
-#: forms.py:184 forms.py:208 models.py:59
+#: forms.py:185 forms.py:212 models.py:59
msgid "Dating"
msgstr "Datation"
-#: forms.py:190 models.py:49
+#: forms.py:191 models.py:49
msgid "Start date"
msgstr "Date de début"
-#: forms.py:191 models.py:50 models.py:135
+#: forms.py:192 models.py:50 models.py:135
msgid "End date"
msgstr "Date de fin"
-#: forms.py:192 models.py:53
+#: forms.py:193 models.py:53
msgid "Quality"
msgstr "Qualité"
-#: forms.py:193 models.py:35 models.py:51
+#: forms.py:194 models.py:35 models.py:51
msgid "Dating type"
msgstr "Type de datation"
-#: forms.py:217 ishtar_menu.py:29 models.py:354
+#: forms.py:221 ishtar_menu.py:29 models.py:354
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: forms.py:237
+#: forms.py:242
msgid "Relations"
msgstr "Relations"
-#: forms.py:241 forms.py:251 models.py:153
+#: forms.py:246 forms.py:256 models.py:153
#: templates/ishtar/sheet_contextrecord.html:37
msgid "Interpretation"
msgstr "Interprétation"
-#: forms.py:245
+#: forms.py:250
msgid "Comments on dating"
msgstr "Commentaires sur la datation"
-#: forms.py:247 models.py:150
+#: forms.py:252 models.py:150
msgid "Has furniture?"
msgstr "Contient du mobilier ?"
-#: forms.py:249 models.py:152
+#: forms.py:254 models.py:152
msgid "Filling"
msgstr "Remplissage"
-#: forms.py:253 models.py:173
+#: forms.py:258 models.py:173
msgid "Activity"
msgstr "Activité"
-#: forms.py:255 models.py:171
+#: forms.py:260 models.py:171
msgid "Identification"
msgstr "Identification"
-#: forms.py:257 models.py:156
+#: forms.py:262 models.py:156
msgid "TAQ"
msgstr "TAQ"
-#: forms.py:258 models.py:160
+#: forms.py:263 models.py:160
msgid "Estimated TAQ"
msgstr "TAQ estimé"
-#: forms.py:260 models.py:163
+#: forms.py:265 models.py:163
msgid "TPQ"
msgstr "TPQ"
-#: forms.py:261 models.py:167
+#: forms.py:266 models.py:167
msgid "Estimated TPQ"
msgstr "TPQ estimé"
-#: forms.py:274
+#: forms.py:281
msgid "Operation search"
msgstr "Recherche d'Opérations"
-#: forms.py:276
+#: forms.py:283
msgid "You should select an operation."
msgstr "Vous devez sélectionner une Opération."
-#: forms.py:281
+#: forms.py:288
msgid "Would you like to delete this context record?"
msgstr "Voulez-vous supprimer cette Unité d'Enregistrement ?"
-#: forms.py:290
+#: forms.py:297
msgid "You should select a context record."
msgstr "Vous devez sélectionner une Unité d'Enregistrement."
-#: forms.py:295
+#: forms.py:302
msgid "Year of the operation"
msgstr "Année de l'opération"
-#: forms.py:297
+#: forms.py:304
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:303
+#: forms.py:310
msgid "Town of the operation"
msgstr "Commune de l'opération"
-#: forms.py:305
+#: forms.py:312
msgid "Period of the context record"
msgstr "Période de l'Unité d'Enregistrement"
-#: forms.py:307
+#: forms.py:314
msgid "Unit type of the context record"
msgstr "Type d'unité de l'Unité d'Enregistrement"
-#: forms.py:320
+#: forms.py:327
msgid "Documentation search"
msgstr "Recherche de documents"
-#: forms.py:322
+#: forms.py:329
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
diff --git a/translations/fr/archaeological_files.po b/translations/fr/archaeological_files.po
index 33f9ee0fa..ab6a53867 100644
--- a/translations/fr/archaeological_files.po
+++ b/translations/fr/archaeological_files.po
@@ -15,245 +15,245 @@ msgstr ""
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
-#: forms.py:51 forms.py:210 forms.py:254 forms.py:395 forms.py:422
+#: forms.py:52 forms.py:212 forms.py:257 forms.py:404 forms.py:431
#: models.py:76 templates/ishtar/sheet_file.html:139
msgid "Year"
msgstr "Année"
-#: forms.py:52 forms.py:215 forms.py:256 models.py:79
+#: forms.py:53 forms.py:217 forms.py:259 models.py:79
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:54 forms.py:217
+#: forms.py:55 forms.py:219
msgid "Other reference"
msgstr "Autre référence"
-#: forms.py:56 forms.py:430
+#: forms.py:57 forms.py:439
msgid "Parcel (section/number/public domain)"
msgstr "Parcelle (section/nombre/domaine public)"
-#: forms.py:59 forms.py:406 forms.py:433 models.py:512
+#: forms.py:60 forms.py:415 forms.py:442 models.py:512
msgid "Department"
msgstr "Département"
-#: forms.py:60 forms.py:442
+#: forms.py:61 forms.py:451
msgid "File name"
msgstr "Nom du dossier"
-#: forms.py:61 forms.py:156 forms.py:221 models.py:87
+#: forms.py:62 forms.py:158 forms.py:223 models.py:87
msgid "File type"
msgstr "Type de dossier"
-#: forms.py:62
+#: forms.py:63
msgid "Is active?"
msgstr "Est actif ?"
-#: forms.py:63 forms.py:158 forms.py:318
+#: forms.py:64 forms.py:160 forms.py:321
msgid "Saisine type"
msgstr "Type de saisine"
-#: forms.py:64 forms.py:308 models.py:58 models.py:118
+#: forms.py:65 forms.py:311 models.py:58 models.py:118
msgid "Permit type"
msgstr "Type de permis"
-#: forms.py:66 forms.py:311 models.py:119
+#: forms.py:67 forms.py:314 models.py:119
msgid "Permit reference"
msgstr "Référence du permis"
-#: forms.py:67 forms.py:227 forms.py:365 models.py:148
+#: forms.py:68 forms.py:229 forms.py:372 models.py:148
#: templates/ishtar/sheet_file.html:94
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:69 templates/ishtar/sheet_file.html:112
+#: forms.py:70 templates/ishtar/sheet_file.html:112
msgid "In charge"
msgstr "Responsable"
-#: forms.py:76 forms.py:286 forms.py:444 models.py:94
+#: forms.py:77 forms.py:289 forms.py:453 models.py:94
msgid "General contractor"
msgstr "Aménageur"
-#: forms.py:83 forms.py:453
+#: forms.py:84 forms.py:462
msgid "Organization of general contractor"
msgstr "Organisation de l'aménageur"
-#: forms.py:90 forms.py:476
+#: forms.py:91 forms.py:485
msgid "Created by"
msgstr "Créé par"
-#: forms.py:97 forms.py:484
+#: forms.py:98 forms.py:493
msgid "Modified by"
msgstr "Modifié par"
-#: forms.py:127
+#: forms.py:129
msgid "Archaeological file search"
msgstr "Recherche de dossiers archéologiques"
-#: forms.py:141
+#: forms.py:143
msgid "You should select a file."
msgstr "Vous devez sélectionner un dossier archéologique."
-#: forms.py:144 forms.py:219 models.py:127
+#: forms.py:146 forms.py:221 models.py:127
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:145 forms.py:321 models.py:129
+#: forms.py:147 forms.py:324 models.py:129
msgid "Reception date"
msgstr "Date de réception"
-#: forms.py:150
+#: forms.py:152
msgid "Slicing"
msgstr "Découpage"
-#: forms.py:152
+#: forms.py:154
msgid "Department detail"
msgstr "Détail par département"
-#: forms.py:154
+#: forms.py:156
msgid "Date get from"
msgstr "Date utilisée"
-#: forms.py:160
+#: forms.py:162
msgid "Date after"
msgstr "Date après"
-#: forms.py:162
+#: forms.py:164
msgid "Date before"
msgstr "Date avant"
-#: forms.py:199 templates/ishtar/sheet_file.html:14
+#: forms.py:201 templates/ishtar/sheet_file.html:14
msgid "General"
msgstr "Général"
-#: forms.py:204 models.py:89
+#: forms.py:206 models.py:89
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:218 models.py:86
+#: forms.py:220 models.py:86
msgid "Name"
msgstr "Nom"
-#: forms.py:223 models.py:131
+#: forms.py:225 models.py:131
msgid "Related file"
msgstr "Dossier associé"
-#: forms.py:231 models.py:139
+#: forms.py:233 models.py:139
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:234 models.py:145
+#: forms.py:236 models.py:145
msgid "Main address"
msgstr "Adresse des terrains"
-#: forms.py:235
+#: forms.py:237
msgid "Main address - complement"
msgstr "Adresse des terrains - complément"
-#: forms.py:247
+#: forms.py:250
#, python-format
msgid "<br/>(last recorded: %s)"
msgstr "<br/>(dernier enregistrement : %s)"
-#: forms.py:269
+#: forms.py:272
msgid "Another file with this numeric id exists."
msgstr "Un autre dossier avec cet identifiant numérique existe."
-#: forms.py:280
+#: forms.py:283
msgid "Preventive informations"
msgstr "Information archéologie préventive"
-#: forms.py:298 models.py:106
+#: forms.py:301 models.py:106
msgid "Responsible for town planning service"
msgstr "Responsable au service instructeur"
-#: forms.py:314 models.py:142
+#: forms.py:317 models.py:142
msgid "Total developed surface (m2)"
msgstr "Surface totale aménagée (m2)"
-#: forms.py:333 templates/ishtar/sheet_file.html:84
+#: forms.py:340 templates/ishtar/sheet_file.html:84
#: templates/ishtar/dashboards/dashboard_file.html:45
msgid "Research archaeology"
msgstr "Archéologie programmée"
-#: forms.py:341 models.py:151 templates/ishtar/sheet_file.html:85
+#: forms.py:348 models.py:151 templates/ishtar/sheet_file.html:85
msgid "Departments"
msgstr "Départements"
-#: forms.py:352 models.py:160
+#: forms.py:359 models.py:160
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:354 models.py:154 templates/ishtar/sheet_file.html:87
+#: forms.py:361 models.py:154 templates/ishtar/sheet_file.html:87
msgid "Requested operation type"
msgstr "Type d'opération demandée"
-#: forms.py:356
+#: forms.py:363
msgid "Lead organization"
msgstr "Organisation porteuse du projet"
-#: forms.py:372 models.py:164 templates/ishtar/sheet_file.html:92
+#: forms.py:379 models.py:164 templates/ishtar/sheet_file.html:92
msgid "Classified area"
msgstr "Au sein d'un site classé"
-#: forms.py:374 models.py:166 templates/ishtar/sheet_file.html:93
+#: forms.py:381 models.py:166 templates/ishtar/sheet_file.html:93
msgid "Protected area"
msgstr "Au sein d'un secteur sauvegardé"
-#: forms.py:386
+#: forms.py:395
msgid "Would you like to close this archaeological file?"
msgstr "Voulez vous clore ce dossier archéologique ?"
-#: forms.py:391
+#: forms.py:400
msgid "Would you like to delete this archaelogical file ?"
msgstr "Voulez vous supprimer ce dossier archéologique ?"
-#: forms.py:396 forms.py:423 forms.py:546
+#: forms.py:405 forms.py:432 forms.py:556
msgid "Index"
msgstr "Index"
-#: forms.py:400 forms.py:427 forms.py:533
+#: forms.py:409 forms.py:436 forms.py:542
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:401
+#: forms.py:410
msgid "Object (full text search)"
msgstr "Objet (recherche texte intégral)"
-#: forms.py:428
+#: forms.py:437
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms.py:434
+#: forms.py:443
msgid "Object"
msgstr "Objet"
-#: forms.py:438
+#: forms.py:447
msgid "Signature date after"
msgstr "Date de signature après"
-#: forms.py:440
+#: forms.py:449
msgid "Signature date before"
msgstr "Date de signature avant"
-#: forms.py:461
+#: forms.py:470
msgid "File numeric reference"
msgstr "Dossier : réf. numérique"
-#: forms.py:462
+#: forms.py:471
msgid "File year"
msgstr "Dossier : année"
-#: forms.py:464
+#: forms.py:473
msgid "File other reference"
msgstr "Dossier : autre référence"
-#: forms.py:466
+#: forms.py:475
msgid "File in charge"
msgstr "Dossier : responsable"
-#: forms.py:474
+#: forms.py:483
msgid "File permit reference"
msgstr "Dossier : réf. du permis"
diff --git a/translations/fr/archaeological_files_pdl.po b/translations/fr/archaeological_files_pdl.po
index e668bc64d..34955a35a 100644
--- a/translations/fr/archaeological_files_pdl.po
+++ b/translations/fr/archaeological_files_pdl.po
@@ -14,7 +14,7 @@ msgstr ""
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
#: forms.py:41
msgid "General"
@@ -24,7 +24,7 @@ msgstr "Général"
msgid "File type"
msgstr "Type de dossier"
-#: forms.py:44 forms.py:401
+#: forms.py:44 forms.py:403
msgid "Year"
msgstr "Année"
@@ -36,97 +36,97 @@ msgstr "Date de création"
msgid "Reception date"
msgstr "Date de réception"
-#: forms.py:62
+#: forms.py:63
msgid "Reception date cannot be after today."
msgstr "La date de réception ne peut pas être dans le futur."
-#: forms.py:70
+#: forms.py:71
msgid "Permit type"
msgstr "Type de permis"
-#: forms.py:72
+#: forms.py:73
msgid "Saisine type"
msgstr "Type de saisine"
-#: forms.py:85
+#: forms.py:87
msgid "Planning"
msgstr "Aménagement"
-#: forms.py:88
+#: forms.py:90
msgid "Planning name"
msgstr "Nom de l'aménagement"
-#: forms.py:91 forms.py:121
+#: forms.py:93 forms.py:123
#: templates/ishtar/wizard/wizard_preventiveplanning.html:31
msgid "Towns"
msgstr "Communes"
-#: forms.py:93 forms.py:123
+#: forms.py:95 forms.py:125
#: templates/ishtar/wizard/wizard_preventiveplanning.html:41
msgid "Departments"
msgstr "Départements"
-#: forms.py:94 forms.py:124
+#: forms.py:96 forms.py:126
msgid "Locality"
msgstr "Lieu-dit"
-#: forms.py:97 forms.py:127
+#: forms.py:99 forms.py:129
msgid "Address (number/street)"
msgstr "Adresse (n° / voie)"
-#: forms.py:98 forms.py:128
+#: forms.py:100 forms.py:130
msgid "Number/street"
msgstr "N° / voie"
-#: forms.py:100 forms.py:130
+#: forms.py:102 forms.py:132
msgid "Postal code"
msgstr "Code postal"
-#: forms.py:105
+#: forms.py:107
msgid "Total surface (m2)"
msgstr "Surface totale des terrains (m2)"
-#: forms.py:110
+#: forms.py:112
msgid "Total developed surface (m2)"
msgstr "Surface totale aménagée (m2)"
-#: forms.py:117
+#: forms.py:119
msgid "Address"
msgstr "Adresse"
-#: forms.py:231 forms.py:235 forms.py:265 forms.py:268
+#: forms.py:233 forms.py:237 forms.py:267 forms.py:270
msgid "General contractor"
msgstr "Aménageur"
-#: forms.py:250 forms.py:362
+#: forms.py:252 forms.py:364
msgid "In charge"
msgstr "Responsable"
-#: forms.py:340
+#: forms.py:342
msgid "Town planning service"
msgstr "Service instructeur"
-#: forms.py:344
+#: forms.py:346
msgid "File reference"
msgstr "Référence du dossier"
-#: forms.py:347
+#: forms.py:349
msgid "Planning service"
msgstr "Service instructeur"
-#: forms.py:381
+#: forms.py:383
msgid "Person in charge"
msgstr "Dossier suivi par"
-#: forms.py:393
+#: forms.py:395
msgid "Related file"
msgstr "Dossier lié à"
-#: forms.py:397
+#: forms.py:399
msgid "Comment"
msgstr "Commentaires"
-#: forms.py:404
+#: forms.py:406
msgid "Numeric reference"
msgstr "Référence numérique"
diff --git a/translations/fr/archaeological_finds.po b/translations/fr/archaeological_finds.po
index 5ad26c255..6e39f7374 100644
--- a/translations/fr/archaeological_finds.po
+++ b/translations/fr/archaeological_finds.po
@@ -15,127 +15,127 @@ msgstr ""
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
-#: forms.py:49 forms.py:53 wizards.py:62
+#: forms.py:50 forms.py:54 wizards.py:62
msgid "Context record"
msgstr "Unité d'Enregistrement"
-#: forms.py:82 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747
+#: forms.py:83 ishtar_menu.py:31 models.py:384 models.py:649 models.py:747
#: models.py:891 templates/ishtar/sheet_find.html:5
msgid "Find"
msgstr "Mobilier"
-#: forms.py:93 forms.py:208 forms.py:412 models.py:113 models.py:317
+#: forms.py:94 forms.py:218 forms.py:422 models.py:113 models.py:317
msgid "Free ID"
msgstr "ID libre"
-#: forms.py:95 models.py:365
+#: forms.py:96 models.py:365
msgid "Previous ID"
msgstr "Identifiant précédent"
-#: forms.py:96 forms.py:237 forms.py:577 models.py:117 models.py:318
+#: forms.py:97 forms.py:247 forms.py:588 models.py:117 models.py:318
#: models.py:681
msgid "Description"
msgstr "Description"
-#: forms.py:99 forms.py:239 models.py:128
+#: forms.py:100 forms.py:249 models.py:128
msgid "Batch/object"
msgstr "Lot/objet"
-#: forms.py:101 models.py:346
+#: forms.py:102 models.py:346
msgid "Is complete?"
msgstr "Est complet ?"
-#: forms.py:104 forms.py:228 forms.py:416 models.py:48
+#: forms.py:105 forms.py:238 forms.py:426 models.py:48
msgid "Material type"
msgstr "Type de matériau"
-#: forms.py:105 forms.py:232 models.py:58 models.py:322
+#: forms.py:106 forms.py:242 models.py:58 models.py:322
msgid "Conservatory state"
msgstr "État sanitaire"
-#: forms.py:108 models.py:324
+#: forms.py:109 models.py:324
msgid "Conservatory comment"
msgstr "Commentaire relatif à la conservation"
-#: forms.py:111 models.py:90 models.py:349
+#: forms.py:112 models.py:90 models.py:349
msgid "Object types"
msgstr "Types d'objet"
-#: forms.py:113 forms.py:231 models.py:65
+#: forms.py:114 forms.py:241 models.py:65
msgid "Preservation type"
msgstr "Type de conservation"
-#: forms.py:116 forms.py:234 models.py:351
+#: forms.py:117 forms.py:244 models.py:351
msgid "Integrity"
msgstr "Intégrité"
-#: forms.py:119 forms.py:235 models.py:353
+#: forms.py:120 forms.py:245 models.py:353
msgid "Remarkability"
msgstr "Remarquabilité"
-#: forms.py:121 models.py:355
+#: forms.py:122 models.py:355
msgid "Length (cm)"
msgstr "Longueur (cm)"
-#: forms.py:122 models.py:356
+#: forms.py:123 models.py:356
msgid "Width (cm)"
msgstr "Largeur (cm)"
-#: forms.py:123 models.py:357
+#: forms.py:124 models.py:357
msgid "Height (cm)"
msgstr "Hauteur (cm)"
-#: forms.py:124 models.py:358
+#: forms.py:125 models.py:358
msgid "Diameter (cm)"
msgstr "Diamètre (cm)"
-#: forms.py:125 forms.py:417 models.py:329
+#: forms.py:126 forms.py:427 models.py:329
msgid "Volume (l)"
msgstr "Volume (l)"
-#: forms.py:126 forms.py:418 models.py:330
+#: forms.py:127 forms.py:428 models.py:330
msgid "Weight (g)"
msgstr "Poids (g)"
-#: forms.py:128 models.py:359
+#: forms.py:129 models.py:359
msgid "Dimensions comment"
msgstr "Commentaire concernant les dimensions"
-#: forms.py:129 forms.py:419 models.py:333
+#: forms.py:130 forms.py:429 models.py:333
msgid "Find number"
msgstr "Mobilier (en nombre)"
-#: forms.py:130 models.py:361
+#: forms.py:131 models.py:361
msgid "Mark"
msgstr "Marque"
-#: forms.py:131 forms.py:241 models.py:367
+#: forms.py:132 forms.py:251 models.py:367
msgid "Check"
msgstr "Vérification"
-#: forms.py:133 models.py:369
+#: forms.py:134 models.py:369
msgid "Check date"
msgstr "Date de vérification"
-#: forms.py:134 models.py:118 models.py:362 models.py:682
+#: forms.py:135 models.py:118 models.py:362 models.py:682
msgid "Comment"
msgstr "Commentaires"
-#: forms.py:137 models.py:363
+#: forms.py:138 models.py:363
msgid "Comment on dating"
msgstr "Commentaire général sur les datations"
-#: forms.py:138 models.py:371
+#: forms.py:139 models.py:371
msgid "Estimated value"
msgstr "Valeur estimée"
-#: forms.py:140
+#: forms.py:141
msgid "Image"
msgstr "Image"
-#: forms.py:141
+#: forms.py:142
#, python-format
msgid ""
"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
@@ -144,174 +144,174 @@ msgstr ""
"<p>Les images trop grandes sont retaillées en : %(width)dx%(height)d (le "
"ratio est conservé).</p>"
-#: forms.py:174 forms.py:202 models.py:341
+#: forms.py:181 forms.py:212 models.py:341
msgid "Dating"
msgstr "Datation"
-#: forms.py:179 forms.py:226
+#: forms.py:186 forms.py:236
msgid "Period"
msgstr "Période"
-#: forms.py:180 forms.py:579 models.py:695 models.py:760 models.py:896
+#: forms.py:187 forms.py:590 models.py:695 models.py:760 models.py:896
#: templates/ishtar/sheet_find.html:81 templates/ishtar/sheet_find.html:110
msgid "Start date"
msgstr "Date de début"
-#: forms.py:182 forms.py:581 models.py:696 models.py:761 models.py:897
+#: forms.py:189 forms.py:592 models.py:696 models.py:761 models.py:897
#: templates/ishtar/sheet_find.html:82 templates/ishtar/sheet_find.html:111
msgid "End date"
msgstr "Date de fin"
-#: forms.py:183
+#: forms.py:190
msgid "Quality"
msgstr "Qualité"
-#: forms.py:185
+#: forms.py:192
msgid "Dating type"
msgstr "Type de datation"
-#: forms.py:187
+#: forms.py:194
msgid "Precise dating"
msgstr "Datation précise"
-#: forms.py:206 models.py:136
+#: forms.py:216 models.py:136
msgid "Short ID"
msgstr "ID court"
-#: forms.py:207 models.py:139
+#: forms.py:217 models.py:139
msgid "Complete ID"
msgstr "ID complet"
-#: forms.py:211
+#: forms.py:221
msgid "Year"
msgstr "Année"
-#: forms.py:214
+#: forms.py:224
msgid "Code PATRIARCHE"
msgstr "Code PATRIARCHE"
-#: forms.py:218
+#: forms.py:228
msgid "Archaelogical site"
msgstr "Entité Archéologique"
-#: forms.py:224
+#: forms.py:234
msgid "Search within operation relations"
msgstr "Rechercher parmi les opérations reliées"
-#: forms.py:229 models.py:89
+#: forms.py:239 models.py:89
msgid "Object type"
msgstr "Type d'objet"
-#: forms.py:242
+#: forms.py:252
msgid "Has an image?"
msgstr "Dispose d'une image ?"
-#: forms.py:284 forms.py:297 views.py:120
+#: forms.py:294 forms.py:307 views.py:120
msgid "Find search"
msgstr "Recherche de mobilier"
-#: forms.py:311
+#: forms.py:321
msgid "Upstream finds"
msgstr "Mobilier amont"
-#: forms.py:313 models.py:385
+#: forms.py:323 models.py:385
msgid "Finds"
msgstr "Mobilier"
-#: forms.py:323
+#: forms.py:333
msgid "You should at least select one archaeological find."
msgstr "Vous devez sélectionner au moins un mobilier archéologique."
-#: forms.py:409
+#: forms.py:419
msgid "Resulting find"
msgstr "Mobilier résultant"
-#: forms.py:414
+#: forms.py:424
msgid "Precise description"
msgstr "Description précise"
-#: forms.py:428
+#: forms.py:439
msgid "Resulting finds"
msgstr "Mobiliers résultants"
-#: forms.py:433
+#: forms.py:444
msgid "Would you like to delete this find?"
msgstr "Souhaitez vous supprimer ce mobilier ?"
-#: forms.py:437
+#: forms.py:448
msgid "Upstream find"
msgstr "Mobilier amont"
-#: forms.py:448
+#: forms.py:459
msgid "Archaeological find search"
msgstr "Recherche de mobilier"
-#: forms.py:450
+#: forms.py:461
msgid "You should select an archaeological find."
msgstr "Vous devez sélectionner du mobilier."
-#: forms.py:455
+#: forms.py:466
msgid "Year of the operation"
msgstr "Année de l'opération"
-#: forms.py:457
+#: forms.py:468
msgid "Numeric reference"
msgstr "Référence numérique"
-#: forms.py:464
+#: forms.py:475
msgid "Period of the archaelogical find"
msgstr "Période du mobilier"
-#: forms.py:466
+#: forms.py:477
msgid "Material type of the archaelogical find"
msgstr "Type de matériau du mobilier"
-#: forms.py:468
+#: forms.py:479
msgid "Description of the archaelogical find"
msgstr "Description du mobilier"
-#: forms.py:480
+#: forms.py:491
msgid "Documentation search"
msgstr "Recherche de document"
-#: forms.py:482
+#: forms.py:493
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
-#: forms.py:499
+#: forms.py:510
msgid "Another basket already exist with this name."
msgstr "Un autre panier existe déjà avec ce nom."
-#: forms.py:509 ishtar_menu.py:60
+#: forms.py:520 ishtar_menu.py:60
msgid "Basket"
msgstr "Panier"
-#: forms.py:559
+#: forms.py:570
msgid "Base treatment"
msgstr "Traitement de base"
-#: forms.py:564 models.py:671 models.py:684 models.py:759
+#: forms.py:575 models.py:671 models.py:684 models.py:759
msgid "Treatment type"
msgstr "Type de traitement"
-#: forms.py:566 models.py:693 models.py:764
+#: forms.py:577 models.py:693 models.py:764
#: templates/ishtar/sheet_find.html:79 templates/ishtar/sheet_find.html:108
msgid "Doer"
msgstr "Opérateur"
-#: forms.py:572 models.py:686 models.py:762
+#: forms.py:583 models.py:686 models.py:762
msgid "Location"
msgstr "Lieu"
-#: forms.py:592
+#: forms.py:604
msgid "Leave it blank if you want to select a single item"
msgstr "Ne pas modifier si vous voulez sélectionner un seul élément"
-#: forms.py:599
+#: forms.py:611
msgid "This treatment type is not available."
msgstr "Ce type de traitement n'est pas disponible"
-#: forms.py:603
+#: forms.py:615
msgid "This treatment needs a basket."
msgstr "Ce traitement nécessite de sélectionner un panier."
diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po
index c709c7303..b154cdab2 100644
--- a/translations/fr/archaeological_operations.po
+++ b/translations/fr/archaeological_operations.po
@@ -15,14 +15,14 @@ msgstr ""
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
-#: forms.py:66 forms.py:368 forms.py:952 forms.py:974 forms.py:978
+#: forms.py:67 forms.py:369 forms.py:956 forms.py:978 forms.py:982
#: models.py:815 templates/ishtar/blocks/window_tables/parcels.html:10
msgid "Parcels"
msgstr "Parcelles"
-#: forms.py:69 forms.py:202 forms.py:928 models.py:801
+#: forms.py:70 forms.py:203 forms.py:932 models.py:801
#: templates/ishtar/blocks/window_tables/parcels.html:7
#: templates/ishtar/dashboards/dashboard_operation.html:432
#: templates/ishtar/dashboards/dashboard_operation.html:446
@@ -31,92 +31,92 @@ msgstr "Parcelles"
msgid "Town"
msgstr "Commune"
-#: forms.py:71 forms.py:457 forms.py:731 forms.py:1192 models.py:194
+#: forms.py:72 forms.py:459 forms.py:733 forms.py:1202 models.py:194
#: models.py:618 models.py:799
#: templates/ishtar/blocks/window_tables/parcels.html:8
msgid "Year"
msgstr "Année"
-#: forms.py:74 models.py:802
+#: forms.py:75 models.py:802
#: templates/ishtar/blocks/window_tables/parcels.html:9
msgid "Section"
msgstr "Section"
-#: forms.py:77 models.py:804
+#: forms.py:78 models.py:804
msgid "Parcel number"
msgstr "Numéro de parcelle"
-#: forms.py:79 models.py:806 models.py:823 models.py:872
+#: forms.py:80 models.py:806 models.py:823 models.py:872
msgid "Public domain"
msgstr "Domaine public"
-#: forms.py:123
+#: forms.py:124
msgid "Town section is required."
msgstr "Vous devez renseigner le secteur."
-#: forms.py:167
+#: forms.py:168
msgid "Current parcels"
msgstr "Parcelles actuelles"
-#: forms.py:169
+#: forms.py:170
msgid "Deleted parcels"
msgstr "Parcelles supprimées"
-#: forms.py:205
+#: forms.py:206
msgid "Full text input"
msgstr "Saisie libre"
-#: forms.py:207
+#: forms.py:208
msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""
msgstr "exemple : \"2013: XD:1 à 13,24,33 à 39, YD:24\" ou \"AB:24,AC:42\""
-#: forms.py:362
+#: forms.py:363
msgid "There are identical parcels."
msgstr "Il y a des parcelles identiques."
-#: forms.py:377
+#: forms.py:378
msgid "Relation type"
msgstr "Type de relation"
-#: forms.py:380 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543
+#: forms.py:381 ishtar_menu.py:30 models.py:276 models.py:518 models.py:543
#: models.py:559 models.py:610 models.py:798 wizards.py:338 wizards.py:349
#: templates/ishtar/sheet_operation.html:4
msgid "Operation"
msgstr "Opération"
-#: forms.py:399
+#: forms.py:401
msgid ":"
msgstr ": "
-#: forms.py:407 forms.py:585 forms.py:1157
+#: forms.py:409 forms.py:587 forms.py:1167
msgid "You should select an operation."
msgstr "Vous devez sélectionner une opération."
-#: forms.py:411
+#: forms.py:413
msgid "You should select a relation type."
msgstr "Vous devez sélectionner un type de relation."
-#: forms.py:441
+#: forms.py:443
msgid "Current relations"
msgstr "Relations actuelles"
-#: forms.py:443
+#: forms.py:445
msgid "Deleted relations"
msgstr "Relations supprimées"
-#: forms.py:447 templates/ishtar/sheet_operation.html:114
+#: forms.py:449 templates/ishtar/sheet_operation.html:114
msgid "Relations"
msgstr "Relations"
-#: forms.py:458 forms.py:1163
+#: forms.py:460 forms.py:1173
msgid "Numeric reference"
msgstr "Identifiant numérique"
-#: forms.py:464 forms.py:1203
+#: forms.py:466 forms.py:1213
msgid "Parcel (section/number/public domain)"
msgstr "Parcelle (section/nombre/domaine public)"
-#: forms.py:467 forms.py:1206 models.py:519
+#: forms.py:469 forms.py:1216 models.py:519
#: templates/ishtar/dashboards/dashboard_operation.html:390
#: templates/ishtar/dashboards/dashboard_operation.html:411
#: templates/ishtar/dashboards/dashboard_operation.html:643
@@ -124,219 +124,219 @@ msgstr "Parcelle (section/nombre/domaine public)"
msgid "Department"
msgstr "Département"
-#: forms.py:468 forms.py:1038 models.py:78
+#: forms.py:470 forms.py:1044 models.py:78
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8
msgid "Name"
msgstr "Nom"
-#: forms.py:470 forms.py:652 forms.py:729 forms.py:1169 models.py:202
+#: forms.py:472 forms.py:654 forms.py:731 forms.py:1179 models.py:202
msgid "Operation type"
msgstr "Type d'opération"
-#: forms.py:472
+#: forms.py:474
msgid "Is open?"
msgstr "Est ouvert ?"
-#: forms.py:481 forms.py:758 models.py:191
+#: forms.py:483 forms.py:760 models.py:191
msgid "In charge"
msgstr "Responsable"
-#: forms.py:488 models.py:604
+#: forms.py:490 models.py:604
msgid "Scientist in charge"
msgstr "Responsable scientifique"
-#: forms.py:490 forms.py:654 forms.py:749 models.py:189
+#: forms.py:492 forms.py:656 forms.py:751 models.py:189
msgid "Operator"
msgstr "Opérateur"
-#: forms.py:497 forms.py:1043 models.py:82 models.py:204
+#: forms.py:499 forms.py:1049 models.py:82 models.py:204
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:10
msgid "Remains"
msgstr "Vestiges"
-#: forms.py:498 forms.py:1022 forms.py:1040 models.py:80 models.py:209
+#: forms.py:500 forms.py:1027 forms.py:1046 models.py:80 models.py:209
#: templates/ishtar/blocks/window_tables/archaeologicalsites.html:9
msgid "Periods"
msgstr "Périodes"
-#: forms.py:499
+#: forms.py:501
msgid "Started before"
msgstr "Commencé avant"
-#: forms.py:501
+#: forms.py:503
msgid "Started after"
msgstr "Commencé après"
-#: forms.py:503
+#: forms.py:505
msgid "Ended before"
msgstr "Terminé avant"
-#: forms.py:505
+#: forms.py:507
msgid "Ended after"
msgstr "Terminé après"
-#: forms.py:508
+#: forms.py:510
msgid "Search within relations"
msgstr "Recherche parmi les relations"
-#: forms.py:510 forms.py:797 models.py:255
+#: forms.py:512 forms.py:799 models.py:255
msgid "Comment"
msgstr "Commentaire"
-#: forms.py:511
+#: forms.py:513
msgid "Abstract (full text search)"
msgstr "Résumé (recherche texte intégral)"
-#: forms.py:512 forms.py:799 models.py:267
+#: forms.py:514 forms.py:801 models.py:267
msgid "Record quality"
msgstr "Qualité d'enregistrement"
-#: forms.py:513 forms.py:781 models.py:221
+#: forms.py:515 forms.py:783 models.py:221
msgid "Report processing"
msgstr "Traitement du rapport"
-#: forms.py:515 forms.py:802 models.py:262
+#: forms.py:517 forms.py:804 models.py:262
msgid "Virtual operation"
msgstr "Opération virtuelle"
-#: forms.py:517 forms.py:1083
+#: forms.py:519 forms.py:1093
msgid "Archaelogical site"
msgstr "Entité Archéologique"
-#: forms.py:523 forms.py:1210
+#: forms.py:525 forms.py:1220
msgid "Created by"
msgstr "Créé par"
-#: forms.py:529 forms.py:1216
+#: forms.py:531 forms.py:1226
msgid "Modified by"
msgstr "Modifié par"
-#: forms.py:572 forms.py:1155 views.py:247
+#: forms.py:574 forms.py:1165 views.py:247
msgid "Operation search"
msgstr "Recherche d'opérations"
-#: forms.py:616
+#: forms.py:618
msgid "Associated file"
msgstr "Dossier associé"
-#: forms.py:620 forms.py:876 models.py:615 wizards.py:76
+#: forms.py:622 forms.py:880 models.py:615 wizards.py:76
msgid "Archaelogical file"
msgstr "Dossier"
-#: forms.py:627 forms.py:629 models.py:269
+#: forms.py:629 forms.py:631 models.py:269
msgid "Abstract"
msgstr "Résumé"
-#: forms.py:632
+#: forms.py:634
msgid "months"
msgstr "mois"
-#: forms.py:632
+#: forms.py:634
msgid "years"
msgstr "années"
-#: forms.py:634 models.py:175
+#: forms.py:636 models.py:175
msgid "Creation date"
msgstr "Date de création"
-#: forms.py:635
+#: forms.py:637
msgid "Start of field work"
msgstr "Début du travail de terrain"
-#: forms.py:637
+#: forms.py:639
msgid "All"
msgstr "Tout"
-#: forms.py:638
+#: forms.py:640
msgid "Preventive"
msgstr "Préventif"
-#: forms.py:639
+#: forms.py:641
msgid "Research"
msgstr "Programmé"
-#: forms.py:643
+#: forms.py:645
msgid "Slicing"
msgstr "Découpage"
-#: forms.py:646
+#: forms.py:648
msgid "Department detail"
msgstr "Détail par département"
-#: forms.py:648
+#: forms.py:650
msgid "Date get from"
msgstr "Date obtenue depuis"
-#: forms.py:650
+#: forms.py:652
msgid "Preventive/Research"
msgstr "Préventif/Programmé"
-#: forms.py:656
+#: forms.py:658
msgid "Date after"
msgstr "Date après"
-#: forms.py:658
+#: forms.py:660
msgid "Date before"
msgstr "Date avant"
-#: forms.py:660
+#: forms.py:662
msgid "With reports"
msgstr "Avec un rapport"
-#: forms.py:661
+#: forms.py:663
msgid "With finds"
msgstr "Avec du mobilier"
-#: forms.py:713 forms.py:1264 templates/ishtar/sheet_administrativeact.html:13
+#: forms.py:715 forms.py:1274 templates/ishtar/sheet_administrativeact.html:13
#: templates/ishtar/sheet_operation.html:30
msgid "General"
msgstr "Général"
-#: forms.py:727 models.py:254
+#: forms.py:729 models.py:254
msgid "Generic name"
msgstr "Nom générique"
-#: forms.py:736 models.py:223
+#: forms.py:738 models.py:223
msgid "Old code"
msgstr "Ancien code"
-#: forms.py:739
+#: forms.py:741
msgid "Head scientist"
msgstr "Responsable scientifique"
-#: forms.py:755 models.py:253
+#: forms.py:757 models.py:253
msgid "Operator reference"
msgstr "Référence de l'opérateur"
-#: forms.py:767
+#: forms.py:769
msgid "Total surface (m2)"
msgstr "Surface totale (m2)"
-#: forms.py:774 models.py:50 models.py:178 models.py:988
+#: forms.py:776 models.py:50 models.py:178 models.py:988
msgid "Start date"
msgstr "Date de début"
-#: forms.py:776 models.py:180
+#: forms.py:778 models.py:180
msgid "Excavation end date"
msgstr "Date de fin de chantier"
-#: forms.py:779 models.py:181
+#: forms.py:781 models.py:181
msgid "Report delivery date"
msgstr "Date de livraison du rapport"
-#: forms.py:829
+#: forms.py:833
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:834
+#: forms.py:838
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:862
+#: forms.py:866
#, python-format
msgid ""
"Operation code already exist for year: %(year)d - use a value bigger than "
@@ -345,109 +345,109 @@ msgstr ""
"Ce code d'opération existe déjà pour l'année %(year)d - utilisez une valeur "
"plus grande que %(last_val)d"
-#: forms.py:866
+#: forms.py:870
msgid "Bad operation code"
msgstr "Mauvais code d'opération"
-#: forms.py:872 models.py:195 models.py:405
+#: forms.py:876 models.py:195 models.py:405
msgid "Operation code"
msgstr "Code de l'opération"
-#: forms.py:898
+#: forms.py:902
msgid "Preventive informations - excavation"
msgstr "Information archéologie préventive - fouille"
-#: forms.py:899 models.py:207
+#: forms.py:903 models.py:207
#: templates/ishtar/dashboards/dashboard_operation.html:699
msgid "Cost (euros)"
msgstr "Coût (euros)"
-#: forms.py:900 models.py:212
+#: forms.py:904 models.py:212
msgid "Scheduled man-days"
msgstr "Jours-hommes prévus"
-#: forms.py:902 models.py:215
+#: forms.py:906 models.py:215
msgid "Optional man-days"
msgstr "Jours-hommes optionnels"
-#: forms.py:904 models.py:218
+#: forms.py:908 models.py:218
msgid "Effective man-days"
msgstr "Jours-hommes effectifs"
-#: forms.py:914
+#: forms.py:918
msgid "Preventive informations - diagnostic"
msgstr "Information archéologie préventive - diagnostic"
-#: forms.py:917 models.py:237
+#: forms.py:921 models.py:237
msgid "Prescription on zoning"
msgstr "Prescription sur zonage"
-#: forms.py:919 models.py:240
+#: forms.py:923 models.py:240
msgid "Prescription on large area"
msgstr "Prescription sur une vaste surface"
-#: forms.py:922 models.py:242
+#: forms.py:926 models.py:242
msgid "Prescription on geoarchaeological context"
msgstr "Prescription sur un contexte géoarchéologique"
-#: forms.py:926 forms.py:948 models.py:206 models.py:628
+#: forms.py:930 forms.py:952 models.py:206 models.py:628
msgid "Towns"
msgstr "Communes"
-#: forms.py:955 models.py:814 models.py:986
+#: forms.py:959 models.py:814 models.py:986
msgid "Parcel"
msgstr "Parcelle"
-#: forms.py:1007 models.py:44
+#: forms.py:1011 models.py:44
msgid "Remain types"
msgstr "Types de vestige"
-#: forms.py:1011 models.py:43
+#: forms.py:1015 models.py:43
msgid "Remain type"
msgstr "Type de vestige"
-#: forms.py:1026
+#: forms.py:1031
msgid "Period"
msgstr "Période"
-#: forms.py:1037 models.py:77
+#: forms.py:1043 models.py:77
msgid "Reference"
msgstr "Référence"
-#: forms.py:1062
+#: forms.py:1072
msgid "This reference already exists."
msgstr "Cette référence existe déjà."
-#: forms.py:1079 models.py:86
+#: forms.py:1089 models.py:86
msgid "Archaeological site"
msgstr "Entité archéologique"
-#: forms.py:1094 models.py:87 models.py:259
+#: forms.py:1104 models.py:87 models.py:259
#: templates/ishtar/sheet_operation.html:125
msgid "Archaeological sites"
msgstr "Entités archéologiques"
-#: forms.py:1098
+#: forms.py:1108
msgid "Associated archaelogical sites"
msgstr "Entités archéologiques associées"
-#: forms.py:1104 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
+#: forms.py:1114 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92
msgid "Search"
msgstr "Recherche"
-#: forms.py:1109
+#: forms.py:1119
msgid "Would you like to close this operation?"
msgstr "Voulez-vous clore cette opération ?"
-#: forms.py:1114
+#: forms.py:1124
msgid "Would you like to delete this operation?"
msgstr "Voulez-vous supprimer cette opération ?"
-#: forms.py:1123 forms.py:1193 forms.py:1328 models.py:545 models.py:595
+#: forms.py:1133 forms.py:1203 forms.py:1339 models.py:545 models.py:595
msgid "Index"
msgstr "Index"
-#: forms.py:1149
+#: forms.py:1159
#, python-format
msgid ""
"Index already exists for operation: %(operation)s - use a value bigger than "
@@ -456,48 +456,48 @@ msgstr ""
"Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur "
"plus grande que %(last_val)d"
-#: forms.py:1161
+#: forms.py:1171
msgid "Operation's year"
msgstr "Année de l'opération"
-#: forms.py:1168
+#: forms.py:1178
msgid "Operation's town"
msgstr "Commune de l'opération"
-#: forms.py:1181
+#: forms.py:1191
msgid "Documentation search"
msgstr "Recherche de document"
-#: forms.py:1183
+#: forms.py:1193
msgid "You should select a document."
msgstr "Vous devez sélectionner un document."
-#: forms.py:1200 forms.py:1267 models.py:570 models.py:589
+#: forms.py:1210 forms.py:1277 models.py:570 models.py:589
msgid "Act type"
msgstr "Type d'acte"
-#: forms.py:1201 forms.py:1398
+#: forms.py:1211 forms.py:1409
msgid "Indexed?"
msgstr "Indexé ?"
-#: forms.py:1207 forms.py:1272 models.py:619
+#: forms.py:1217 forms.py:1282 models.py:619
#: templates/ishtar/blocks/window_tables/administrativacts.html:10
msgid "Object"
msgstr "Objet"
-#: forms.py:1244 views.py:403
+#: forms.py:1254 views.py:403
msgid "Administrative act search"
msgstr "Recherche d'actes administratifs"
-#: forms.py:1259 forms.py:1356 forms.py:1423
+#: forms.py:1269 forms.py:1367 forms.py:1434
msgid "You should select an administrative act."
msgstr "Vous devez sélectionner un acte administratif."
-#: forms.py:1275 models.py:616
+#: forms.py:1285 models.py:616
msgid "Signature date"
msgstr "Date de signature"
-#: forms.py:1316
+#: forms.py:1327
#, python-format
msgid ""
"This index already exist for year: %(year)d - use a value bigger than "
@@ -506,31 +506,31 @@ msgstr ""
"Cet index existe déjà pour l'année : %(year)d, utilisez une valeur plus "
"grande que %(last_val)d"
-#: forms.py:1320
+#: forms.py:1331
msgid "Bad index"
msgstr "Mauvais index"
-#: forms.py:1333
+#: forms.py:1344
msgid "Would you like to delete this administrative act?"
msgstr "Voulez-vous supprimer cet acte administratif ?"
-#: forms.py:1338
+#: forms.py:1349
msgid "Template"
msgstr "Patron"
-#: forms.py:1362 forms.py:1366
+#: forms.py:1373 forms.py:1377
msgid "This document is not intended for this type of act."
msgstr "Ce document n'est pas destiné à ce type d'acte."
-#: forms.py:1384
+#: forms.py:1395
msgid "Doc generation"
msgstr "Génération de document"
-#: forms.py:1386
+#: forms.py:1397
msgid "Generate the associated doc?"
msgstr "Générer le document associé ?"
-#: forms.py:1407 ishtar_menu.py:121 views.py:456
+#: forms.py:1418 ishtar_menu.py:121 views.py:456
msgctxt "admin act register"
msgid "Register"
msgstr "Registre"
diff --git a/translations/fr/archaeological_warehouse.po b/translations/fr/archaeological_warehouse.po
index 23dde1c2c..2e7367415 100644
--- a/translations/fr/archaeological_warehouse.po
+++ b/translations/fr/archaeological_warehouse.po
@@ -13,9 +13,9 @@ msgstr ""
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
-#: forms.py:34 forms.py:96 models.py:44 models.py:73
+#: forms.py:34 forms.py:97 models.py:44 models.py:73
msgid "Warehouse"
msgstr "Dépôt"
@@ -31,7 +31,7 @@ msgstr "Type de dépôt"
msgid "Person in charge"
msgstr "Responsable"
-#: forms.py:54 forms.py:101 models.py:41 models.py:77
+#: forms.py:54 forms.py:102 models.py:41 models.py:77
msgid "Comment"
msgstr "Commentaires"
@@ -59,43 +59,43 @@ msgstr "Pays"
msgid "Phone"
msgstr "Téléphone"
-#: forms.py:92 models.py:80
+#: forms.py:93 models.py:80
msgid "Container"
msgstr "Contenant"
-#: forms.py:93 forms.py:127 models.py:63
+#: forms.py:94 forms.py:129 models.py:63
msgid "Ref."
msgstr "Réf."
-#: forms.py:94 forms.py:126 models.py:66 models.py:75
+#: forms.py:95 forms.py:128 models.py:66 models.py:75
msgid "Container type"
msgstr "Type de contenant"
-#: forms.py:137
+#: forms.py:139
msgid "Container search"
msgstr "Recherche de contenant"
-#: forms.py:139
+#: forms.py:141
msgid "You should select a container."
msgstr "Vous devez sélectionner un contenant."
-#: forms.py:140
+#: forms.py:142
msgid "Add a new container"
msgstr "Ajouter un nouveau contenant."
-#: forms.py:144 ishtar_menu.py:33 views.py:94
+#: forms.py:146 ishtar_menu.py:33 views.py:94
msgid "Packaging"
msgstr "Conditionnement"
-#: forms.py:151
+#: forms.py:153
msgid "Packager"
msgstr "Personne assurant le conditionnement"
-#: forms.py:157
+#: forms.py:159
msgid "Date"
msgstr "Date"
-#: forms.py:166
+#: forms.py:168
msgid "Packaged finds"
msgstr "Mobilier conditionné"
diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po
index cc510c51c..090b141d0 100644
--- a/translations/fr/ishtar_common.po
+++ b/translations/fr/ishtar_common.po
@@ -10,12 +10,12 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Transfer-Encoding: 8bit\n"
"Content-Type: text/plain; charset=UTF-8\n"
-"PO-Revision-Date: 2016-08-29 11:39-0400\n"
+"PO-Revision-Date: 2016-09-02 03:42-0400\n"
"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"
"Language-Team: \n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=n>1;\n"
-"X-Generator: Zanata 3.9.3\n"
+"X-Generator: Zanata 3.9.5\n"
#: __init__.py:8
msgid "username"
@@ -33,7 +33,7 @@ msgstr "Élément associé"
msgid "Archaeological file"
msgstr "Dossier"
-#: context_processors.py:39 models.py:1457
+#: context_processors.py:39 models.py:1486
msgid "Operation"
msgstr "Opération"
@@ -161,7 +161,7 @@ msgstr "\"%(value)s\" n'est pas dans %(values)s"
msgid "Enter a valid name consisting of letters, spaces and hyphens."
msgstr "Entrez un nom correct composé de lettres, espaces et tirets."
-#: forms.py:71 forms_common.py:490
+#: forms.py:71 forms_common.py:499
msgid "Confirm"
msgstr "Confirmer"
@@ -185,18 +185,18 @@ msgstr "Vous devez sélectionner un élément."
msgid "Add a new item"
msgstr "Ajouter un nouvel élément"
-#: forms.py:204 models.py:1234
+#: forms.py:235 models.py:1255
msgid "Template"
msgstr "Patron"
-#: forms_common.py:39 forms_common.py:57 forms_common.py:170
-#: forms_common.py:293 models.py:1300 models.py:2583
+#: forms_common.py:40 forms_common.py:58 forms_common.py:171
+#: forms_common.py:296 models.py:1321 models.py:2618
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
msgstr "Commune"
-#: forms_common.py:41
+#: forms_common.py:42
msgid ""
"<p>Type name, department code and/or postal code of the town you would like "
"to select. The search is insensitive to case.</p>\n"
@@ -214,70 +214,70 @@ 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:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455
-#: models.py:2255 models.py:2407 models.py:2464
+#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484
+#: models.py:2295 models.py:2442 models.py:2499
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr "Personne"
-#: forms_common.py:158 forms_common.py:234 forms_common.py:336
-#: ishtar_menu.py:71 models.py:1456 models.py:2172
+#: forms_common.py:159 forms_common.py:236 forms_common.py:341
+#: ishtar_menu.py:71 models.py:1485 models.py:2202
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr "Organisation"
-#: forms_common.py:161 forms_common.py:197 forms_common.py:229
-#: forms_common.py:263 forms_common.py:331 models.py:902 models.py:1233
-#: models.py:1501 models.py:1719 models.py:2166 models.py:2242 models.py:2569
+#: forms_common.py:162 forms_common.py:199 forms_common.py:231
+#: forms_common.py:266 forms_common.py:336 models.py:923 models.py:1254
+#: models.py:1530 models.py:1748 models.py:2196 models.py:2281 models.py:2604
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr "Nom"
-#: forms_common.py:162 models.py:1442 models.py:1850
+#: forms_common.py:163 models.py:1471 models.py:1879
msgid "Organization type"
msgstr "Type d'organisation"
-#: forms_common.py:164 forms_common.py:287 models.py:1295
+#: forms_common.py:165 forms_common.py:290 models.py:1316
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr "Adresse"
-#: forms_common.py:166 forms_common.py:290 models.py:1296
+#: forms_common.py:167 forms_common.py:293 models.py:1317
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr "Complément d'adresse"
-#: forms_common.py:168 forms_common.py:291 models.py:1298
+#: forms_common.py:169 forms_common.py:294 models.py:1319
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr "Code postal"
-#: forms_common.py:171 forms_common.py:294 models.py:1301
+#: forms_common.py:172 forms_common.py:297 models.py:1322
msgid "Country"
msgstr "Pays"
-#: forms_common.py:173 forms_common.py:231 forms_common.py:267
-#: forms_common.py:333 forms_common.py:446 models.py:1328
+#: forms_common.py:174 forms_common.py:233 forms_common.py:270
+#: forms_common.py:338 forms_common.py:453 models.py:1349
msgid "Email"
msgstr "Courriel"
-#: forms_common.py:174 forms_common.py:270 models.py:1313
+#: forms_common.py:175 forms_common.py:273 models.py:1334
#: templates/ishtar/sheet_organization.html:14
#: templates/ishtar/sheet_person.html:18
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr "Téléphone"
-#: forms_common.py:175 forms_common.py:279 models.py:1325
+#: forms_common.py:176 forms_common.py:282 models.py:1346
#: templates/ishtar/sheet_organization.html:15
#: templates/ishtar/sheet_person.html:36
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr "Téléphone portable"
-#: forms_common.py:198 forms_common.py:232 forms_common.py:334 models.py:1877
-#: models.py:2168 models.py:2505 templates/sheet_ope.html:85
+#: forms_common.py:200 forms_common.py:234 forms_common.py:339 models.py:1907
+#: models.py:2198 models.py:2540 templates/sheet_ope.html:85
#: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126
#: templates/ishtar/import_list.html:13
#: templates/ishtar/sheet_organization.html:23
@@ -285,210 +285,210 @@ msgstr "Téléphone portable"
msgid "Type"
msgstr "Type"
-#: forms_common.py:207 views.py:130
+#: forms_common.py:209 views.py:130
msgid "Organization search"
msgstr "Recherche d'organisations"
-#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240
+#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr "Prénom"
-#: forms_common.py:246 forms_common.py:319 views.py:95
+#: forms_common.py:248 forms_common.py:324 views.py:95
msgid "Person search"
msgstr "Recherche de personnes"
-#: forms_common.py:258 templates/ishtar/sheet_person.html:7
+#: forms_common.py:260 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr "Identité"
-#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238
-#: models.py:2502 templates/sheet_ope.html:104
+#: forms_common.py:263 forms_common.py:653 forms_common.py:695 models.py:1880
+#: models.py:2275 models.py:2277 models.py:2537 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr "Titre"
-#: forms_common.py:265 models.py:2244
+#: forms_common.py:268 models.py:2283
msgid "Raw name"
msgstr "Nom brut"
-#: forms_common.py:268 models.py:1314
+#: forms_common.py:271 models.py:1335
msgid "Phone description"
msgstr "Type de téléphone"
-#: forms_common.py:271 models.py:1316 models.py:1318
+#: forms_common.py:274 models.py:1337 models.py:1339
msgid "Phone description 2"
msgstr "Type de téléphone 2"
-#: forms_common.py:273
+#: forms_common.py:276
msgid "Phone 2"
msgstr "Téléphone 2"
-#: forms_common.py:275 models.py:1322
+#: forms_common.py:278 models.py:1343
msgid "Phone description 3"
msgstr "Type de téléphone 3"
-#: forms_common.py:277 models.py:1320
+#: forms_common.py:280 models.py:1341
msgid "Phone 3"
msgstr "Téléphone 3"
-#: forms_common.py:282
+#: forms_common.py:285
msgid "Current organization"
msgstr "Organisation actuelle"
-#: forms_common.py:296 models.py:1303
+#: forms_common.py:299 models.py:1324
msgid "Other address: address"
msgstr "Autre adresse : adresse"
-#: forms_common.py:299 models.py:1306
+#: forms_common.py:302 models.py:1327
msgid "Other address: address complement"
msgstr "Autre adresse : complément d'adresse"
-#: forms_common.py:301 models.py:1307
+#: forms_common.py:304 models.py:1328
msgid "Other address: postal code"
msgstr "Autre adresse : code postal"
-#: forms_common.py:303 models.py:1309
+#: forms_common.py:306 models.py:1330
msgid "Other address: town"
msgstr "Autre adresse : ville"
-#: forms_common.py:305 models.py:1311
+#: forms_common.py:308 models.py:1332
msgid "Other address: country"
msgstr "Autre adresse : pays"
-#: forms_common.py:315
+#: forms_common.py:320
msgid "Already has an account"
msgstr "As déjà un compte"
-#: forms_common.py:330
+#: forms_common.py:335
msgid "Username"
msgstr "Nom d'utilisateur"
-#: forms_common.py:348
+#: forms_common.py:353
msgid "Account search"
msgstr "Recherche de comptes"
-#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220
+#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250
msgid "Person type"
msgstr "Type de personne"
-#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32
+#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32
msgid "Account"
msgstr "Compte"
-#: forms_common.py:449 wizards.py:1170
+#: forms_common.py:456 wizards.py:1170
msgid "New password"
msgstr "Nouveau mot de passe"
-#: forms_common.py:452
+#: forms_common.py:459
msgid "New password (confirmation)"
msgstr "Nouveau mot de passe (confirmation)"
-#: forms_common.py:471
+#: forms_common.py:480
msgid "Your password and confirmation password do not match."
msgstr "La vérification du mot de passe a échoué."
-#: forms_common.py:476
+#: forms_common.py:485
msgid "You must provide a correct password."
msgstr "Vous devez fournir un mot de passe correct."
-#: forms_common.py:484
+#: forms_common.py:493
msgid "This username already exists."
msgstr "Ce nom d'utilisateur existe déjà."
-#: forms_common.py:491
+#: forms_common.py:500
msgid "Send the new password by email?"
msgstr "Envoyer le nouveau mot de passe par courriel ?"
-#: forms_common.py:500 forms_common.py:513 models.py:2584
+#: forms_common.py:509 forms_common.py:522 models.py:2619
msgid "Towns"
msgstr "Communes"
-#: forms_common.py:510
+#: forms_common.py:519
msgid "There are identical towns."
msgstr "Il y a des communes identiques."
-#: forms_common.py:594
+#: forms_common.py:603
msgid "Only one choice can be checked."
msgstr "Seul un choix peut être coché."
-#: forms_common.py:642
+#: forms_common.py:651
msgid "Documentation informations"
msgstr "Information sur le document"
-#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485
+#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520
msgid "Source type"
msgstr "Type de document"
-#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84
+#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84
msgid "Reference"
msgstr "Référence"
-#: forms_common.py:651 forms_common.py:688
+#: forms_common.py:660 forms_common.py:698
msgid "Internal reference"
msgstr "Référence interne"
-#: forms_common.py:654 models.py:2516
+#: forms_common.py:663 models.py:2551
msgid "Numerical ressource (web address)"
msgstr "Ressource numérique (adresse web)"
-#: forms_common.py:655 models.py:2518
+#: forms_common.py:664 models.py:2553
msgid "Receipt date"
msgstr "Date de réception"
-#: forms_common.py:657 models.py:2004 models.py:2520
+#: forms_common.py:666 models.py:2034 models.py:2555
msgid "Creation date"
msgstr "Date de création"
-#: forms_common.py:660 models.py:2523
+#: forms_common.py:669 models.py:2558
msgid "Receipt date in documentation"
msgstr "Date de réception en documentation"
-#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516
-#: models.py:1746 models.py:2248 models.py:2530
+#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537
+#: models.py:1775 models.py:2287 models.py:2565
msgid "Comment"
msgstr "Commentaire"
-#: forms_common.py:664 forms_common.py:689 models.py:904 models.py:1505
-#: models.py:1678 models.py:1720 models.py:2529 templates/sheet_ope.html:128
+#: forms_common.py:673 forms_common.py:699 models.py:925 models.py:1534
+#: models.py:1707 models.py:1749 models.py:2564 templates/sheet_ope.html:128
msgid "Description"
msgstr "Description"
-#: forms_common.py:667 models.py:2531
+#: forms_common.py:676 models.py:2566
msgid "Additional information"
msgstr "Informations supplémentaires"
-#: forms_common.py:669 forms_common.py:693 models.py:2533
+#: forms_common.py:678 forms_common.py:703 models.py:2568
msgid "Has a duplicate"
msgstr "Existe en doublon"
-#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469
+#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr "Auteur"
-#: forms_common.py:692
+#: forms_common.py:702
msgid "Additional informations"
msgstr "Informations complémentaires"
-#: forms_common.py:703
+#: forms_common.py:713
msgid "Would you like to delete this documentation?"
msgstr "Voulez-vous supprimer ce document ?"
-#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466
+#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501
msgid "Author type"
msgstr "Type d'auteur"
-#: forms_common.py:737
+#: forms_common.py:748
msgid "Author selection"
msgstr "Sélection d'auteur"
-#: forms_common.py:751
+#: forms_common.py:762
msgid "There are identical authors."
msgstr "Il y a des auteurs identiques."
-#: forms_common.py:755 models.py:2470 models.py:2512
+#: forms_common.py:766 models.py:2505 models.py:2547
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -506,7 +506,7 @@ msgstr "Ajouter/Modifier"
msgid "Deletion"
msgstr "Suppression"
-#: ishtar_menu.py:39 models.py:1029 views.py:1232
+#: ishtar_menu.py:39 models.py:1050 views.py:1232
msgid "Global variables"
msgstr "Variables globales"
@@ -530,12 +530,12 @@ msgstr "Modification"
msgid "Merge"
msgstr "Fusion"
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr "Suppression"
-#: ishtar_menu.py:101 models.py:2015
+#: ishtar_menu.py:101 models.py:2045
msgid "Imports"
msgstr "Imports"
@@ -563,7 +563,7 @@ msgstr "Un élément sélectionné n'est pas valide."
msgid "This item already exists."
msgstr "Cet élément existe déjà."
-#: models.py:283 models.py:515 models.py:1268 models.py:1280
+#: models.py:283 models.py:536 models.py:1289 models.py:1301
msgid "Label"
msgstr "Libellé"
@@ -571,83 +571,83 @@ msgstr "Libellé"
msgid "Textual ID"
msgstr "Identifiant textuel"
-#: models.py:288 models.py:518 models.py:1237
+#: models.py:288 models.py:539 models.py:1258
msgid "Available"
msgstr "Disponible"
-#: models.py:537 models.py:1792
+#: models.py:558 models.py:1821
msgid "Key"
msgstr "Clé"
-#: models.py:543
+#: models.py:564
msgid "Specific key to an import"
msgstr "Clé spécifique à un import"
-#: models.py:623
+#: models.py:644
msgid "Last editor"
msgstr "Dernier éditeur"
-#: models.py:626
+#: models.py:647
msgid "Creator"
msgstr "Créateur"
-#: models.py:766 models.py:2595
+#: models.py:787 models.py:2630
msgid "Order"
msgstr "Ordre"
-#: models.py:767
+#: models.py:788
msgid "Symmetrical"
msgstr "Symétrique"
-#: models.py:768
+#: models.py:789
msgid "Tiny label"
msgstr "Petit libellé"
-#: models.py:782
+#: models.py:803
msgid "Cannot have symmetrical and an inverse_relation"
msgstr "Ne peut pas être symétrique et avoir une relation inverse"
-#: models.py:896
+#: models.py:917
msgid "Euro"
msgstr "Euro"
-#: models.py:897
+#: models.py:918
msgid "US dollar"
msgstr "Dollars US"
-#: models.py:903 models.py:1503
+#: models.py:924 models.py:1532
msgid "Slug"
msgstr "Identifiant texte"
-#: models.py:905
+#: models.py:926
msgid "Files module"
msgstr "Module Dossiers"
-#: models.py:906
+#: models.py:927
msgid "Context records module"
msgstr "Module Unités d'Enregistrement"
-#: models.py:908
+#: models.py:929
msgid "Finds module"
msgstr "Module Mobilier"
-#: models.py:909
+#: models.py:930
msgid "Need context records module"
msgstr "Nécessite le module Unités d'Enregistrement"
-#: models.py:911
+#: models.py:932
msgid "Warehouses module"
msgstr "Module Dépôts"
-#: models.py:912
+#: models.py:933
msgid "Need finds module"
msgstr "Nécessite le module mobilier"
-#: models.py:914
+#: models.py:935
msgid "Home page"
msgstr "Page d'accueil"
-#: models.py:915
+#: models.py:936
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax."
@@ -655,22 +655,22 @@ msgstr ""
"Page d'accueil d'Ishtar. Si elle n'est pas définie une page d'accueil par "
"défaut va apparaître. Utiliser la syntaxe Markdown."
-#: models.py:918
+#: models.py:939
msgid "File external id"
msgstr "Identifiant externe de fichier"
-#: models.py:920
+#: models.py:941
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 "Formule pour gérer les identifiants externes"
-#: models.py:925
+#: models.py:946
msgid "Parcel external id"
msgstr "Identifiant externe de parcelle"
-#: models.py:928
+#: models.py:949
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 "
@@ -680,11 +680,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:933
+#: models.py:954
msgid "Context record external id"
msgstr "Identifiant externe d'unité d'enregistrement"
-#: models.py:935
+#: models.py:956
msgid ""
"Formula to manage context record external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -694,11 +694,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:940
+#: models.py:961
msgid "Base find external id"
msgstr "Identifiant externe de mobilier de base"
-#: models.py:942
+#: models.py:963
msgid ""
"Formula to manage base find external ID. Change this with care. With "
"incorrect formula, the application might be unusable and import of external "
@@ -708,11 +708,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:947
+#: models.py:968
msgid "Find external id"
msgstr "Identifiant externe de mobilier"
-#: models.py:949
+#: models.py:970
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 "
@@ -722,11 +722,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:954
+#: models.py:975
msgid "Raw name for person"
msgstr "Nom brut pour une personne"
-#: models.py:956
+#: models.py:977
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 "
@@ -736,43 +736,43 @@ msgstr ""
"Une formule incorrecte peut rendre l'application inutilisable et l'import de "
"données externes peut alors être destructif."
-#: models.py:960
+#: models.py:981
msgid "Current active"
msgstr "Actuellement utilisé"
-#: models.py:961
+#: models.py:982
msgid "Currency"
msgstr "Devise"
-#: models.py:965
+#: models.py:986
msgid "Ishtar site profile"
msgstr "Profil d'instance Ishtar"
-#: models.py:966
+#: models.py:987
msgid "Ishtar site profiles"
msgstr "Profils d'instance Ishtar"
-#: models.py:1022
+#: models.py:1043
msgid "Variable name"
msgstr "Nom de la variable"
-#: models.py:1023
+#: models.py:1044
msgid "Description of the variable"
msgstr "Description de la variable"
-#: models.py:1025 models.py:1793
+#: models.py:1046 models.py:1822
msgid "Value"
msgstr "Valeur"
-#: models.py:1028
+#: models.py:1049
msgid "Global variable"
msgstr "Variable globale"
-#: models.py:1138 models.py:1168
+#: models.py:1159 models.py:1189
msgid "Total"
msgstr "Total"
-#: models.py:1145 models.py:1269 models.py:1281
+#: models.py:1166 models.py:1290 models.py:1302
#: templates/ishtar/sheet_person.html:21
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
@@ -780,583 +780,591 @@ msgstr "Total"
msgid "Number"
msgstr "Nombre"
-#: models.py:1232
+#: models.py:1253
msgid "Administrative Act"
msgstr "Acte administratif"
-#: models.py:1236
+#: models.py:1257
msgid "Associated object"
msgstr "Objet associé"
-#: models.py:1240
+#: models.py:1261
msgid "Document template"
msgstr "Patron de document"
-#: models.py:1241
+#: models.py:1262
msgid "Document templates"
msgstr "Patrons de documents"
-#: models.py:1272 models.py:1282 models.py:1999
+#: models.py:1293 models.py:1303 models.py:2029
msgid "State"
msgstr "État"
-#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr "Département"
-#: models.py:1287
+#: models.py:1308
msgid "Departments"
msgstr "Départements"
-#: models.py:1324
+#: models.py:1345
msgid "Raw phone"
msgstr "Téléphone brut"
-#: models.py:1330
+#: models.py:1351
msgid "Alternative address is prefered"
msgstr "L'adresse alternative est préférée"
-#: models.py:1369
+#: models.py:1390
msgid "Tel: "
msgstr "Tél :"
-#: models.py:1373
+#: models.py:1394
msgid "Mobile: "
msgstr "Mobile :"
-#: models.py:1377
+#: models.py:1398
msgid "Email: "
msgstr "Courriel :"
-#: models.py:1382
+#: models.py:1403
msgid "Merge key"
msgstr "Clé de fusion"
-#: models.py:1443
+#: models.py:1472
msgid "Organization types"
msgstr "Types d'organisation"
-#: models.py:1459
+#: models.py:1488
msgid "Archaeological site"
msgstr "Entité Archéologique"
-#: models.py:1460
+#: models.py:1489
msgid "Parcels"
msgstr "Parcelles"
-#: models.py:1462
+#: models.py:1491
msgid "Operation source"
msgstr "Documentation de l'opération"
-#: models.py:1465 views.py:1057 views.py:1108
+#: models.py:1494 views.py:1057 views.py:1108
msgid "Archaeological files"
msgstr "Dossiers archéologiques"
-#: models.py:1467 views.py:1060 views.py:1116
+#: models.py:1496 views.py:1060 views.py:1116
msgid "Context records"
msgstr "Unités d'Enregistrement"
-#: models.py:1469
+#: models.py:1498
msgid "Context record relations"
msgstr "Relations entre Unités d'Enregistrement"
-#: models.py:1471 views.py:1062 views.py:1119
+#: models.py:1500 views.py:1062 views.py:1119
msgid "Finds"
msgstr "Mobilier"
-#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr "Utilisateurs"
-#: models.py:1509
+#: models.py:1538
msgid "Associated model"
msgstr "Modèle associé"
-#: models.py:1512
+#: models.py:1541
msgid "Is template"
msgstr "Est un patron"
-#: models.py:1513
+#: models.py:1542
msgid "Unicity keys (separator \";\")"
msgstr "Clés d'unicité (séparateur « ; »)"
-#: models.py:1517
+#: models.py:1546
msgid "Importer - Type"
msgstr "Importeur - Type"
-#: models.py:1518
+#: models.py:1547
msgid "Importer - Types"
msgstr "Importeur - Types"
-#: models.py:1608
+#: models.py:1637
msgid "Importer - Default"
msgstr "Importeur - Par défaut"
-#: models.py:1609
+#: models.py:1638
msgid "Importer - Defaults"
msgstr "Importeur - Par défaut"
-#: models.py:1644
+#: models.py:1673
msgid "Importer - Default value"
msgstr "Importeur - Valeur par défaut"
-#: models.py:1645
+#: models.py:1674
msgid "Importer - Default values"
msgstr "Importeur - Valeurs par défaut"
-#: models.py:1677
+#: models.py:1706
msgid "Column number"
msgstr "Numéro de colonne"
-#: models.py:1680
+#: models.py:1709
msgid "Required"
msgstr "Requis"
-#: models.py:1683
+#: models.py:1712
msgid "Importer - Column"
msgstr "Importeur - Colonne"
-#: models.py:1684
+#: models.py:1713
msgid "Importer - Columns"
msgstr "Importeur - Colonnes"
-#: models.py:1704
+#: models.py:1733
msgid "Field name"
msgstr "Nom du champ"
-#: models.py:1706 models.py:1740
+#: models.py:1735 models.py:1769
msgid "Force creation of new items"
msgstr "Forcer la création de nouveaux éléments"
-#: models.py:1708 models.py:1742
+#: models.py:1737 models.py:1771
msgid "Concatenate with existing"
msgstr "Concaténer avec l'existant"
-#: models.py:1710 models.py:1744
+#: models.py:1739 models.py:1773
msgid "Concatenate character"
msgstr "Caractère de concaténation"
-#: models.py:1714
+#: models.py:1743
msgid "Importer - Duplicate field"
msgstr "Importeur - Champ dupliqué"
-#: models.py:1715
+#: models.py:1744
msgid "Importer - Duplicate fields"
msgstr "Importeur - Champs dupliqués"
-#: models.py:1722
+#: models.py:1751
msgid "Regular expression"
msgstr "Expression régulière"
-#: models.py:1725
+#: models.py:1754
msgid "Importer - Regular expression"
msgstr "Importeur - Expression régulière"
-#: models.py:1726
+#: models.py:1755
msgid "Importer - Regular expressions"
msgstr "Importeur - Expressions régulières"
-#: models.py:1749
+#: models.py:1778
msgid "Importer - Target"
msgstr "Importeur - Cible"
-#: models.py:1750
+#: models.py:1779
msgid "Importer - Targets"
msgstr "Importeur - Cibles"
-#: models.py:1774 views.py:343
+#: models.py:1803 views.py:343
msgid "True"
msgstr "Oui"
-#: models.py:1775 views.py:345
+#: models.py:1804 views.py:345
msgid "False"
msgstr "Non"
-#: models.py:1794
+#: models.py:1823
msgid "Is set"
msgstr "Est défini"
-#: models.py:1801
+#: models.py:1830
msgid "Importer - Target key"
msgstr "Importeur - Rapprochement"
-#: models.py:1802
+#: models.py:1831
msgid "Importer - Targets keys"
msgstr "Importeur - Rapprochements"
-#: models.py:1853 models.py:2497 models.py:2508
+#: models.py:1883 models.py:2532 models.py:2543
msgid "Format"
msgstr "Format"
-#: models.py:1854 models.py:2599
+#: models.py:1884 models.py:2634
msgid "Operation type"
msgstr "Type d'opération"
-#: models.py:1855
+#: models.py:1885
msgid "Period"
msgstr "Périodes"
-#: models.py:1856
+#: models.py:1886
msgid "Report state"
msgstr "État de rapport"
-#: models.py:1857
+#: models.py:1887
msgid "Unit"
msgstr "Unité"
-#: models.py:1858
+#: models.py:1888
msgid "Material"
msgstr "Matériau"
-#: models.py:1860
+#: models.py:1890
msgid "Conservatory state"
msgstr "État de conservation"
-#: models.py:1861
+#: models.py:1891
msgid "Preservation type"
msgstr "Type de conservation"
-#: models.py:1862
+#: models.py:1892
msgid "Object type"
msgstr "Type d'objet"
-#: models.py:1864
+#: models.py:1894
msgid "Identification type"
msgstr "Type d'identification"
-#: models.py:1866
+#: models.py:1896
msgid "Context record relation type"
msgstr "Type de relations entre Unités d'Enregistrement"
-#: models.py:1867 models.py:2491
+#: models.py:1897 models.py:2526
msgid "Support type"
msgstr "Type de support"
-#: models.py:1873
+#: models.py:1903
msgid "Integer"
msgstr "Entier"
-#: models.py:1874
+#: models.py:1904
msgid "Float"
msgstr "Nombre à virgule"
-#: models.py:1875
+#: models.py:1905
msgid "String"
msgstr "Chaîne de caractères"
-#: models.py:1876 templates/sheet_ope.html:86
+#: models.py:1906 templates/sheet_ope.html:86
msgid "Date"
msgstr "Date"
-#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1908 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:1879
+#: models.py:1909
msgid "String to boolean"
msgstr "Chaîne de caractères vers booléen"
-#: models.py:1880
+#: models.py:1910
msgctxt "filesystem"
msgid "File"
msgstr "Fichier"
-#: models.py:1881
+#: models.py:1911
msgid "Unknow type"
msgstr "Type inconnu"
-#: models.py:1897
+#: models.py:1927
msgid "4 digit year. e.g.: \"2015\""
msgstr "Année sur 4 chiffres. Exemple : « 2015 »"
-#: models.py:1898
+#: models.py:1928
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:1899
+#: models.py:1929
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:1909
+#: models.py:1939
msgid "Options"
msgstr "Options"
-#: models.py:1911
+#: models.py:1941
msgid "Split character(s)"
msgstr "Caractère(s) de séparation"
-#: models.py:1915
+#: models.py:1945
msgid "Importer - Formater type"
msgstr "Importeur - Type de mise en forme"
-#: models.py:1916
+#: models.py:1946
msgid "Importer - Formater types"
msgstr "Importeur - Types de mise en forme"
-#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr "Créé"
-#: models.py:1964
+#: models.py:1994
msgid "Analyse in progress"
msgstr "Analyse en cours"
-#: models.py:1965
+#: models.py:1995
msgid "Analysed"
msgstr "Analysé"
-#: models.py:1966
+#: models.py:1996
msgid "Import pending"
msgstr "Import en attente"
-#: models.py:1967
+#: models.py:1997
msgid "Import in progress"
msgstr "Import en cours"
-#: models.py:1968
+#: models.py:1998
msgid "Finished with errors"
msgstr "Terminé avec des erreurs"
-#: models.py:1969
+#: models.py:1999
msgid "Finished"
msgstr "Terminé"
-#: models.py:1970
+#: models.py:2000
msgid "Archived"
msgstr "Archivé"
-#: models.py:1982
+#: models.py:2012
msgid "Imported file"
msgstr "Fichier importé"
-#: models.py:1985
+#: models.py:2015
msgid "Associated images (zip file)"
msgstr "Images associées (fichier zip)"
-#: models.py:1987
+#: models.py:2017
msgid "Encoding"
msgstr "Codage"
-#: models.py:1989
+#: models.py:2019
msgid "Skip lines"
msgstr "Nombre de lignes d'entête"
-#: models.py:1990 templates/ishtar/import_list.html:47
+#: models.py:2020 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr "Fichier erreur"
-#: models.py:1993
+#: models.py:2023
msgid "Result file"
msgstr "Fichier résultant"
-#: models.py:1996 templates/ishtar/import_list.html:53
+#: models.py:2026 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr "Fichier de correspondance"
-#: models.py:2002
+#: models.py:2032
msgid "Conservative import"
msgstr "Import conservateur"
-#: models.py:2007
+#: models.py:2037
msgid "End date"
msgstr "Date de fin"
-#: models.py:2009
+#: models.py:2039
msgid "Remaining seconds"
msgstr "Secondes restantes"
-#: models.py:2014
+#: models.py:2044
msgid "Import"
msgstr "Import"
-#: models.py:2031
+#: models.py:2061
msgid "Analyse"
msgstr "Analyser"
-#: models.py:2033 models.py:2036
+#: models.py:2063 models.py:2066
msgid "Re-analyse"
msgstr "Analyser de nouveau "
-#: models.py:2034
+#: models.py:2064
msgid "Launch import"
msgstr "Lancer l'import"
-#: models.py:2037
+#: models.py:2067
msgid "Re-import"
msgstr "Ré-importer"
-#: models.py:2038
+#: models.py:2068
msgid "Archive"
msgstr "Archiver"
-#: models.py:2040
+#: models.py:2070
msgid "Unarchive"
msgstr "Désarchiver"
-#: models.py:2173
+#: models.py:2203
msgid "Organizations"
msgstr "Organisations"
-#: models.py:2175
+#: models.py:2205
msgid "Can view all Organizations"
msgstr "Peut voir toutes les Organisations"
-#: models.py:2176
+#: models.py:2206
msgid "Can view own Organization"
msgstr "Peut voir sa propre Organisation"
-#: models.py:2177
+#: models.py:2207
msgid "Can add own Organization"
msgstr "Peut ajouter sa propre Organisation"
-#: models.py:2179
+#: models.py:2209
msgid "Can change own Organization"
msgstr "Peut modifier sa propre Organisation"
-#: models.py:2181
+#: models.py:2211
msgid "Can delete own Organization"
msgstr "Peut supprimer sa propre Organisation"
-#: models.py:2216
+#: models.py:2246
msgid "Groups"
msgstr "Groupes"
-#: models.py:2221
+#: models.py:2251
msgid "Person types"
msgstr "Types de personne"
-#: models.py:2228
+#: models.py:2257
+msgid "Title type"
+msgstr "Type de titre"
+
+#: models.py:2258
+msgid "Title types"
+msgstr "Types de titre"
+
+#: models.py:2265
msgid "Mr"
msgstr "M."
-#: models.py:2229
+#: models.py:2266
msgid "Miss"
msgstr "Mlle"
-#: models.py:2230
+#: models.py:2267
msgid "Mr and Mrs"
msgstr "M. et Mme"
-#: models.py:2231
+#: models.py:2268
msgid "Mrs"
msgstr "Mme"
-#: models.py:2232
+#: models.py:2269
msgid "Doctor"
msgstr "Dr."
-#: models.py:2246
+#: models.py:2285
msgid "Contact type"
msgstr "Type de contact"
-#: models.py:2249 models.py:2296
+#: models.py:2288 models.py:2331
msgid "Types"
msgstr "Types"
-#: models.py:2252
+#: models.py:2291
msgid "Is attached to"
msgstr "Est rattaché à"
-#: models.py:2256
+#: models.py:2296
msgid "Persons"
msgstr "Personnes"
-#: models.py:2258
+#: models.py:2298
msgid "Can view all Persons"
msgstr "Peut voir toutes les Personnes"
-#: models.py:2259
+#: models.py:2299
msgid "Can view own Person"
msgstr "Peut voir sa propre Personne"
-#: models.py:2260
+#: models.py:2300
msgid "Can add own Person"
msgstr "Peut ajouter sa propre Personne"
-#: models.py:2261
+#: models.py:2301
msgid "Can change own Person"
msgstr "Peut modifier sa propre Personne"
-#: models.py:2262
+#: models.py:2302
msgid "Can delete own Person"
msgstr "Peut supprimer sa propre Personne"
-#: models.py:2411
+#: models.py:2446
msgid "Ishtar user"
msgstr "Utilisateur d'Ishtar"
-#: models.py:2412
+#: models.py:2447
msgid "Ishtar users"
msgstr "Utilisateurs d'Ishtar"
-#: models.py:2454
+#: models.py:2489
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:2460
+#: models.py:2495
msgid "Author types"
msgstr "Types d'auteur"
-#: models.py:2486
+#: models.py:2521
msgid "Source types"
msgstr "Types de document"
-#: models.py:2492
+#: models.py:2527
msgid "Support types"
msgstr "Types de support"
-#: models.py:2498
+#: models.py:2533
msgid "Formats"
msgstr "Formats"
-#: models.py:2503
+#: models.py:2538
msgid "External ID"
msgstr "Identifiant externe"
-#: models.py:2506
+#: models.py:2541
msgid "Support"
msgstr "Support"
-#: models.py:2510
+#: models.py:2545
msgid "Scale"
msgstr "Échelle"
-#: models.py:2524
+#: models.py:2559
msgid "Item number"
msgstr "Numéro d'élément"
-#: models.py:2525
+#: models.py:2560
msgid "Ref."
msgstr "Réf."
-#: models.py:2528
+#: models.py:2563
msgid "Internal ref."
msgstr "Réf. interne"
-#: models.py:2570
+#: models.py:2605
msgid "Surface (m2)"
msgstr "Surface (m2)"
-#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr "Localisation"
-#: models.py:2596
+#: models.py:2631
msgid "Is preventive"
msgstr "Est du préventif"
-#: models.py:2600
+#: models.py:2635
msgid "Operation types"
msgstr "Types d'opération"
-#: models.py:2626
+#: models.py:2661
msgid "Preventive"
msgstr "Préventif"
-#: models.py:2627
+#: models.py:2662
msgid "Research"
msgstr "Programmé"
@@ -2030,6 +2038,14 @@ msgstr "Personnes au sein de l'organisation"
msgid "No person in this organization"
msgstr "Pas de personne au sein de cette organisation"
+#: templates/ishtar/sheet_organization.html:38
+msgid "General contractor organization of archaelogical files"
+msgstr "Aménageur (organisation) pour les dossiers archéologiques"
+
+#: templates/ishtar/sheet_organization.html:43
+msgid "Town planning service of archaelogical files"
+msgstr "Service instructeur pour les dossiers archéologiques"
+
#: templates/ishtar/sheet_person.html:20
#: templates/ishtar/wizard/wizard_person.html:19
msgid "Phone type"
@@ -2057,19 +2073,27 @@ msgstr "Opérations associées en tant que responsable scientifique"
msgid "Associated operations as responsible"
msgstr "Opérations associées en tant que responsable"
-#: templates/ishtar/sheet_person.html:80
-msgid "Associated archaelogical files"
-msgstr "Dossiers archéologiques associés"
+#: templates/ishtar/sheet_person.html:79
+msgid "In charge of archaelogical files"
+msgstr "Responsable des dossiers archéologiques"
+
+#: templates/ishtar/sheet_person.html:84
+msgid "General contractor of archaelogical files"
+msgstr "Aménageur des dossiers archéologiques"
+
+#: templates/ishtar/sheet_person.html:89
+msgid "Responsible for town planning service of archaelogical files"
+msgstr "Responsable au service instructeur des dossiers"
-#: templates/ishtar/sheet_person.html:86
+#: templates/ishtar/sheet_person.html:95
msgid "Documents associated to operations"
msgstr "Documents des opérations associées"
-#: templates/ishtar/sheet_person.html:91
+#: templates/ishtar/sheet_person.html:100
msgid "Documents associated to context records"
msgstr "Documents des Unités d'Enregistrement associées"
-#: templates/ishtar/sheet_person.html:96
+#: templates/ishtar/sheet_person.html:105
msgid "Documents associated to finds"
msgstr "Documents du mobilier associé"
diff --git a/version.py b/version.py
index 9f846e91f..0f4077755 100644
--- a/version.py
+++ b/version.py
@@ -1,4 +1,4 @@
-VERSION = (0, 97, 3)
+VERSION = (0, 97, 4)
def get_version():