summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/forms_common.py1
-rw-r--r--ishtar_common/locale/django.pot600
-rw-r--r--ishtar_common/migrations/0007_auto__add_field_ishtarsiteprofile_person_raw_name.py411
-rw-r--r--ishtar_common/models.py32
-rw-r--r--ishtar_common/static/js/ishtar.js22
-rw-r--r--ishtar_common/static/media/style.css103
-rw-r--r--ishtar_common/templates/base.html4
-rw-r--r--ishtar_common/templates/blocks/JQueryAutocomplete.js6
-rw-r--r--ishtar_common/templates/ishtar/blocks/window_tables/documents.html8
-rw-r--r--ishtar_common/templates/ishtar/blocks/window_tables/static_documents.html7
-rw-r--r--ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html26
-rw-r--r--ishtar_common/templates/ishtar/import_list.html2
-rw-r--r--ishtar_common/templatetags/date_formating.py4
-rw-r--r--ishtar_common/tests.py10
-rw-r--r--ishtar_common/utils.py3
15 files changed, 917 insertions, 322 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index 6fdee55cb..aef94476c 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -126,6 +126,7 @@ class TargetKeyForm(forms.ModelForm):
if instance and instance.pk:
self.fields['target'].widget.attrs['readonly'] = True
self.fields['key'].widget.attrs['readonly'] = True
+ self.fields['key'].widget.attrs['title'] = unicode(instance)
self.fields['value'].widget.choices = list(
instance.target.get_choices())
self.fields['key'].required = False
diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot
index ba75c5e2f..79a65ce86 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:1434
+#: context_processors.py:39 models.py:1457
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:489
+#: forms.py:71 forms_common.py:490
msgid "Confirm"
msgstr ""
@@ -171,12 +171,12 @@ msgstr ""
msgid "Add a new item"
msgstr ""
-#: forms.py:204 models.py:1211
+#: forms.py:204 models.py:1234
msgid "Template"
msgstr ""
-#: forms_common.py:39 forms_common.py:57 forms_common.py:169
-#: forms_common.py:292 models.py:1277 models.py:2555
+#: forms_common.py:39 forms_common.py:57 forms_common.py:170
+#: forms_common.py:293 models.py:1300 models.py:2583
#: templates/blocks/JQueryAdvancedTown.html:19
#: templates/ishtar/sheet_organization.html:13
msgid "Town"
@@ -192,283 +192,283 @@ msgid ""
"french town Saint-Denis in the Seine-Saint-Denis department.</p>"
msgstr ""
-#: forms_common.py:66 forms_common.py:717 ishtar_menu.py:47 models.py:1432
-#: models.py:2232 models.py:2379 models.py:2436
+#: forms_common.py:66 forms_common.py:718 ishtar_menu.py:47 models.py:1455
+#: models.py:2255 models.py:2407 models.py:2464
#: templates/ishtar/sheet_person.html:4
msgid "Person"
msgstr ""
-#: forms_common.py:157 forms_common.py:233 forms_common.py:335
-#: ishtar_menu.py:71 models.py:1433 models.py:2149
+#: forms_common.py:158 forms_common.py:234 forms_common.py:336
+#: ishtar_menu.py:71 models.py:1456 models.py:2172
#: templates/ishtar/sheet_organization.html:4
msgid "Organization"
msgstr ""
-#: forms_common.py:160 forms_common.py:196 forms_common.py:228
-#: forms_common.py:262 forms_common.py:330 models.py:886 models.py:1210
-#: models.py:1478 models.py:1696 models.py:2143 models.py:2219 models.py:2541
+#: 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
#: templates/ishtar/sheet_organization.html:8
#: templates/ishtar/sheet_organization.html:21
msgid "Name"
msgstr ""
-#: forms_common.py:161 models.py:1419 models.py:1827
+#: forms_common.py:162 models.py:1442 models.py:1850
msgid "Organization type"
msgstr ""
-#: forms_common.py:163 forms_common.py:286 models.py:1272
+#: forms_common.py:164 forms_common.py:287 models.py:1295
#: templates/ishtar/sheet_organization.html:10
msgid "Address"
msgstr ""
-#: forms_common.py:165 forms_common.py:289 models.py:1273
+#: forms_common.py:166 forms_common.py:290 models.py:1296
#: templates/ishtar/sheet_organization.html:11
msgid "Address complement"
msgstr ""
-#: forms_common.py:167 forms_common.py:290 models.py:1275
+#: forms_common.py:168 forms_common.py:291 models.py:1298
#: templates/ishtar/sheet_organization.html:12
msgid "Postal code"
msgstr ""
-#: forms_common.py:170 forms_common.py:293 models.py:1278
+#: forms_common.py:171 forms_common.py:294 models.py:1301
msgid "Country"
msgstr ""
-#: forms_common.py:172 forms_common.py:230 forms_common.py:266
-#: forms_common.py:332 forms_common.py:445 models.py:1305
+#: forms_common.py:173 forms_common.py:231 forms_common.py:267
+#: forms_common.py:333 forms_common.py:446 models.py:1328
msgid "Email"
msgstr ""
-#: forms_common.py:173 forms_common.py:269 models.py:1290
+#: forms_common.py:174 forms_common.py:270 models.py:1313
#: 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:174 forms_common.py:278 models.py:1302
+#: forms_common.py:175 forms_common.py:279 models.py:1325
#: 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:197 forms_common.py:231 forms_common.py:333 models.py:1854
-#: models.py:2145 models.py:2477 templates/sheet_ope.html:85
+#: 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
#: templates/sheet_ope.html.py:105 templates/sheet_ope.html:126
#: templates/ishtar/import_list.html:13
#: templates/ishtar/sheet_organization.html:23
-#: templates/ishtar/blocks/window_tables/documents.html:6
+#: templates/ishtar/blocks/window_tables/documents.html:8
msgid "Type"
msgstr ""
-#: forms_common.py:206 views.py:130
+#: forms_common.py:207 views.py:130
msgid "Organization search"
msgstr ""
-#: forms_common.py:229 forms_common.py:260 forms_common.py:331 models.py:2217
+#: forms_common.py:230 forms_common.py:261 forms_common.py:332 models.py:2240
#: templates/ishtar/sheet_organization.html:22
msgid "Surname"
msgstr ""
-#: forms_common.py:245 forms_common.py:318 views.py:95
+#: forms_common.py:246 forms_common.py:319 views.py:95
msgid "Person search"
msgstr ""
-#: forms_common.py:257 templates/ishtar/sheet_person.html:7
+#: forms_common.py:258 templates/ishtar/sheet_person.html:7
#: templates/ishtar/wizard/wizard_person.html:6
msgid "Identity"
msgstr ""
-#: forms_common.py:259 forms_common.py:643 forms_common.py:684 models.py:2215
-#: models.py:2474 templates/sheet_ope.html:104
-#: templates/ishtar/blocks/window_tables/documents.html:5
+#: forms_common.py:260 forms_common.py:644 forms_common.py:685 models.py:2238
+#: models.py:2502 templates/sheet_ope.html:104
+#: templates/ishtar/blocks/window_tables/documents.html:7
msgid "Title"
msgstr ""
-#: forms_common.py:264 models.py:2221
+#: forms_common.py:265 models.py:2244
msgid "Raw name"
msgstr ""
-#: forms_common.py:267 models.py:1291
+#: forms_common.py:268 models.py:1314
msgid "Phone description"
msgstr ""
-#: forms_common.py:270 models.py:1293 models.py:1295
+#: forms_common.py:271 models.py:1316 models.py:1318
msgid "Phone description 2"
msgstr ""
-#: forms_common.py:272
+#: forms_common.py:273
msgid "Phone 2"
msgstr ""
-#: forms_common.py:274 models.py:1299
+#: forms_common.py:275 models.py:1322
msgid "Phone description 3"
msgstr ""
-#: forms_common.py:276 models.py:1297
+#: forms_common.py:277 models.py:1320
msgid "Phone 3"
msgstr ""
-#: forms_common.py:281
+#: forms_common.py:282
msgid "Current organization"
msgstr ""
-#: forms_common.py:295 models.py:1280
+#: forms_common.py:296 models.py:1303
msgid "Other address: address"
msgstr ""
-#: forms_common.py:298 models.py:1283
+#: forms_common.py:299 models.py:1306
msgid "Other address: address complement"
msgstr ""
-#: forms_common.py:300 models.py:1284
+#: forms_common.py:301 models.py:1307
msgid "Other address: postal code"
msgstr ""
-#: forms_common.py:302 models.py:1286
+#: forms_common.py:303 models.py:1309
msgid "Other address: town"
msgstr ""
-#: forms_common.py:304 models.py:1288
+#: forms_common.py:305 models.py:1311
msgid "Other address: country"
msgstr ""
-#: forms_common.py:314
+#: forms_common.py:315
msgid "Already has an account"
msgstr ""
-#: forms_common.py:329
+#: forms_common.py:330
msgid "Username"
msgstr ""
-#: forms_common.py:347
+#: forms_common.py:348
msgid "Account search"
msgstr ""
-#: forms_common.py:394 forms_common.py:424 forms_common.py:428 models.py:2197
+#: forms_common.py:395 forms_common.py:425 forms_common.py:429 models.py:2220
msgid "Person type"
msgstr ""
-#: forms_common.py:439 forms_common.py:444 ishtar_menu.py:32
+#: forms_common.py:440 forms_common.py:445 ishtar_menu.py:32
msgid "Account"
msgstr ""
-#: forms_common.py:448 wizards.py:1170
+#: forms_common.py:449 wizards.py:1170
msgid "New password"
msgstr ""
-#: forms_common.py:451
+#: forms_common.py:452
msgid "New password (confirmation)"
msgstr ""
-#: forms_common.py:470
+#: forms_common.py:471
msgid "Your password and confirmation password do not match."
msgstr ""
-#: forms_common.py:475
+#: forms_common.py:476
msgid "You must provide a correct password."
msgstr ""
-#: forms_common.py:483
+#: forms_common.py:484
msgid "This username already exists."
msgstr ""
-#: forms_common.py:490
+#: forms_common.py:491
msgid "Send the new password by email?"
msgstr ""
-#: forms_common.py:499 forms_common.py:512 models.py:2556
+#: forms_common.py:500 forms_common.py:513 models.py:2584
msgid "Towns"
msgstr ""
-#: forms_common.py:509
+#: forms_common.py:510
msgid "There are identical towns."
msgstr ""
-#: forms_common.py:593
+#: forms_common.py:594
msgid "Only one choice can be checked."
msgstr ""
-#: forms_common.py:641
+#: forms_common.py:642
msgid "Documentation informations"
msgstr ""
-#: forms_common.py:645 forms_common.py:685 models.py:1828 models.py:2457
+#: forms_common.py:646 forms_common.py:686 models.py:1851 models.py:2485
msgid "Source type"
msgstr ""
-#: forms_common.py:647 forms_common.py:686 templates/sheet_ope.html:84
+#: forms_common.py:648 forms_common.py:687 templates/sheet_ope.html:84
msgid "Reference"
msgstr ""
-#: forms_common.py:650 forms_common.py:687
+#: forms_common.py:651 forms_common.py:688
msgid "Internal reference"
msgstr ""
-#: forms_common.py:653 models.py:2488
+#: forms_common.py:654 models.py:2516
msgid "Numerical ressource (web address)"
msgstr ""
-#: forms_common.py:654 models.py:2490
+#: forms_common.py:655 models.py:2518
msgid "Receipt date"
msgstr ""
-#: forms_common.py:656 models.py:1981 models.py:2492
+#: forms_common.py:657 models.py:2004 models.py:2520
msgid "Creation date"
msgstr ""
-#: forms_common.py:659 models.py:2495
+#: forms_common.py:660 models.py:2523
msgid "Receipt date in documentation"
msgstr ""
-#: forms_common.py:661 forms_common.py:689 models.py:287 models.py:516
-#: models.py:1723 models.py:2225 models.py:2502
+#: forms_common.py:662 forms_common.py:690 models.py:287 models.py:516
+#: models.py:1746 models.py:2248 models.py:2530
msgid "Comment"
msgstr ""
-#: forms_common.py:663 forms_common.py:688 models.py:888 models.py:1482
-#: models.py:1655 models.py:1697 models.py:2501 templates/sheet_ope.html:128
+#: 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
msgid "Description"
msgstr ""
-#: forms_common.py:666 models.py:2503
+#: forms_common.py:667 models.py:2531
msgid "Additional information"
msgstr ""
-#: forms_common.py:668 forms_common.py:692 models.py:2505
+#: forms_common.py:669 forms_common.py:693 models.py:2533
msgid "Has a duplicate"
msgstr ""
-#: forms_common.py:681 forms_common.py:710 forms_common.py:743 models.py:2441
+#: forms_common.py:682 forms_common.py:711 forms_common.py:744 models.py:2469
#: templates/ishtar/wizard/wizard_person_deletion.html:124
msgid "Author"
msgstr ""
-#: forms_common.py:691
+#: forms_common.py:692
msgid "Additional informations"
msgstr ""
-#: forms_common.py:702
+#: forms_common.py:703
msgid "Would you like to delete this documentation?"
msgstr ""
-#: forms_common.py:718 models.py:1829 models.py:2431 models.py:2438
+#: forms_common.py:719 models.py:1852 models.py:2459 models.py:2466
msgid "Author type"
msgstr ""
-#: forms_common.py:736
+#: forms_common.py:737
msgid "Author selection"
msgstr ""
-#: forms_common.py:750
+#: forms_common.py:751
msgid "There are identical authors."
msgstr ""
-#: forms_common.py:754 models.py:2442 models.py:2484
+#: forms_common.py:755 models.py:2470 models.py:2512
#: templates/sheet_ope.html:106
-#: templates/ishtar/blocks/window_tables/documents.html:7
+#: templates/ishtar/blocks/window_tables/documents.html:9
msgid "Authors"
msgstr ""
@@ -484,7 +484,7 @@ msgstr ""
msgid "Deletion"
msgstr ""
-#: ishtar_menu.py:39 models.py:1006 views.py:1232
+#: ishtar_menu.py:39 models.py:1029 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:2018 widgets.py:110
+#: ishtar_menu.py:66 ishtar_menu.py:93 models.py:2041 widgets.py:110
#: templates/ishtar/form_delete.html:11
msgid "Delete"
msgstr ""
-#: ishtar_menu.py:101 models.py:1992
+#: ishtar_menu.py:101 models.py:2015
msgid "Imports"
msgstr ""
@@ -541,7 +541,7 @@ msgstr ""
msgid "This item already exists."
msgstr ""
-#: models.py:283 models.py:515 models.py:1245 models.py:1257
+#: models.py:283 models.py:515 models.py:1268 models.py:1280
msgid "Label"
msgstr ""
@@ -549,11 +549,11 @@ msgstr ""
msgid "Textual ID"
msgstr ""
-#: models.py:288 models.py:518 models.py:1214
+#: models.py:288 models.py:518 models.py:1237
msgid "Available"
msgstr ""
-#: models.py:537 models.py:1769
+#: models.py:537 models.py:1792
msgid "Key"
msgstr ""
@@ -569,7 +569,7 @@ msgstr ""
msgid "Creator"
msgstr ""
-#: models.py:766 models.py:2567
+#: models.py:766 models.py:2595
msgid "Order"
msgstr ""
@@ -585,730 +585,741 @@ msgstr ""
msgid "Cannot have symmetrical and an inverse_relation"
msgstr ""
-#: models.py:880
+#: models.py:896
msgid "Euro"
msgstr ""
-#: models.py:881
+#: models.py:897
msgid "US dollar"
msgstr ""
-#: models.py:887 models.py:1480
+#: models.py:903 models.py:1503
msgid "Slug"
msgstr ""
-#: models.py:889
+#: models.py:905
msgid "Files module"
msgstr ""
-#: models.py:890
+#: models.py:906
msgid "Context records module"
msgstr ""
-#: models.py:892
+#: models.py:908
msgid "Finds module"
msgstr ""
-#: models.py:893
+#: models.py:909
msgid "Need context records module"
msgstr ""
-#: models.py:895
+#: models.py:911
msgid "Warehouses module"
msgstr ""
-#: models.py:896
+#: models.py:912
msgid "Need finds module"
msgstr ""
-#: models.py:898
+#: models.py:914
msgid "Home page"
msgstr ""
-#: models.py:899
+#: models.py:915
msgid ""
"Homepage of Ishtar - if not defined a default homepage will appear. Use the "
"markdown syntax."
msgstr ""
-#: models.py:902
+#: models.py:918
msgid "File external id"
msgstr ""
-#: models.py:904
+#: models.py:920
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:909
+#: models.py:925
msgid "Parcel external id"
msgstr ""
-#: models.py:912
+#: models.py:928
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:917
+#: models.py:933
msgid "Context record external id"
msgstr ""
-#: models.py:919
+#: models.py:935
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:924
+#: models.py:940
msgid "Base find external id"
msgstr ""
-#: models.py:926
+#: models.py:942
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:931
+#: models.py:947
msgid "Find external id"
msgstr ""
-#: models.py:933
+#: models.py:949
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:937
+#: models.py:954
+msgid "Raw name for person"
+msgstr ""
+
+#: models.py:956
+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
msgid "Current active"
msgstr ""
-#: models.py:938
+#: models.py:961
msgid "Currency"
msgstr ""
-#: models.py:942
+#: models.py:965
msgid "Ishtar site profile"
msgstr ""
-#: models.py:943
+#: models.py:966
msgid "Ishtar site profiles"
msgstr ""
-#: models.py:999
+#: models.py:1022
msgid "Variable name"
msgstr ""
-#: models.py:1000
+#: models.py:1023
msgid "Description of the variable"
msgstr ""
-#: models.py:1002 models.py:1770
+#: models.py:1025 models.py:1793
msgid "Value"
msgstr ""
-#: models.py:1005
+#: models.py:1028
msgid "Global variable"
msgstr ""
-#: models.py:1115 models.py:1145
+#: models.py:1138 models.py:1168
msgid "Total"
msgstr ""
-#: models.py:1122 models.py:1246 models.py:1258
+#: models.py:1145 models.py:1269 models.py:1281
#: templates/ishtar/sheet_person.html:21
-#: templates/ishtar/dashboards/dashboard_main_detail.html:135
+#: 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:1209
+#: models.py:1232
msgid "Administrative Act"
msgstr ""
-#: models.py:1213
+#: models.py:1236
msgid "Associated object"
msgstr ""
-#: models.py:1217
+#: models.py:1240
msgid "Document template"
msgstr ""
-#: models.py:1218
+#: models.py:1241
msgid "Document templates"
msgstr ""
-#: models.py:1249 models.py:1259 models.py:1976
+#: models.py:1272 models.py:1282 models.py:1999
msgid "State"
msgstr ""
-#: models.py:1263 templates/blocks/JQueryAdvancedTown.html:12
+#: models.py:1286 templates/blocks/JQueryAdvancedTown.html:12
msgid "Department"
msgstr ""
-#: models.py:1264
+#: models.py:1287
msgid "Departments"
msgstr ""
-#: models.py:1301
+#: models.py:1324
msgid "Raw phone"
msgstr ""
-#: models.py:1307
+#: models.py:1330
msgid "Alternative address is prefered"
msgstr ""
-#: models.py:1346
+#: models.py:1369
msgid "Tel: "
msgstr ""
-#: models.py:1350
+#: models.py:1373
msgid "Mobile: "
msgstr ""
-#: models.py:1354
+#: models.py:1377
msgid "Email: "
msgstr ""
-#: models.py:1359
+#: models.py:1382
msgid "Merge key"
msgstr ""
-#: models.py:1420
+#: models.py:1443
msgid "Organization types"
msgstr ""
-#: models.py:1436
+#: models.py:1459
msgid "Archaeological site"
msgstr ""
-#: models.py:1437
+#: models.py:1460
msgid "Parcels"
msgstr ""
-#: models.py:1439
+#: models.py:1462
msgid "Operation source"
msgstr ""
-#: models.py:1442 views.py:1057 views.py:1108
+#: models.py:1465 views.py:1057 views.py:1108
msgid "Archaeological files"
msgstr ""
-#: models.py:1444 views.py:1060 views.py:1116
+#: models.py:1467 views.py:1060 views.py:1116
msgid "Context records"
msgstr ""
-#: models.py:1446
+#: models.py:1469
msgid "Context record relations"
msgstr ""
-#: models.py:1448 views.py:1062 views.py:1119
+#: models.py:1471 views.py:1062 views.py:1119
msgid "Finds"
msgstr ""
-#: models.py:1484 templates/ishtar/dashboards/dashboard_main.html:25
+#: models.py:1507 templates/ishtar/dashboards/dashboard_main.html:25
msgid "Users"
msgstr ""
-#: models.py:1486
+#: models.py:1509
msgid "Associated model"
msgstr ""
-#: models.py:1489
+#: models.py:1512
msgid "Is template"
msgstr ""
-#: models.py:1490
+#: models.py:1513
msgid "Unicity keys (separator \";\")"
msgstr ""
-#: models.py:1494
+#: models.py:1517
msgid "Importer - Type"
msgstr ""
-#: models.py:1495
+#: models.py:1518
msgid "Importer - Types"
msgstr ""
-#: models.py:1585
+#: models.py:1608
msgid "Importer - Default"
msgstr ""
-#: models.py:1586
+#: models.py:1609
msgid "Importer - Defaults"
msgstr ""
-#: models.py:1621
+#: models.py:1644
msgid "Importer - Default value"
msgstr ""
-#: models.py:1622
+#: models.py:1645
msgid "Importer - Default values"
msgstr ""
-#: models.py:1654
+#: models.py:1677
msgid "Column number"
msgstr ""
-#: models.py:1657
+#: models.py:1680
msgid "Required"
msgstr ""
-#: models.py:1660
+#: models.py:1683
msgid "Importer - Column"
msgstr ""
-#: models.py:1661
+#: models.py:1684
msgid "Importer - Columns"
msgstr ""
-#: models.py:1681
+#: models.py:1704
msgid "Field name"
msgstr ""
-#: models.py:1683 models.py:1717
+#: models.py:1706 models.py:1740
msgid "Force creation of new items"
msgstr ""
-#: models.py:1685 models.py:1719
+#: models.py:1708 models.py:1742
msgid "Concatenate with existing"
msgstr ""
-#: models.py:1687 models.py:1721
+#: models.py:1710 models.py:1744
msgid "Concatenate character"
msgstr ""
-#: models.py:1691
+#: models.py:1714
msgid "Importer - Duplicate field"
msgstr ""
-#: models.py:1692
+#: models.py:1715
msgid "Importer - Duplicate fields"
msgstr ""
-#: models.py:1699
+#: models.py:1722
msgid "Regular expression"
msgstr ""
-#: models.py:1702
+#: models.py:1725
msgid "Importer - Regular expression"
msgstr ""
-#: models.py:1703
+#: models.py:1726
msgid "Importer - Regular expressions"
msgstr ""
-#: models.py:1726
+#: models.py:1749
msgid "Importer - Target"
msgstr ""
-#: models.py:1727
+#: models.py:1750
msgid "Importer - Targets"
msgstr ""
-#: models.py:1751 views.py:343
+#: models.py:1774 views.py:343
msgid "True"
msgstr ""
-#: models.py:1752 views.py:345
+#: models.py:1775 views.py:345
msgid "False"
msgstr ""
-#: models.py:1771
+#: models.py:1794
msgid "Is set"
msgstr ""
-#: models.py:1778
+#: models.py:1801
msgid "Importer - Target key"
msgstr ""
-#: models.py:1779
+#: models.py:1802
msgid "Importer - Targets keys"
msgstr ""
-#: models.py:1830 models.py:2469 models.py:2480
+#: models.py:1853 models.py:2497 models.py:2508
msgid "Format"
msgstr ""
-#: models.py:1831 models.py:2571
+#: models.py:1854 models.py:2599
msgid "Operation type"
msgstr ""
-#: models.py:1832
+#: models.py:1855
msgid "Period"
msgstr ""
-#: models.py:1833
+#: models.py:1856
msgid "Report state"
msgstr ""
-#: models.py:1834
+#: models.py:1857
msgid "Unit"
msgstr ""
-#: models.py:1835
+#: models.py:1858
msgid "Material"
msgstr ""
-#: models.py:1837
+#: models.py:1860
msgid "Conservatory state"
msgstr ""
-#: models.py:1838
+#: models.py:1861
msgid "Preservation type"
msgstr ""
-#: models.py:1839
+#: models.py:1862
msgid "Object type"
msgstr ""
-#: models.py:1841
+#: models.py:1864
msgid "Identification type"
msgstr ""
-#: models.py:1843
+#: models.py:1866
msgid "Context record relation type"
msgstr ""
-#: models.py:1844 models.py:2463
+#: models.py:1867 models.py:2491
msgid "Support type"
msgstr ""
-#: models.py:1850
+#: models.py:1873
msgid "Integer"
msgstr ""
-#: models.py:1851
+#: models.py:1874
msgid "Float"
msgstr ""
-#: models.py:1852
+#: models.py:1875
msgid "String"
msgstr ""
-#: models.py:1853 templates/sheet_ope.html:86
+#: models.py:1876 templates/sheet_ope.html:86
msgid "Date"
msgstr ""
-#: models.py:1855 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
-#: templates/ishtar/dashboards/dashboard_main_detail.html:120
+#: models.py:1878 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83
+#: templates/ishtar/dashboards/dashboard_main_detail.html:126
msgid "Year"
msgstr ""
-#: models.py:1856
+#: models.py:1879
msgid "String to boolean"
msgstr ""
-#: models.py:1857
+#: models.py:1880
msgctxt "filesystem"
msgid "File"
msgstr ""
-#: models.py:1858
+#: models.py:1881
msgid "Unknow type"
msgstr ""
-#: models.py:1874
+#: models.py:1897
msgid "4 digit year. e.g.: \"2015\""
msgstr ""
-#: models.py:1875
+#: models.py:1898
msgid "4 digit year/month/day. e.g.: \"2015/02/04\""
msgstr ""
-#: models.py:1876
+#: models.py:1899
msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""
msgstr ""
-#: models.py:1886
+#: models.py:1909
msgid "Options"
msgstr ""
-#: models.py:1888
+#: models.py:1911
msgid "Split character(s)"
msgstr ""
-#: models.py:1892
+#: models.py:1915
msgid "Importer - Formater type"
msgstr ""
-#: models.py:1893
+#: models.py:1916
msgid "Importer - Formater types"
msgstr ""
-#: models.py:1940 templates/ishtar/dashboards/dashboard_main_detail.html:61
+#: models.py:1963 templates/ishtar/dashboards/dashboard_main_detail.html:63
msgid "Created"
msgstr ""
-#: models.py:1941
+#: models.py:1964
msgid "Analyse in progress"
msgstr ""
-#: models.py:1942
+#: models.py:1965
msgid "Analysed"
msgstr ""
-#: models.py:1943
+#: models.py:1966
msgid "Import pending"
msgstr ""
-#: models.py:1944
+#: models.py:1967
msgid "Import in progress"
msgstr ""
-#: models.py:1945
+#: models.py:1968
msgid "Finished with errors"
msgstr ""
-#: models.py:1946
+#: models.py:1969
msgid "Finished"
msgstr ""
-#: models.py:1947
+#: models.py:1970
msgid "Archived"
msgstr ""
-#: models.py:1959
+#: models.py:1982
msgid "Imported file"
msgstr ""
-#: models.py:1962
+#: models.py:1985
msgid "Associated images (zip file)"
msgstr ""
-#: models.py:1964
+#: models.py:1987
msgid "Encoding"
msgstr ""
-#: models.py:1966
+#: models.py:1989
msgid "Skip lines"
msgstr ""
-#: models.py:1967 templates/ishtar/import_list.html:47
+#: models.py:1990 templates/ishtar/import_list.html:47
msgid "Error file"
msgstr ""
-#: models.py:1970
+#: models.py:1993
msgid "Result file"
msgstr ""
-#: models.py:1973 templates/ishtar/import_list.html:53
+#: models.py:1996 templates/ishtar/import_list.html:53
msgid "Match file"
msgstr ""
-#: models.py:1979
+#: models.py:2002
msgid "Conservative import"
msgstr ""
-#: models.py:1984
+#: models.py:2007
msgid "End date"
msgstr ""
-#: models.py:1986
+#: models.py:2009
msgid "Remaining seconds"
msgstr ""
-#: models.py:1991
+#: models.py:2014
msgid "Import"
msgstr ""
-#: models.py:2008
+#: models.py:2031
msgid "Analyse"
msgstr ""
-#: models.py:2010 models.py:2013
+#: models.py:2033 models.py:2036
msgid "Re-analyse"
msgstr ""
-#: models.py:2011
+#: models.py:2034
msgid "Launch import"
msgstr ""
-#: models.py:2014
+#: models.py:2037
msgid "Re-import"
msgstr ""
-#: models.py:2015
+#: models.py:2038
msgid "Archive"
msgstr ""
-#: models.py:2017
+#: models.py:2040
msgid "Unarchive"
msgstr ""
-#: models.py:2150
+#: models.py:2173
msgid "Organizations"
msgstr ""
-#: models.py:2152
+#: models.py:2175
msgid "Can view all Organizations"
msgstr ""
-#: models.py:2153
+#: models.py:2176
msgid "Can view own Organization"
msgstr ""
-#: models.py:2154
+#: models.py:2177
msgid "Can add own Organization"
msgstr ""
-#: models.py:2156
+#: models.py:2179
msgid "Can change own Organization"
msgstr ""
-#: models.py:2158
+#: models.py:2181
msgid "Can delete own Organization"
msgstr ""
-#: models.py:2193
+#: models.py:2216
msgid "Groups"
msgstr ""
-#: models.py:2198
+#: models.py:2221
msgid "Person types"
msgstr ""
-#: models.py:2205
+#: models.py:2228
msgid "Mr"
msgstr ""
-#: models.py:2206
+#: models.py:2229
msgid "Miss"
msgstr ""
-#: models.py:2207
+#: models.py:2230
msgid "Mr and Mrs"
msgstr ""
-#: models.py:2208
+#: models.py:2231
msgid "Mrs"
msgstr ""
-#: models.py:2209
+#: models.py:2232
msgid "Doctor"
msgstr ""
-#: models.py:2223
+#: models.py:2246
msgid "Contact type"
msgstr ""
-#: models.py:2226 models.py:2273
+#: models.py:2249 models.py:2296
msgid "Types"
msgstr ""
-#: models.py:2229
+#: models.py:2252
msgid "Is attached to"
msgstr ""
-#: models.py:2233
+#: models.py:2256
msgid "Persons"
msgstr ""
-#: models.py:2235
+#: models.py:2258
msgid "Can view all Persons"
msgstr ""
-#: models.py:2236
+#: models.py:2259
msgid "Can view own Person"
msgstr ""
-#: models.py:2237
+#: models.py:2260
msgid "Can add own Person"
msgstr ""
-#: models.py:2238
+#: models.py:2261
msgid "Can change own Person"
msgstr ""
-#: models.py:2239
+#: models.py:2262
msgid "Can delete own Person"
msgstr ""
-#: models.py:2383
+#: models.py:2411
msgid "Ishtar user"
msgstr ""
-#: models.py:2384
+#: models.py:2412
msgid "Ishtar users"
msgstr ""
-#: models.py:2426
+#: models.py:2454
msgid "To modify the password use the form in Auth > User"
msgstr ""
-#: models.py:2432
+#: models.py:2460
msgid "Author types"
msgstr ""
-#: models.py:2458
+#: models.py:2486
msgid "Source types"
msgstr ""
-#: models.py:2464
+#: models.py:2492
msgid "Support types"
msgstr ""
-#: models.py:2470
+#: models.py:2498
msgid "Formats"
msgstr ""
-#: models.py:2475
+#: models.py:2503
msgid "External ID"
msgstr ""
-#: models.py:2478
+#: models.py:2506
msgid "Support"
msgstr ""
-#: models.py:2482
+#: models.py:2510
msgid "Scale"
msgstr ""
-#: models.py:2496
+#: models.py:2524
msgid "Item number"
msgstr ""
-#: models.py:2497
+#: models.py:2525
msgid "Ref."
msgstr ""
-#: models.py:2500
+#: models.py:2528
msgid "Internal ref."
msgstr ""
-#: models.py:2542
+#: models.py:2570
msgid "Surface (m2)"
msgstr ""
-#: models.py:2543 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
+#: models.py:2571 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107
msgid "Localisation"
msgstr ""
-#: models.py:2568
+#: models.py:2596
msgid "Is preventive"
msgstr ""
-#: models.py:2572
+#: models.py:2600
msgid "Operation types"
msgstr ""
-#: models.py:2598
+#: models.py:2626
msgid "Preventive"
msgstr ""
-#: models.py:2599
+#: models.py:2627
msgid "Research"
msgstr ""
-#: utils.py:51
+#: utils.py:52
msgid " (...)"
msgstr ""
@@ -1472,6 +1483,22 @@ msgstr ""
msgid "Current items"
msgstr ""
+#: templates/base.html:125
+msgid "Processing..."
+msgstr ""
+
+#: templates/base.html:126
+msgid "This can be long."
+msgstr ""
+
+#: templates/base.html:127
+msgid "Time to take a coffee?"
+msgstr ""
+
+#: templates/base.html:128
+msgid "Time to take another coffee?"
+msgstr ""
+
#: templates/sheet_ope.html:4
msgid "Export as:"
msgstr ""
@@ -2033,12 +2060,12 @@ msgstr ""
msgid "Export as PDF file"
msgstr ""
-#: templates/ishtar/blocks/window_tables/documents.html:8
+#: templates/ishtar/blocks/window_tables/documents.html:10
msgid "Related to"
msgstr ""
-#: templates/ishtar/blocks/window_tables/documents.html:9
-#: templates/ishtar/blocks/window_tables/documents.html:17
+#: templates/ishtar/blocks/window_tables/documents.html:11
+#: templates/ishtar/blocks/window_tables/documents.html:19
msgid "Link"
msgstr ""
@@ -2066,61 +2093,56 @@ msgstr ""
msgid "Right-click on this image to save it."
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:39
+#: templates/ishtar/dashboards/dashboard_main_detail.html:41
msgid "By years"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:41
-#: templates/ishtar/dashboards/dashboard_main_detail.html:51
+#: templates/ishtar/dashboards/dashboard_main_detail.html:43
+#: templates/ishtar/dashboards/dashboard_main_detail.html:53
msgid "Average:"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:42
-#: templates/ishtar/dashboards/dashboard_main_detail.html:52
+#: templates/ishtar/dashboards/dashboard_main_detail.html:44
+#: templates/ishtar/dashboards/dashboard_main_detail.html:54
msgid "Variance:"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:43
-#: templates/ishtar/dashboards/dashboard_main_detail.html:53
+#: templates/ishtar/dashboards/dashboard_main_detail.html:45
+#: templates/ishtar/dashboards/dashboard_main_detail.html:55
msgid "Standard deviation:"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:44
-#: templates/ishtar/dashboards/dashboard_main_detail.html:54
+#: templates/ishtar/dashboards/dashboard_main_detail.html:46
+#: templates/ishtar/dashboards/dashboard_main_detail.html:56
msgid "Median:"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:45
-#: templates/ishtar/dashboards/dashboard_main_detail.html:55
+#: templates/ishtar/dashboards/dashboard_main_detail.html:47
+#: templates/ishtar/dashboards/dashboard_main_detail.html:57
msgid "Mode:"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:49
+#: templates/ishtar/dashboards/dashboard_main_detail.html:51
msgid "By operations"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:58
+#: templates/ishtar/dashboards/dashboard_main_detail.html:61
msgid "Created last"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:65
-#: templates/ishtar/dashboards/dashboard_main_detail.html:76
-msgid "Show"
-msgstr ""
-
-#: templates/ishtar/dashboards/dashboard_main_detail.html:69
+#: templates/ishtar/dashboards/dashboard_main_detail.html:74
msgid "Recent changes"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:72
+#: templates/ishtar/dashboards/dashboard_main_detail.html:76
msgid "Modified"
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:108
+#: templates/ishtar/dashboards/dashboard_main_detail.html:114
msgid "No data for these criteria."
msgstr ""
-#: templates/ishtar/dashboards/dashboard_main_detail.html:126
+#: templates/ishtar/dashboards/dashboard_main_detail.html:132
msgid "Month"
msgstr ""
diff --git a/ishtar_common/migrations/0007_auto__add_field_ishtarsiteprofile_person_raw_name.py b/ishtar_common/migrations/0007_auto__add_field_ishtarsiteprofile_person_raw_name.py
new file mode 100644
index 000000000..06e380189
--- /dev/null
+++ b/ishtar_common/migrations/0007_auto__add_field_ishtarsiteprofile_person_raw_name.py
@@ -0,0 +1,411 @@
+# -*- 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 'IshtarSiteProfile.person_raw_name'
+ db.add_column('ishtar_common_ishtarsiteprofile', 'person_raw_name',
+ self.gf('django.db.models.fields.TextField')(default='{name|upper} {surname}'),
+ keep_default=False)
+
+
+ def backwards(self, orm):
+ # Deleting field 'IshtarSiteProfile.person_raw_name'
+ db.delete_column('ishtar_common_ishtarsiteprofile', 'person_raw_name')
+
+
+ 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'}),
+ '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 51cb16157..6228ea1d0 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -850,6 +850,13 @@ class LightHistorizedItem(BaseHistorizedItem):
PARSE_FORMULA = re.compile("{([^}]*)}")
+FORMULA_FILTERS = {
+ 'upper': lambda x: x.upper(),
+ 'lower': lambda x: x.lower(),
+ 'capitalize': lambda x: x.capitalize(),
+ 'slug': lambda x: slugify(x)
+}
+
def get_external_id(key, item):
profile = get_current_profile()
@@ -858,6 +865,13 @@ def get_external_id(key, item):
formula = getattr(profile, key)
dct = {}
for fkey in PARSE_FORMULA.findall(formula):
+ filtered = fkey.split(u'|')
+ initial_key = fkey[:]
+ fkey = filtered[0]
+ filters = []
+ for filtr in filtered[1:]:
+ if filtr in FORMULA_FILTERS:
+ filters.append(FORMULA_FILTERS[filtr])
if fkey.startswith('settings__'):
dct[fkey] = getattr(settings, fkey[len('settings__'):]) or ''
continue
@@ -872,9 +886,11 @@ def get_external_id(key, item):
if obj is None:
break
if obj is None:
- dct[fkey] = ''
+ dct[initial_key] = ''
else:
- dct[fkey] = obj
+ dct[initial_key] = unicode(obj)
+ for filtr in filters:
+ dct[initial_key] = filtr(dct[initial_key])
return formula.format(**dct)
CURRENCY = ((u"€", _(u"Euro")),
@@ -934,6 +950,13 @@ class IshtarSiteProfile(models.Model, Cached):
u"Change this with care. With incorrect formula, the "
u"application might be unusable and import of external "
u"data can be destructive."))
+ person_raw_name = models.TextField(
+ _(u"Raw name for person"),
+ default="{name|upper} {surname}",
+ help_text=_(u"Formula to manage person raw_name. "
+ u"Change this with care. With incorrect formula, the "
+ u"application might be unusable and import of external "
+ u"data can be destructive."))
active = models.BooleanField(_(u"Current active"), default=False)
currency = models.CharField(_(u"Currency"), default=u"€",
choices=CURRENCY, max_length='5')
@@ -2364,6 +2387,11 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
def save(self, *args, **kwargs):
super(Person, self).save(*args, **kwargs)
+ if not self.raw_name:
+ self.raw_name = get_external_id(
+ 'person_raw_name', self)
+ if self.raw_name:
+ self.save()
if hasattr(self, 'responsible_town_planning_service'):
for fle in self.responsible_town_planning_service.all():
fle.save() # force update of raw_town_planning_service
diff --git a/ishtar_common/static/js/ishtar.js b/ishtar_common/static/js/ishtar.js
index f469fc546..4d82cb238 100644
--- a/ishtar_common/static/js/ishtar.js
+++ b/ishtar_common/static/js/ishtar.js
@@ -108,6 +108,28 @@ $(document).on("click", '#progress-content', function(){
$('#progress').hide();
});
+function long_wait(){
+ $('#progress').addClass('long');
+ $('#progress').show();
+ $('.progress-1').show('slow');
+ setTimeout(function(){
+ $('.progress-1').hide('slow');
+ $('.progress-2').show('slow');
+ }, 60000);
+ setTimeout(function(){
+ $('.progress-2').hide('slow');
+ $('.progress-3').show('slow');
+ }, 120000);
+ setTimeout(function(){
+ $('.progress-3').hide('slow');
+ $('.progress-4').show('slow');
+ }, 180000);
+ setTimeout(function(){
+ $('.progress-4').hide('slow');
+ long_wait();
+ }, 240000);
+}
+
var last_window;
function load_window(url, speed, on_success){
diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css
index 69f86784b..02f4d930b 100644
--- a/ishtar_common/static/media/style.css
+++ b/ishtar_common/static/media/style.css
@@ -710,7 +710,7 @@ ul.form .help_text{
}
.autocomplete{
- width:300px;
+ width:350px;
}
.delete td{
@@ -843,7 +843,7 @@ a.photo{
.dashboard > div{
background: #FFF;
text-align:left;
- padding-bottom:10px;
+ padding:10px;
border:1px solid #CCC;
border-top-left-radius: 0;
border-top-right-radius: 0;
@@ -854,16 +854,12 @@ a.photo{
width:762px;
background-color:#922;
color:#FFF;
- padding:0;
+ padding:10px;
border-bottom-left-radius: 0;
border-bottom-right-radius: 0;
}
-.dashboard h4{
- font-weight:normal;
- color:#D14;
-}
-.dashboard h4, .dashboard p{
+.dashboard p{
margin:0;
padding:0 10px;
}
@@ -946,10 +942,6 @@ a.photo{
border:1px solid #f1f2f6;
}
-#window table td.string, .dashboard table.resume td.string{
- text-align:left;
-}
-
#window table td.ref, .dashboard table.resume td.ref{
text-align:left;
white-space:nowrap;
@@ -1037,17 +1029,24 @@ table td.item-list span{
border-top-right-radius: 8px;
}
+.dashboard label,
#window label{
display:inline-table;
font-weight:bold;
width:245px;
}
+.dashboard span.value,
#window span.value{
display:inline-table;
width:465px;
}
+.dashboard span.value.numeric{
+ text-align: right;
+ width:80px;
+}
+
#window ul.form-flex span.value {
display: inline-table;
width: 230px;
@@ -1200,6 +1199,27 @@ input.widget-oa{
padding:10px;
}
+#progress.long #progress-content{
+ background-position:center 20px;
+ width:130px;
+ height: auto;
+ padding-top: 60px;
+}
+
+#progress-content p{
+ display: none;
+ padding: 0;
+ margin: 0;
+}
+
+#progress.long #progress-content p{
+ display: block;
+}
+
+#progress.long #progress-content p.progress-detail{
+ display: none;
+}
+
#merge-table{
background-color:#fff;
width:700px;
@@ -1255,3 +1275,62 @@ table.table-form td {
table.table-form td input{
border-color:#922;
}
+
+.clean-table {
+ margin: 10px 0 10px 0;
+ width: 100%;
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
+}
+
+.clean-table h4{
+ color: #922;
+ font-size: 1.2em;
+ padding:0.3em;
+ margin:0;
+ text-align: center;
+}
+
+.clean-table-wrap{
+ overflow: auto;
+}
+
+.clean-table table{
+ width: 100%;
+ border-collapse: collapse;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+.clean-table tr {
+ padding: 8px 0;
+ background: #f6f6f6;
+}
+
+.clean-table tr:nth-of-type(odd) {
+ background: #e9e9e9;
+}
+
+.clean-table tr th {
+ font-weight: 900;
+ color: #ffffff;
+ background: #DA2D2D;
+ text-align: center;
+ padding: 0.2em 0.4em;
+}
+
+.clean-table tr th.sub {
+ background: #E65C5C;
+}
+
+.clean-table td{
+ text-align: right;
+ padding: 6px 12px;
+ box-shadow: 1px 0px 0px 0px rgba(90, 90, 90, 0.2);
+}
+
+.mini-table{
+ height: 400px;
+ overflow: auto;
+ display: block;
+}
+
diff --git a/ishtar_common/templates/base.html b/ishtar_common/templates/base.html
index 1a7c8fa54..b601076fe 100644
--- a/ishtar_common/templates/base.html
+++ b/ishtar_common/templates/base.html
@@ -122,6 +122,10 @@
</div>
<div id="progress">
<div id='progress-content'>
+ <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>
</div>
</div>
</body>
diff --git a/ishtar_common/templates/blocks/JQueryAutocomplete.js b/ishtar_common/templates/blocks/JQueryAutocomplete.js
index 16ffef3a0..53a5e18ae 100644
--- a/ishtar_common/templates/blocks/JQueryAutocomplete.js
+++ b/ishtar_common/templates/blocks/JQueryAutocomplete.js
@@ -37,4 +37,10 @@ $(function() {
});
$('#{{item_id}}').change();
{% endfor %}{% endif %}
+
+ $('#id_{{field_id}}').change(function(){
+ $("#id_select_{{field_id}}").attr('title', $('#id_select_{{field_id}}').val());
+ });
+
+ $('#id_{{field_id}}').change();
});
diff --git a/ishtar_common/templates/ishtar/blocks/window_tables/documents.html b/ishtar_common/templates/ishtar/blocks/window_tables/documents.html
index f1592cc42..6d5c1f704 100644
--- a/ishtar_common/templates/ishtar/blocks/window_tables/documents.html
+++ b/ishtar_common/templates/ishtar/blocks/window_tables/documents.html
@@ -1,6 +1,8 @@
{% load i18n %}
-<table class='simple'>
- <caption>{{caption}}</caption>
+<h4>{{caption}}</h4>
+<div class='clean-table'>
+<div class='clean-table-wrap'>
+<table>
<tr>
<th>{% trans "Title" %}</th>
<th>{% trans "Type" %}</th>
@@ -18,4 +20,4 @@
</tr>
{% endfor %}
</table>
-
+</div></div>
diff --git a/ishtar_common/templates/ishtar/blocks/window_tables/static_documents.html b/ishtar_common/templates/ishtar/blocks/window_tables/static_documents.html
index d6686b553..e378bdf49 100644
--- a/ishtar_common/templates/ishtar/blocks/window_tables/static_documents.html
+++ b/ishtar_common/templates/ishtar/blocks/window_tables/static_documents.html
@@ -1,6 +1,8 @@
{% load i18n %}
-
-<table class='simple'>
+<h4>{{caption}}</h4>
+<div class='clean-table'>
+<div class='clean-table-wrap'>
+<table>
<caption>{{caption}}</caption>
<tr>{% for col in col_names %}
<th>{% trans col %}</th>{% endfor %}
@@ -9,3 +11,4 @@
<td>{{value}}</td>{%endfor%}
</tr>{% endfor %}
</table>
+</div></div>
diff --git a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
index 7247a5cda..fd92578a2 100644
--- a/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
+++ b/ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html
@@ -1,4 +1,4 @@
-{% load i18n date_formating %}
+{% load i18n date_formating humanize %}
{% load url from future %}
<div class='dashboard' id="{{unique_id}}-tab">
<div>
@@ -13,7 +13,7 @@
</form>
</div>
{% endif %}
- <p><strong>{% trans "Total:" %}</strong> {{dashboard.total_number}}</p>
+ <p><strong>{% trans "Total:" %}</strong> {{dashboard.total_number|intcomma}}</p>
<div class='table'>
<div id="chart_{{unique_id}}" style="height:400px; width:700px;"></div>
<p class='info-box'><i class="fa fa-info-circle" aria-hidden="true"></i> {% trans 'Draw rectangle on the graph to zoom. Double-click to reinitialize.' %}</p>
@@ -25,8 +25,9 @@
</div>
</div>
</div>
- <div class='table'>
- <table class='resume'>
+ <div class='clean-table'>
+ <div class='clean-table-wrap'>
+ <table>
{% for idx, lbl, values in dashboard.values %}
<tr class='idx {% if forloop.counter0|divisibleby:"2" %}even{%else%}odd{%endif%}'>
<th>{{lbl}}</th>
@@ -35,6 +36,7 @@
{% endfor%}
</table>
</div>
+ </div>
{% if dashboard.periods %}
<h4>{% trans "By years" %}</h4>
<ul>
@@ -55,25 +57,29 @@
<li><strong>{% trans "Mode:" %}</strong> {{dashboard.operation_mode}}</li>
</ul>
{% endif %}
+ <div class='clean-table'>
<h4>{% trans "Created last" %}</h4>
- <div class='table'>
- <table class='resume'>
+ <table>
<tr><th>{{lbl}}</th><th>{% trans "Created" %}</th><th></th></tr>
{% for item in dashboard.lasts %}<tr>
<td class='ref'>{{item}}</td>
<td>{{item.history_date}}</td>
- <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>{%trans "Show"%}</a>{%endif%}</td>
+ <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>
+ <i class="fa fa-info-circle" aria-hidden="true"></i>
+ </a>{%endif%}</td>
</tr>{% endfor %}
</table>
</div>
+ <div class='clean-table'>
<h4>{% trans "Recent changes" %}</h4>
- <div class='table'>
- <table class='resume'>
+ <table>
<tr><th>{{lbl}}</th><th>{% trans "Modified" %}</th><th></th></tr>
{% for item in dashboard.recents %}<tr>
<td class='ref'>{{item}}</td>
<td>{{item.history_date}}</td>
- <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>{%trans "Show"%}</a>{%endif%}</td>
+ <td>{% if item.get_show_url %}<a href="#" onclick='load_window("{{item.get_show_url}}")'>
+ <i class="fa fa-info-circle" aria-hidden="true"></i>
+ </a>{%endif%}</td>
</tr>{% endfor %}
</table>
</div>
diff --git a/ishtar_common/templates/ishtar/import_list.html b/ishtar_common/templates/ishtar/import_list.html
index f5734cf98..55a4ea883 100644
--- a/ishtar_common/templates/ishtar/import_list.html
+++ b/ishtar_common/templates/ishtar/import_list.html
@@ -55,7 +55,7 @@
</tr>
{% endfor %}
</table>
- <input type="submit" value="{% trans "Validate" %}"/>
+ <input type="submit" onclick="long_wait();return true;" value="{% trans "Validate" %}" />
</form>
{% endif %}
</div>
diff --git a/ishtar_common/templatetags/date_formating.py b/ishtar_common/templatetags/date_formating.py
index eb81cf52c..9d4cf74cc 100644
--- a/ishtar_common/templatetags/date_formating.py
+++ b/ishtar_common/templatetags/date_formating.py
@@ -8,12 +8,12 @@ from django.utils.translation import ugettext as _
register = Library()
+
@register.filter
def date_formating(value):
try:
d = datetime.strptime(unicode(value), '%Y-%m-%d')
- return _(d.strftime("%B")).capitalize() + u" %d" % d.year
+ return _(d.strftime("%b")).capitalize() + u" %d" % d.year
except ValueError:
# could be passed to non date value: on error return value
return value
-
diff --git a/ishtar_common/tests.py b/ishtar_common/tests.py
index 5add2e2cf..a4d354eb1 100644
--- a/ishtar_common/tests.py
+++ b/ishtar_common/tests.py
@@ -314,3 +314,13 @@ class IshtarSiteProfileTest(TestCase):
profile.save()
response = c.get(reverse('start'))
self.assertTrue("section-file_management" in response.content)
+
+ def testExternalKey(self):
+ profile = models.get_current_profile()
+ p = models.Person.objects.create(name='plouf', surname=u'Tégada')
+ self.assertEqual(p.raw_name, u"PLOUF Tégada")
+ profile.person_raw_name = u'{surname|slug} {name}'
+ profile.save()
+ p.raw_name = ''
+ p.save()
+ self.assertEqual(p.raw_name, u"tegada plouf")
diff --git a/ishtar_common/utils.py b/ishtar_common/utils.py
index 25ae6ddf5..28b1affa5 100644
--- a/ishtar_common/utils.py
+++ b/ishtar_common/utils.py
@@ -24,7 +24,8 @@ from django.template.defaultfilters import slugify
def get_cache(cls, extra_args=[]):
- cache_key = u"{}-{}".format(settings.PROJECT_SLUG, cls.__name__)
+ cache_key = u"{}-{}-{}".format(
+ settings.PROJECT_SLUG, cls._meta.app_label, cls.__name__)
for arg in extra_args:
if not arg:
cache_key += '-0'