diff options
Diffstat (limited to 'ishtar_common')
| -rw-r--r-- | ishtar_common/forms_common.py | 1 | ||||
| -rw-r--r-- | ishtar_common/locale/django.pot | 600 | ||||
| -rw-r--r-- | ishtar_common/migrations/0007_auto__add_field_ishtarsiteprofile_person_raw_name.py | 411 | ||||
| -rw-r--r-- | ishtar_common/models.py | 32 | ||||
| -rw-r--r-- | ishtar_common/static/js/ishtar.js | 22 | ||||
| -rw-r--r-- | ishtar_common/static/media/style.css | 103 | ||||
| -rw-r--r-- | ishtar_common/templates/base.html | 4 | ||||
| -rw-r--r-- | ishtar_common/templates/blocks/JQueryAutocomplete.js | 6 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/blocks/window_tables/documents.html | 8 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/blocks/window_tables/static_documents.html | 7 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/dashboards/dashboard_main_detail.html | 26 | ||||
| -rw-r--r-- | ishtar_common/templates/ishtar/import_list.html | 2 | ||||
| -rw-r--r-- | ishtar_common/templatetags/date_formating.py | 4 | ||||
| -rw-r--r-- | ishtar_common/tests.py | 10 | ||||
| -rw-r--r-- | ishtar_common/utils.py | 3 |
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' |
