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