summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms_common.py21
-rw-r--r--ishtar_common/locale/django.pot652
-rw-r--r--ishtar_common/migrations/0014_auto__add_field_historicalperson_salutation__add_field_person_salutati.py471
-rw-r--r--ishtar_common/models.py20
-rw-r--r--ishtar_common/templates/ishtar/sheet_person.html1
5 files changed, 839 insertions, 326 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 2788283db..560a1abb3 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -261,6 +261,8 @@ class SimplePersonForm(ManageOldType, NewItemForm):
associated_models = {'attached_to': models.Organization,
'title': models.TitleType}
title = forms.ChoiceField(label=_("Title"), choices=[])
+ salutation = forms.CharField(label=_("Salutation"), max_length=200,
+ required=False)
surname = forms.CharField(label=_(u"Surname"), max_length=50,
validators=[name_validator])
name = forms.CharField(label=_(u"Name"), max_length=200,
@@ -363,14 +365,14 @@ class AccountFormSelection(forms.Form):
class BasePersonForm(forms.ModelForm):
class Meta:
model = models.Person
- fields = ['title', 'name', 'surname', 'address', 'address_complement',
- 'town', 'postal_code']
+ fields = ['title', 'salutation', 'name', 'surname', 'address',
+ 'address_complement', 'town', 'postal_code']
class BaseOrganizationPersonForm(forms.ModelForm):
class Meta:
model = models.Person
- fields = ['attached_to', 'title', 'name', 'surname']
+ fields = ['attached_to', 'title', 'salutation', 'name', 'surname']
widgets = {'attached_to': widgets.JQueryPersonOrganization(
reverse_lazy('autocomplete-organization'),
reverse_lazy('organization_create'),
@@ -412,8 +414,17 @@ class PersonForm(SimplePersonForm):
dct = self.cleaned_data
dct['history_modifier'] = user
if 'attached_to' in dct and dct['attached_to']:
- dct['attached_to'] = models.Organization.objects.get(
- pk=dct['attached_to'])
+ try:
+ dct['attached_to'] = models.Organization.objects.get(
+ pk=dct['attached_to'])
+ except models.Organization.DoesNotExist:
+ dct.pop('attached_to')
+ if 'title' in dct and dct['title']:
+ try:
+ dct['title'] = models.TitleType.objects.get(
+ pk=dct['title'])
+ except models.TitleType.DoesNotExist:
+ dct.pop('title')
person_types = dct.pop('person_types')
new_item = models.Person.objects.create(**dct)
for pt in person_types:
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index a8a0a8682..aaae0cf76 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:1486
+#: context_processors.py:39 models.py:1512
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:499
+#: forms.py:71 forms_common.py:510
msgid "Confirm"
msgstr ""
@@ -171,12 +171,12 @@ msgstr ""
msgid "Add a new item"
msgstr ""
-#: forms.py:235 models.py:1255
+#: forms.py:245 models.py:1276
msgid "Template"
msgstr ""
#: forms_common.py:40 forms_common.py:58 forms_common.py:171
-#: forms_common.py:296 models.py:1321 models.py:2618
+#: forms_common.py:298 models.py:1342 models.py:2655
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -192,70 +192,70 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:67 forms_common.py:728 ishtar_menu.py:47 models.py:1484
-#: models.py:2295 models.py:2442 models.py:2499
+#: forms_common.py:67 forms_common.py:747 ishtar_menu.py:47 models.py:1510
+#: models.py:2324 models.py:2478 models.py:2535
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
-#: forms_common.py:159 forms_common.py:236 forms_common.py:341
-#: ishtar_menu.py:71 models.py:1485 models.py:2202
+#: forms_common.py:159 forms_common.py:236 forms_common.py:343
+#: ishtar_menu.py:71 models.py:1511 models.py:2229
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
#: 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
+#: forms_common.py:268 forms_common.py:338 models.py:943 models.py:1275
+#: models.py:1556 models.py:1774 models.py:2223 models.py:2310 models.py:2641
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:163 models.py:1471 models.py:1879
+#: forms_common.py:163 models.py:1497 models.py:1905
msgid "Organization type"
msgstr ""
-#: forms_common.py:165 forms_common.py:290 models.py:1316
+#: forms_common.py:165 forms_common.py:292 models.py:1337
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:167 forms_common.py:293 models.py:1317
+#: forms_common.py:167 forms_common.py:295 models.py:1338
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:169 forms_common.py:294 models.py:1319
+#: forms_common.py:169 forms_common.py:296 models.py:1340
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:172 forms_common.py:297 models.py:1322
+#: forms_common.py:172 forms_common.py:299 models.py:1343
msgid "Country"
msgstr ""
-#: forms_common.py:174 forms_common.py:233 forms_common.py:270
-#: forms_common.py:338 forms_common.py:453 models.py:1349
+#: forms_common.py:174 forms_common.py:233 forms_common.py:272
+#: forms_common.py:340 forms_common.py:464 models.py:1370
msgid "Email"
msgstr ""
-#: forms_common.py:175 forms_common.py:273 models.py:1334
+#: forms_common.py:175 forms_common.py:275 models.py:1355
#: templates/ishtar/sheet_organization.html:14
-#: templates/ishtar/sheet_person.html:18
+#: templates/ishtar/sheet_person.html:19
#: templates/ishtar/wizard/wizard_person.html:17
msgid "Phone"
msgstr ""
-#: forms_common.py:176 forms_common.py:282 models.py:1346
+#: forms_common.py:176 forms_common.py:284 models.py:1367
#: templates/ishtar/sheet_organization.html:15
-#: templates/ishtar/sheet_person.html:36
+#: templates/ishtar/sheet_person.html:37
#: templates/ishtar/wizard/wizard_person.html:35
msgid "Mobile phone"
msgstr ""
-#: 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
+#: forms_common.py:200 forms_common.py:234 forms_common.py:341 models.py:1933
+#: models.py:2225 models.py:2576 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,16 +263,16 @@ msgstr ""
msgid "Type"
msgstr ""
-#: forms_common.py:209 views.py:130
+#: forms_common.py:209 views.py:137
msgid "Organization search"
msgstr ""
-#: forms_common.py:232 forms_common.py:264 forms_common.py:337 models.py:2279
+#: forms_common.py:232 forms_common.py:266 forms_common.py:339 models.py:2308
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:248 forms_common.py:324 views.py:95
+#: forms_common.py:248 forms_common.py:326 views.py:102
msgid "Person search"
msgstr ""
@@ -281,192 +281,207 @@ msgstr ""
msgid "Identity"
msgstr ""
-#: 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
+#: forms_common.py:263 forms_common.py:665 forms_common.py:714 models.py:1906
+#: models.py:2302 models.py:2304 models.py:2573 templates/sheet_ope.html:104
#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:268 models.py:2283
+#: forms_common.py:264 models.py:2306
+msgid "Salutation"
+msgstr ""
+
+#: forms_common.py:270 models.py:2312
msgid "Raw name"
msgstr ""
-#: forms_common.py:271 models.py:1335
+#: forms_common.py:273 models.py:1356
msgid "Phone description"
msgstr ""
-#: forms_common.py:274 models.py:1337 models.py:1339
+#: forms_common.py:276 models.py:1358 models.py:1360
msgid "Phone description 2"
msgstr ""
-#: forms_common.py:276
+#: forms_common.py:278
msgid "Phone 2"
msgstr ""
-#: forms_common.py:278 models.py:1343
+#: forms_common.py:280 models.py:1364
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:280 models.py:1341
+#: forms_common.py:282 models.py:1362
msgid "Phone 3"
msgstr ""
-#: forms_common.py:285
+#: forms_common.py:287
msgid "Current organization"
msgstr ""
-#: forms_common.py:299 models.py:1324
+#: forms_common.py:301 models.py:1345
msgid "Other address: address"
msgstr ""
-#: forms_common.py:302 models.py:1327
+#: forms_common.py:304 models.py:1348
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:304 models.py:1328
+#: forms_common.py:306 models.py:1349
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:306 models.py:1330
+#: forms_common.py:308 models.py:1351
msgid "Other address: town"
msgstr ""
-#: forms_common.py:308 models.py:1332
+#: forms_common.py:310 models.py:1353
msgid "Other address: country"
msgstr ""
-#: forms_common.py:320
+#: forms_common.py:322
msgid "Already has an account"
msgstr ""
-#: forms_common.py:335
+#: forms_common.py:337
msgid "Username"
msgstr ""
-#: forms_common.py:353
+#: forms_common.py:355
msgid "Account search"
msgstr ""
-#: forms_common.py:400 forms_common.py:431 forms_common.py:435 models.py:2250
+#: forms_common.py:402 forms_common.py:442 forms_common.py:446 models.py:2277
msgid "Person type"
msgstr ""
-#: forms_common.py:447 forms_common.py:452 ishtar_menu.py:32
+#: forms_common.py:458 forms_common.py:463 ishtar_menu.py:32
msgid "Account"
msgstr ""
-#: forms_common.py:456 wizards.py:1170
+#: forms_common.py:467 wizards.py:1172
msgid "New password"
msgstr ""
-#: forms_common.py:459
+#: forms_common.py:470
msgid "New password (confirmation)"
msgstr ""
-#: forms_common.py:480
+#: forms_common.py:491
msgid "Your password and confirmation password do not match."
msgstr ""
-#: forms_common.py:485
+#: forms_common.py:496
msgid "You must provide a correct password."
msgstr ""
-#: forms_common.py:493
+#: forms_common.py:504
msgid "This username already exists."
msgstr ""
-#: forms_common.py:500
+#: forms_common.py:511
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:509 forms_common.py:522 models.py:2619
+#: forms_common.py:520 forms_common.py:533 models.py:2656
msgid "Towns"
msgstr ""
-#: forms_common.py:519
+#: forms_common.py:530
msgid "There are identical towns."
msgstr ""
-#: forms_common.py:603
+#: forms_common.py:614
msgid "Only one choice can be checked."
msgstr ""
-#: forms_common.py:651
+#: forms_common.py:662
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:655 forms_common.py:696 models.py:1881 models.py:2520
+#: forms_common.py:667 forms_common.py:715 models.py:1907 models.py:2556
msgid "Source type"
msgstr ""
-#: forms_common.py:657 forms_common.py:697 templates/sheet_ope.html:84
+#: forms_common.py:669 forms_common.py:716 templates/sheet_ope.html:84
msgid "Reference"
msgstr ""
-#: forms_common.py:660 forms_common.py:698
+#: forms_common.py:672 forms_common.py:717
msgid "Internal reference"
msgstr ""
-#: forms_common.py:663 models.py:2551
+#: forms_common.py:675 models.py:2587
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:664 models.py:2553
+#: forms_common.py:676 models.py:2589
msgid "Receipt date"
msgstr ""
-#: forms_common.py:666 models.py:2034 models.py:2555
+#: forms_common.py:678 models.py:2060 models.py:2591
msgid "Creation date"
msgstr ""
-#: forms_common.py:669 models.py:2558
+#: forms_common.py:681 models.py:2594
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:671 forms_common.py:700 models.py:287 models.py:537
-#: models.py:1775 models.py:2287 models.py:2565
+#: forms_common.py:683 forms_common.py:719 models.py:287 models.py:546
+#: models.py:1801 models.py:2316 models.py:2601
msgid "Comment"
msgstr ""
-#: 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
+#: forms_common.py:685 forms_common.py:718 models.py:945 models.py:1560
+#: models.py:1733 models.py:1775 models.py:2600 templates/sheet_ope.html:128
msgid "Description"
msgstr ""
-#: forms_common.py:676 models.py:2566
+#: forms_common.py:688 models.py:2602
msgid "Additional information"
msgstr ""
-#: forms_common.py:678 forms_common.py:703 models.py:2568
+#: forms_common.py:690 forms_common.py:722 models.py:2604
msgid "Has a duplicate"
msgstr ""
-#: forms_common.py:692 forms_common.py:721 forms_common.py:755 models.py:2504
+#: forms_common.py:693
+msgid "Image"
+msgstr ""
+
+#: forms_common.py:694
+#, python-format
+msgid ""
+"<p>Heavy images are resized to: %(width)dx%(height)d (ratio is preserved).</"
+"p>"
+msgstr ""
+
+#: forms_common.py:711 forms_common.py:740 forms_common.py:774 models.py:2540
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
-#: forms_common.py:702
+#: forms_common.py:721
msgid "Additional informations"
msgstr ""
-#: forms_common.py:713
+#: forms_common.py:732
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:729 models.py:1882 models.py:2494 models.py:2501
+#: forms_common.py:748 models.py:1908 models.py:2530 models.py:2537
msgid "Author type"
msgstr ""
-#: forms_common.py:748
+#: forms_common.py:767
msgid "Author selection"
msgstr ""
-#: forms_common.py:762
+#: forms_common.py:781
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:766 models.py:2505 models.py:2547
+#: forms_common.py:785 models.py:2541 models.py:2583
#: templates/sheet_ope.html:106
#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
@@ -484,7 +499,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1050 views.py:1232
+#: ishtar_menu.py:39 models.py:1071 views.py:1239
msgid "Global variables"
msgstr ""
@@ -508,20 +523,20 @@ msgstr ""
msgid "Merge"
msgstr ""
-#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2071 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2097 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr ""
-#: ishtar_menu.py:101 models.py:2045
+#: ishtar_menu.py:101 models.py:2071
msgid "Imports"
msgstr ""
-#: ishtar_menu.py:104 views.py:1240
+#: ishtar_menu.py:104 views.py:1247
msgid "New import"
msgstr ""
-#: ishtar_menu.py:108 views.py:1254
+#: ishtar_menu.py:108 views.py:1261
msgid "Current imports"
msgstr ""
@@ -541,7 +556,7 @@ msgstr ""
msgid "This item already exists."
msgstr ""
-#: models.py:283 models.py:536 models.py:1289 models.py:1301
+#: models.py:283 models.py:545 models.py:1310 models.py:1322
msgid "Label"
msgstr ""
@@ -549,842 +564,847 @@ msgstr ""
msgid "Textual ID"
msgstr ""
-#: models.py:288 models.py:539 models.py:1258
+#: models.py:288 models.py:548 models.py:1279
msgid "Available"
msgstr ""
-#: models.py:558 models.py:1821
+#: models.py:567 models.py:1847
msgid "Key"
msgstr ""
-#: models.py:564
+#: models.py:573
msgid "Specific key to an import"
msgstr ""
-#: models.py:644
+#: models.py:664
msgid "Last editor"
msgstr ""
-#: models.py:647
+#: models.py:667
msgid "Creator"
msgstr ""
-#: models.py:787 models.py:2630
+#: models.py:807 models.py:2667
msgid "Order"
msgstr ""
-#: models.py:788
+#: models.py:808
msgid "Symmetrical"
msgstr ""
-#: models.py:789
+#: models.py:809
msgid "Tiny label"
msgstr ""
-#: models.py:803
+#: models.py:823
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:917
+#: models.py:937
msgid "Euro"
msgstr ""
-#: models.py:918
+#: models.py:938
msgid "US dollar"
msgstr ""
-#: models.py:924 models.py:1532
+#: models.py:944 models.py:1558
msgid "Slug"
msgstr ""
-#: models.py:926
+#: models.py:946
msgid "Files module"
msgstr ""
-#: models.py:927
+#: models.py:947
msgid "Context records module"
msgstr ""
-#: models.py:929
+#: models.py:949
msgid "Finds module"
msgstr ""
-#: models.py:930
+#: models.py:950
msgid "Need context records module"
msgstr ""
-#: models.py:932
+#: models.py:952
msgid "Warehouses module"
msgstr ""
-#: models.py:933
+#: models.py:953
msgid "Need finds module"
msgstr ""
-#: models.py:935
+#: models.py:955
msgid "Home page"
msgstr ""
-#: models.py:936
+#: models.py:956
+#, python-brace-format
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
-"markdown syntax."
+"markdown syntax. {random_image} can be used to display a random image."
msgstr ""
-#: models.py:939
+#: models.py:960
msgid "File external id"
msgstr ""
-#: models.py:941
+#: models.py:962
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:946
+#: models.py:967
msgid "Parcel external id"
msgstr ""
-#: models.py:949
+#: models.py:970
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:954
+#: models.py:975
msgid "Context record external id"
msgstr ""
-#: models.py:956
+#: models.py:977
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:961
+#: models.py:982
msgid "Base find external id"
msgstr ""
-#: models.py:963
+#: models.py:984
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:968
+#: models.py:989
msgid "Find external id"
msgstr ""
-#: models.py:970
+#: models.py:991
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:975
+#: models.py:996
msgid "Raw name for person"
msgstr ""
-#: models.py:977
+#: models.py:998
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:981
+#: models.py:1002
msgid "Current active"
msgstr ""
-#: models.py:982
+#: models.py:1003
msgid "Currency"
msgstr ""
-#: models.py:986
+#: models.py:1007
msgid "Ishtar site profile"
msgstr ""
-#: models.py:987
+#: models.py:1008
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:1043
+#: models.py:1064
msgid "Variable name"
msgstr ""
-#: models.py:1044
+#: models.py:1065
msgid "Description of the variable"
msgstr ""
-#: models.py:1046 models.py:1822
+#: models.py:1067 models.py:1848
msgid "Value"
msgstr ""
-#: models.py:1049
+#: models.py:1070
msgid "Global variable"
msgstr ""
-#: models.py:1159 models.py:1189
+#: models.py:1180 models.py:1210
msgid "Total"
msgstr ""
-#: models.py:1166 models.py:1290 models.py:1302
-#: templates/ishtar/sheet_person.html:21
+#: models.py:1187 models.py:1311 models.py:1323
+#: templates/ishtar/sheet_person.html:22
#: templates/ishtar/dashboards/dashboard_main_detail.html:141
#: templates/ishtar/dashboards/dashboard_main_detail_users.html:26
#: templates/ishtar/wizard/wizard_person.html:20
msgid "Number"
msgstr ""
-#: models.py:1253
+#: models.py:1274
msgid "Administrative Act"
msgstr ""
-#: models.py:1257
+#: models.py:1278
msgid "Associated object"
msgstr ""
-#: models.py:1261
+#: models.py:1282
msgid "Document template"
msgstr ""
-#: models.py:1262
+#: models.py:1283
msgid "Document templates"
msgstr ""
-#: models.py:1293 models.py:1303 models.py:2029
+#: models.py:1314 models.py:1324 models.py:2055
msgid "State"
msgstr ""
-#: models.py:1307 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1328 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1308
+#: models.py:1329
msgid "Departments"
msgstr ""
-#: models.py:1345
+#: models.py:1366
msgid "Raw phone"
msgstr ""
-#: models.py:1351
+#: models.py:1372
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1390
+#: models.py:1411
msgid "Tel: "
msgstr ""
-#: models.py:1394
+#: models.py:1415
msgid "Mobile: "
msgstr ""
-#: models.py:1398
+#: models.py:1419
msgid "Email: "
msgstr ""
-#: models.py:1403
+#: models.py:1424
msgid "Merge key"
msgstr ""
-#: models.py:1472
+#: models.py:1498
msgid "Organization types"
msgstr ""
-#: models.py:1488
+#: models.py:1514
msgid "Archaeological site"
msgstr ""
-#: models.py:1489
+#: models.py:1515
msgid "Parcels"
msgstr ""
-#: models.py:1491
+#: models.py:1517
msgid "Operation source"
msgstr ""
-#: models.py:1494 views.py:1057 views.py:1108
+#: models.py:1520 views.py:1064 views.py:1115
msgid "Archaeological files"
msgstr ""
-#: models.py:1496 views.py:1060 views.py:1116
+#: models.py:1522 views.py:1067 views.py:1123
msgid "Context records"
msgstr ""
-#: models.py:1498
+#: models.py:1524
msgid "Context record relations"
msgstr ""
-#: models.py:1500 views.py:1062 views.py:1119
+#: models.py:1526 views.py:1069 views.py:1126
msgid "Finds"
msgstr ""
-#: models.py:1536 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1562 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1538
+#: models.py:1564
msgid "Associated model"
msgstr ""
-#: models.py:1541
+#: models.py:1567
msgid "Is template"
msgstr ""
-#: models.py:1542
+#: models.py:1568
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1546
+#: models.py:1572
msgid "Importer - Type"
msgstr ""
-#: models.py:1547
+#: models.py:1573
msgid "Importer - Types"
msgstr ""
-#: models.py:1637
+#: models.py:1663
msgid "Importer - Default"
msgstr ""
-#: models.py:1638
+#: models.py:1664
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1673
+#: models.py:1699
msgid "Importer - Default value"
msgstr ""
-#: models.py:1674
+#: models.py:1700
msgid "Importer - Default values"
msgstr ""
-#: models.py:1706
+#: models.py:1732
msgid "Column number"
msgstr ""
-#: models.py:1709
+#: models.py:1735
msgid "Required"
msgstr ""
-#: models.py:1712
+#: models.py:1738
msgid "Importer - Column"
msgstr ""
-#: models.py:1713
+#: models.py:1739
msgid "Importer - Columns"
msgstr ""
-#: models.py:1733
+#: models.py:1759
msgid "Field name"
msgstr ""
-#: models.py:1735 models.py:1769
+#: models.py:1761 models.py:1795
msgid "Force creation of new items"
msgstr ""
-#: models.py:1737 models.py:1771
+#: models.py:1763 models.py:1797
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1739 models.py:1773
+#: models.py:1765 models.py:1799
msgid "Concatenate character"
msgstr ""
-#: models.py:1743
+#: models.py:1769
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1744
+#: models.py:1770
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1751
+#: models.py:1777
msgid "Regular expression"
msgstr ""
-#: models.py:1754
+#: models.py:1780
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1755
+#: models.py:1781
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1778
+#: models.py:1804
msgid "Importer - Target"
msgstr ""
-#: models.py:1779
+#: models.py:1805
msgid "Importer - Targets"
msgstr ""
-#: models.py:1803 views.py:343
+#: models.py:1829 views.py:350
msgid "True"
msgstr ""
-#: models.py:1804 views.py:345
+#: models.py:1830 views.py:352
msgid "False"
msgstr ""
-#: models.py:1823
+#: models.py:1849
msgid "Is set"
msgstr ""
-#: models.py:1830
+#: models.py:1856
msgid "Importer - Target key"
msgstr ""
-#: models.py:1831
+#: models.py:1857
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1883 models.py:2532 models.py:2543
+#: models.py:1909 models.py:2568 models.py:2579
msgid "Format"
msgstr ""
-#: models.py:1884 models.py:2634
+#: models.py:1910 models.py:2671
msgid "Operation type"
msgstr ""
-#: models.py:1885
+#: models.py:1911
msgid "Period"
msgstr ""
-#: models.py:1886
+#: models.py:1912
msgid "Report state"
msgstr ""
-#: models.py:1887
+#: models.py:1913
msgid "Unit"
msgstr ""
-#: models.py:1888
+#: models.py:1914
msgid "Material"
msgstr ""
-#: models.py:1890
+#: models.py:1916
msgid "Conservatory state"
msgstr ""
-#: models.py:1891
+#: models.py:1917
msgid "Preservation type"
msgstr ""
-#: models.py:1892
+#: models.py:1918
msgid "Object type"
msgstr ""
-#: models.py:1894
+#: models.py:1920
msgid "Identification type"
msgstr ""
-#: models.py:1896
+#: models.py:1922
msgid "Context record relation type"
msgstr ""
-#: models.py:1897 models.py:2526
+#: models.py:1923 models.py:2562
msgid "Support type"
msgstr ""
-#: models.py:1903
+#: models.py:1929
msgid "Integer"
msgstr ""
-#: models.py:1904
+#: models.py:1930
msgid "Float"
msgstr ""
-#: models.py:1905
+#: models.py:1931
msgid "String"
msgstr ""
-#: models.py:1906 templates/sheet_ope.html:86
+#: models.py:1932 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1908 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: models.py:1934 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1909
+#: models.py:1935
msgid "String to boolean"
msgstr ""
-#: models.py:1910
+#: models.py:1936
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1911
+#: models.py:1937
msgid "Unknow type"
msgstr ""
-#: models.py:1927
+#: models.py:1953
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1928
+#: models.py:1954
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1929
+#: models.py:1955
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:1939
+#: models.py:1965
msgid "Options"
msgstr ""
-#: models.py:1941
+#: models.py:1967
msgid "Split character(s)"
msgstr ""
-#: models.py:1945
+#: models.py:1971
msgid "Importer - Formater type"
msgstr ""
-#: models.py:1946
+#: models.py:1972
msgid "Importer - Formater types"
msgstr ""
-#: models.py:1993 templates/ishtar/dashboards/dashboard_main_detail.html:63
+#: models.py:2019 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:1994
+#: models.py:2020
msgid "Analyse in progress"
msgstr ""
-#: models.py:1995
+#: models.py:2021
msgid "Analysed"
msgstr ""
-#: models.py:1996
+#: models.py:2022
msgid "Import pending"
msgstr ""
-#: models.py:1997
+#: models.py:2023
msgid "Import in progress"
msgstr ""
-#: models.py:1998
+#: models.py:2024
msgid "Finished with errors"
msgstr ""
-#: models.py:1999
+#: models.py:2025
msgid "Finished"
msgstr ""
-#: models.py:2000
+#: models.py:2026
msgid "Archived"
msgstr ""
-#: models.py:2012
+#: models.py:2038
msgid "Imported file"
msgstr ""
-#: models.py:2015
+#: models.py:2041
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:2017
+#: models.py:2043
msgid "Encoding"
msgstr ""
-#: models.py:2019
+#: models.py:2045
msgid "Skip lines"
msgstr ""
-#: models.py:2020 templates/ishtar/import_list.html:47
+#: models.py:2046 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:2023
+#: models.py:2049
msgid "Result file"
msgstr ""
-#: models.py:2026 templates/ishtar/import_list.html:53
+#: models.py:2052 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:2032
+#: models.py:2058
msgid "Conservative import"
msgstr ""
-#: models.py:2037
+#: models.py:2063
msgid "End date"
msgstr ""
-#: models.py:2039
+#: models.py:2065
msgid "Remaining seconds"
msgstr ""
-#: models.py:2044
+#: models.py:2070
msgid "Import"
msgstr ""
-#: models.py:2061
+#: models.py:2087
msgid "Analyse"
msgstr ""
-#: models.py:2063 models.py:2066
+#: models.py:2089 models.py:2092
msgid "Re-analyse"
msgstr ""
-#: models.py:2064
+#: models.py:2090
msgid "Launch import"
msgstr ""
-#: models.py:2067
+#: models.py:2093
msgid "Re-import"
msgstr ""
-#: models.py:2068
+#: models.py:2094
msgid "Archive"
msgstr ""
-#: models.py:2070
+#: models.py:2096
msgid "Unarchive"
msgstr ""
-#: models.py:2203
+#: models.py:2230
msgid "Organizations"
msgstr ""
-#: models.py:2205
+#: models.py:2232
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2206
+#: models.py:2233
msgid "Can view own Organization"
msgstr ""
-#: models.py:2207
+#: models.py:2234
msgid "Can add own Organization"
msgstr ""
-#: models.py:2209
+#: models.py:2236
msgid "Can change own Organization"
msgstr ""
-#: models.py:2211
+#: models.py:2238
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2246
+#: models.py:2273
msgid "Groups"
msgstr ""
-#: models.py:2251
+#: models.py:2278
msgid "Person types"
msgstr ""
-#: models.py:2257
+#: models.py:2284
msgid "Title type"
msgstr ""
-#: models.py:2258
+#: models.py:2285
msgid "Title types"
msgstr ""
-#: models.py:2265
+#: models.py:2292
msgid "Mr"
msgstr ""
-#: models.py:2266
+#: models.py:2293
msgid "Miss"
msgstr ""
-#: models.py:2267
+#: models.py:2294
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2268
+#: models.py:2295
msgid "Mrs"
msgstr ""
-#: models.py:2269
+#: models.py:2296
msgid "Doctor"
msgstr ""
-#: models.py:2285
+#: models.py:2314
msgid "Contact type"
msgstr ""
-#: models.py:2288 models.py:2331
+#: models.py:2317 models.py:2366
msgid "Types"
msgstr ""
-#: models.py:2291
+#: models.py:2320
msgid "Is attached to"
msgstr ""
-#: models.py:2296
+#: models.py:2325
msgid "Persons"
msgstr ""
-#: models.py:2298
+#: models.py:2327
msgid "Can view all Persons"
msgstr ""
-#: models.py:2299
+#: models.py:2328
msgid "Can view own Person"
msgstr ""
-#: models.py:2300
+#: models.py:2329
msgid "Can add own Person"
msgstr ""
-#: models.py:2301
+#: models.py:2330
msgid "Can change own Person"
msgstr ""
-#: models.py:2302
+#: models.py:2331
msgid "Can delete own Person"
msgstr ""
-#: models.py:2446
+#: models.py:2482
msgid "Ishtar user"
msgstr ""
-#: models.py:2447
+#: models.py:2483
msgid "Ishtar users"
msgstr ""
-#: models.py:2489
+#: models.py:2525
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2495
+#: models.py:2531
msgid "Author types"
msgstr ""
-#: models.py:2521
+#: models.py:2557
msgid "Source types"
msgstr ""
-#: models.py:2527
+#: models.py:2563
msgid "Support types"
msgstr ""
-#: models.py:2533
+#: models.py:2569
msgid "Formats"
msgstr ""
-#: models.py:2538
+#: models.py:2574
msgid "External ID"
msgstr ""
-#: models.py:2541
+#: models.py:2577
msgid "Support"
msgstr ""
-#: models.py:2545
+#: models.py:2581
msgid "Scale"
msgstr ""
-#: models.py:2559
+#: models.py:2595
msgid "Item number"
msgstr ""
-#: models.py:2560
+#: models.py:2596
msgid "Ref."
msgstr ""
-#: models.py:2563
+#: models.py:2599
msgid "Internal ref."
msgstr ""
-#: models.py:2605
+#: models.py:2642
msgid "Surface (m2)"
msgstr ""
-#: models.py:2606 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2643 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2631
+#: models.py:2668
msgid "Is preventive"
msgstr ""
-#: models.py:2635
+#: models.py:2672
msgid "Operation types"
msgstr ""
-#: models.py:2661
+#: models.py:2701
msgid "Preventive"
msgstr ""
-#: models.py:2662
+#: models.py:2702
msgid "Research"
msgstr ""
-#: utils.py:52
+#: utils.py:56
msgid " (...)"
msgstr ""
-#: views.py:102
+#: utils.py:89
+msgid "Load another random image?"
+msgstr ""
+
+#: views.py:109
msgid "New person"
msgstr ""
-#: views.py:110
+#: views.py:117
msgid "Person modification"
msgstr ""
-#: views.py:125
+#: views.py:132
msgid "Person deletion"
msgstr ""
-#: views.py:136
+#: views.py:143
msgid "New organization"
msgstr ""
-#: views.py:143
+#: views.py:150
msgid "Organization modification"
msgstr ""
-#: views.py:159
+#: views.py:166
msgid "Organization deletion"
msgstr ""
-#: views.py:166
+#: views.py:173
msgid "Account management"
msgstr ""
-#: views.py:172
+#: views.py:179
msgid "Account deletion"
msgstr ""
-#: views.py:970 views.py:1039
+#: views.py:977 views.py:1046
msgid "Operation not permitted."
msgstr ""
-#: views.py:972
+#: views.py:979
#, python-format
msgid "New %s"
msgstr ""
-#: views.py:1058 views.py:1112
+#: views.py:1065 views.py:1119
msgid "Operations"
msgstr ""
-#: views.py:1301 templates/ishtar/import_list.html:43
+#: views.py:1308 templates/ishtar/import_list.html:43
msgid "Link unmatched items"
msgstr ""
-#: views.py:1316
+#: views.py:1323
msgid "Delete import"
msgstr ""
-#: views.py:1375 views.py:1391
+#: views.py:1382 views.py:1398
msgid "Corporation manager"
msgstr ""
@@ -1404,15 +1424,15 @@ msgstr ""
msgid "Remove"
msgstr ""
-#: wizards.py:321 templates/ishtar/import_delete.html:20
+#: wizards.py:323 templates/ishtar/import_delete.html:20
msgid "Yes"
msgstr ""
-#: wizards.py:323
+#: wizards.py:325
msgid "No"
msgstr ""
-#: wizards.py:1227
+#: wizards.py:1229
#, python-format
msgid "[%(app_name)s] Account creation/modification"
msgstr ""
@@ -1473,9 +1493,9 @@ msgstr ""
msgid "Lang"
msgstr ""
-#: templates/base.html:46 templates/base.html.py:93 templates/welcome.html:7
-#: templates/welcome.html.py:8 templates/welcome.html:9
-#: templates/welcome.html.py:10 templates/ishtar/manage_basket.html:4
+#: templates/base.html:46 templates/base.html.py:93 templates/welcome.html:8
+#: templates/welcome.html.py:9 templates/welcome.html:10
+#: templates/welcome.html.py:11 templates/ishtar/manage_basket.html:4
#: templates/ishtar/blocks/window_field.html:1
#: templates/ishtar/blocks/window_field_detail.html:1
#: templates/ishtar/blocks/window_field_multiple.html:1
@@ -1733,45 +1753,45 @@ msgid ""
"archaeological data"
msgstr ""
-#: templates/welcome.html:5
+#: templates/welcome.html:6
msgid "Some useful links:"
msgstr ""
-#: templates/welcome.html:7
+#: templates/welcome.html:8
msgid "Presentation site and blog"
msgstr ""
-#: templates/welcome.html:7
+#: templates/welcome.html:8
msgid "stay tuned with Ishtar news!"
msgstr ""
-#: templates/welcome.html:8
+#: templates/welcome.html:9
msgid "Admin interface"
msgstr ""
-#: templates/welcome.html:8
+#: templates/welcome.html:9
msgid "for admin only."
msgstr ""
-#: templates/welcome.html:9
+#: templates/welcome.html:10
msgid "Forum"
msgstr ""
-#: templates/welcome.html:9
+#: templates/welcome.html:10
msgid ""
"need help? find a new bug? a fantastic feature to propose? Here is the place "
"to go."
msgstr ""
-#: templates/welcome.html:10
+#: templates/welcome.html:11
msgid "Source code"
msgstr ""
-#: templates/welcome.html:10
+#: templates/welcome.html:11
msgid "tickets"
msgstr ""
-#: templates/welcome.html:10
+#: templates/welcome.html:11
msgid "where the magic happens."
msgstr ""
@@ -1999,61 +2019,57 @@ msgstr ""
msgid "Town planning service of archaelogical files"
msgstr ""
-#: templates/ishtar/sheet_person.html:20
+#: templates/ishtar/sheet_person.html:21
#: templates/ishtar/wizard/wizard_person.html:19
msgid "Phone type"
msgstr ""
-#: templates/ishtar/sheet_person.html:43
+#: templates/ishtar/sheet_person.html:44
#: templates/ishtar/wizard/wizard_person.html:42
msgid "Business address"
msgstr ""
-#: templates/ishtar/sheet_person.html:51
+#: templates/ishtar/sheet_person.html:52
#: templates/ishtar/wizard/wizard_person.html:51
msgid "Other address"
msgstr ""
-#: templates/ishtar/sheet_person.html:59
+#: templates/ishtar/sheet_person.html:60
msgid "Associated organization"
msgstr ""
-#: templates/ishtar/sheet_person.html:70
+#: templates/ishtar/sheet_person.html:71
msgid "Associated operations as scientist"
msgstr ""
-#: templates/ishtar/sheet_person.html:74
+#: templates/ishtar/sheet_person.html:75
msgid "Associated operations as responsible"
msgstr ""
-#: templates/ishtar/sheet_person.html:79
+#: templates/ishtar/sheet_person.html:80
msgid "In charge of archaelogical files"
msgstr ""
-#: templates/ishtar/sheet_person.html:84
+#: templates/ishtar/sheet_person.html:85
msgid "General contractor of archaelogical files"
msgstr ""
-#: templates/ishtar/sheet_person.html:89
+#: templates/ishtar/sheet_person.html:90
msgid "Responsible for town planning service of archaelogical files"
msgstr ""
-#: templates/ishtar/sheet_person.html:95
+#: templates/ishtar/sheet_person.html:96
msgid "Documents associated to operations"
msgstr ""
-#: templates/ishtar/sheet_person.html:100
+#: templates/ishtar/sheet_person.html:101
msgid "Documents associated to context records"
msgstr ""
-#: templates/ishtar/sheet_person.html:105
+#: templates/ishtar/sheet_person.html:106
msgid "Documents associated to finds"
msgstr ""
-#: templates/ishtar/blocks/window_field_url.html:2
-msgid "link"
-msgstr ""
-
#: templates/ishtar/blocks/window_nav.html:6
msgid "Previous version"
msgstr ""
diff --git a/ishtar_common/migrations/0014_auto__add_field_historicalperson_salutation__add_field_person_salutati.py b/ishtar_common/migrations/0014_auto__add_field_historicalperson_salutation__add_field_person_salutati.py
new file mode 100644
index 000000000..eb3b34a26
--- /dev/null
+++ b/ishtar_common/migrations/0014_auto__add_field_historicalperson_salutation__add_field_person_salutati.py
@@ -0,0 +1,471 @@
+# -*- 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 field 'HistoricalPerson.salutation'
+ db.add_column('ishtar_common_historicalperson', 'salutation',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+ # Adding field 'Person.salutation'
+ db.add_column('ishtar_common_person', 'salutation',
+ self.gf('django.db.models.fields.CharField')(max_length=200, null=True, blank=True),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'HistoricalPerson.salutation'
+ db.delete_column('ishtar_common_historicalperson', 'salutation')
+
+ # Deleting field 'Person.salutation'
+ db.delete_column('ishtar_common_person', 'salutation')
+
+
+ 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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'title_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.import': {
+ 'Meta': {'object_name': 'Import'},
+ 'conservative_import': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
+ 'creation_date': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'null': 'True', 'blank': 'True'}),
+ 'encoding': ('django.db.models.fields.CharField', [], {'default': "'utf-8'", 'max_length': '15'}),
+ 'end_date': ('django.db.models.fields.DateTimeField', [], {'null': 'True', 'blank': 'True'}),
+ 'error_file': ('django.db.models.fields.files.FileField', [], {'max_length': '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'}),
+ 'salutation': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}),
+ 'surname': ('django.db.models.fields.CharField', [], {'max_length': '50', 'null': 'True', 'blank': 'True'}),
+ 'title': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.TitleType']", 'null': 'True', 'blank': 'True'}),
+ 'town': ('django.db.models.fields.CharField', [], {'max_length': '70', 'null': 'True', 'blank': 'True'})
+ },
+ 'ishtar_common.persontype': {
+ 'Meta': {'ordering': "('label',)", 'object_name': 'PersonType'},
+ 'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
+ 'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
+ 'groups': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['auth.Group']", 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'})
+ },
+ 'ishtar_common.regexp': {
+ 'Meta': {'object_name': 'Regexp'},
+ 'description': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}),
+ 'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
+ 'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
+ 'regexp': ('django.db.models.fields.CharField', [], {'max_length': '500'})
+ },
+ 'ishtar_common.sourcetype': {
+ 'Meta': {'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 087e772e7..6150ab0aa 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1448,7 +1448,7 @@ class Merge(models.Model):
return
if not self.merge_key:
self.generate_merge_key()
- self.save()
+ self.save(merge_key_generated=True)
if not self.pk or self.merge_key == self.EMPTY_MERGE_KEY:
return
q = self.__class__.objects\
@@ -1469,9 +1469,14 @@ class Merge(models.Model):
self.merge_candidate.add(item)
def save(self, *args, **kwargs):
+ # prevent circular save
+ merge_key_generated = False
+ if 'merge_key_generated' in kwargs:
+ merge_key_generated = kwargs.pop('merge_key_generated')
self.generate_merge_key()
item = super(Merge, self).save(*args, **kwargs)
- self.generate_merge_candidate()
+ if not merge_key_generated:
+ self.generate_merge_candidate()
return item
def archive(self):
@@ -2298,6 +2303,8 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
blank=True, null=True)
title = models.ForeignKey(TitleType, verbose_name=_(u"Title"),
blank=True, null=True)
+ salutation = models.CharField(_(u"Salutation"), max_length=200,
+ 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,
@@ -2324,6 +2331,12 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
("delete_own_person", ugettext(u"Can delete own Person")),
)
+ @property
+ def full_title(self):
+ return u" ".join(
+ [unicode(getattr(self, attr))
+ for attr in ['title', 'salutation'] if getattr(self, attr)])
+
def simple_lbl(self):
values = [unicode(getattr(self, attr)) for attr in ('surname', 'name')
if getattr(self, attr)]
@@ -2413,7 +2426,8 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
if self.title:
values = [self.title.label]
values += [unicode(getattr(self, attr))
- for attr in ('surname', 'name') if getattr(self, attr)]
+ for attr in ('salutation', 'surname', 'name')
+ if getattr(self, attr)]
if not values and self.raw_name:
values = [self.raw_name]
if self.attached_to:
diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html
index 8fc2d9211..c84c56996 100644
--- a/ishtar_common/templates/ishtar/sheet_person.html
+++ b/ishtar_common/templates/ishtar/sheet_person.html
@@ -6,6 +6,7 @@
{% window_nav item window_id 'show-person' 'person_modify' %}
<h3>{% trans "Identity" %}</h3>
+{% field "Title" item.full_title %}
{% field "Name" item.name %}
{% field "Surname" item.surname %}
{% field "Raw name" item.raw_name %}