diff options
34 files changed, 2921 insertions, 752 deletions
| diff --git a/.gitignore b/.gitignore index 689a051e8..345f3f62a 100644 --- a/.gitignore +++ b/.gitignore @@ -6,6 +6,7 @@ django-formwizard/*  ishtar-docs  ishtar-logo  *.ignore +*.ignore.py  local_settings.py  fabfile.py  example_project/media diff --git a/CHANGES.txt b/CHANGES.txt index d7e88fbe3..532cf4ebc 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,23 @@ +0.93 (2016-04-19) +----------------- + +Major features: +- Many fixes in install script +- New fields for persons +- Better layout for searches + +Minor features: +- Context records: search within relations +- Better management of archaeological sites +- Better display of sheet sources +- Update translations + +Bug fixes: +- Allow simultanaeous creation of operations +- Fix simultanaeous creation of files +- Shortcut list: choices for finds and context records are now kept +- Parcel rearranging on operation form when file exists +  0.92 (2016-02-26)  ----------------- diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index e9b5994eb..5160c1c51 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -59,6 +59,9 @@ class RecordSelect(TableSelect):      datings__period = forms.ChoiceField(label=_(u"Period"), choices=[])      unit = forms.ChoiceField(label=_(u"Unit type"), choices=[])      parcel = ParcelField(label=_(u"Parcel (section/number)")) +    relation_types = forms.MultipleChoiceField( +        label=_(u"Search within relations"), choices=[], +        widget=forms.CheckboxSelectMultiple)      def __init__(self, *args, **kwargs):          super(RecordSelect, self).__init__(*args, **kwargs) @@ -66,12 +69,17 @@ class RecordSelect(TableSelect):          self.fields['datings__period'].help_text = Period.get_help()          self.fields['unit'].choices = models.Unit.get_types()          self.fields['unit'].help_text = models.Unit.get_help() +        self.fields['relation_types'].choices = models.RelationType.get_types( +            empty_first=False)      def get_input_ids(self):          ids = super(RecordSelect, self).get_input_ids()          ids.pop(ids.index('parcel'))          ids.append('parcel_0')          ids.append('parcel_1') +        ids.pop(ids.index('relation_types')) +        for idx, c in enumerate(self.fields['relation_types'].choices): +            ids.append('relation_types_{}'.format(idx))          return ids diff --git a/archaeological_context_records/locale/django.pot b/archaeological_context_records/locale/django.pot index e01054c0d..ed4479963 100644 --- a/archaeological_context_records/locale/django.pot +++ b/archaeological_context_records/locale/django.pot @@ -3,10 +3,11 @@  # This file is distributed under the same license as the Ishtar package.  # Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015.  # Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata  msgid ""  msgstr "" -#: forms.py:45 forms.py:104 models.py:125 +#: forms.py:45 forms.py:112 models.py:125  #: templates/ishtar/sheet_contextrecord.html:72  msgid "ID"  msgstr "" @@ -27,7 +28,7 @@ msgstr ""  msgid "Archaelogical site"  msgstr "" -#: forms.py:59 forms.py:170 models.py:48 +#: forms.py:59 forms.py:178 models.py:48  msgid "Period"  msgstr "" @@ -39,158 +40,162 @@ msgstr ""  msgid "Parcel (section/number)"  msgstr "" -#: forms.py:79 forms.py:266 views.py:78 +#: forms.py:63 +msgid "Search within relations" +msgstr "" + +#: forms.py:87 forms.py:274 views.py:78  msgid "Context record search"  msgstr "" -#: forms.py:93 +#: forms.py:101  msgid "You should at least select one context record."  msgstr "" -#: forms.py:99 +#: forms.py:107  msgid "General"  msgstr "" -#: forms.py:103 models.py:118 models.py:121 +#: forms.py:111 models.py:118 models.py:121  #: templates/ishtar/sheet_contextrecord.html:76  msgid "Parcel"  msgstr "" -#: forms.py:106 models.py:126 templates/ishtar/sheet_contextrecord.html:42 +#: forms.py:114 models.py:126 templates/ishtar/sheet_contextrecord.html:42  #: templates/ishtar/sheet_contextrecord.html:75  msgid "Description"  msgstr "" -#: forms.py:108 models.py:131 +#: forms.py:116 models.py:131  msgid "Length (cm)"  msgstr "" -#: forms.py:109 models.py:132 +#: forms.py:117 models.py:132  msgid "Width (cm)"  msgstr "" -#: forms.py:110 models.py:133 +#: forms.py:118 models.py:133  msgid "Thickness (cm)"  msgstr "" -#: forms.py:111 models.py:135 +#: forms.py:119 models.py:135  msgid "Depth (cm)"  msgstr "" -#: forms.py:112 models.py:141 +#: forms.py:120 models.py:141  msgid "Unit"  msgstr "" -#: forms.py:114 models.py:137 +#: forms.py:122 models.py:137  msgid "Location"  msgstr "" -#: forms.py:159 +#: forms.py:167  msgid "This ID already exists for this operation."  msgstr "" -#: forms.py:165 forms.py:189 models.py:59 +#: forms.py:173 forms.py:197 models.py:59  msgid "Dating"  msgstr "" -#: forms.py:171 models.py:49 +#: forms.py:179 models.py:49  msgid "Start date"  msgstr "" -#: forms.py:172 models.py:50 models.py:130 +#: forms.py:180 models.py:50 models.py:130  msgid "End date"  msgstr "" -#: forms.py:173 models.py:53 +#: forms.py:181 models.py:53  msgid "Quality"  msgstr "" -#: forms.py:174 models.py:35 models.py:51 +#: forms.py:182 models.py:35 models.py:51  msgid "Dating type"  msgstr "" -#: forms.py:198 ishtar_menu.py:29 models.py:321 +#: forms.py:206 ishtar_menu.py:29 models.py:321  msgid "Context record"  msgstr "" -#: forms.py:218 +#: forms.py:226  msgid "Relations"  msgstr "" -#: forms.py:222 forms.py:229 models.py:146 +#: forms.py:230 forms.py:237 models.py:146  #: templates/ishtar/sheet_contextrecord.html:52  msgid "Interpretation"  msgstr "" -#: forms.py:225 models.py:143 +#: forms.py:233 models.py:143  msgid "Has furniture?"  msgstr "" -#: forms.py:227 models.py:145 +#: forms.py:235 models.py:145  msgid "Filling"  msgstr "" -#: forms.py:231 models.py:166 +#: forms.py:239 models.py:166  msgid "Activity"  msgstr "" -#: forms.py:233 models.py:164 +#: forms.py:241 models.py:164  msgid "Identification"  msgstr "" -#: forms.py:235 models.py:149 +#: forms.py:243 models.py:149  msgid "TAQ"  msgstr "" -#: forms.py:236 models.py:153 +#: forms.py:244 models.py:153  msgid "Estimated TAQ"  msgstr "" -#: forms.py:238 models.py:156 +#: forms.py:246 models.py:156  msgid "TPQ"  msgstr "" -#: forms.py:239 models.py:160 +#: forms.py:247 models.py:160  msgid "Estimated TPQ"  msgstr "" -#: forms.py:252 +#: forms.py:260  msgid "Operation search"  msgstr "" -#: forms.py:254 +#: forms.py:262  msgid "You should select an operation."  msgstr "" -#: forms.py:259 +#: forms.py:267  msgid "Would you like to delete this context record?"  msgstr "" -#: forms.py:268 +#: forms.py:276  msgid "You should select a context record."  msgstr "" -#: forms.py:273 +#: forms.py:281  msgid "Town of the operation"  msgstr "" -#: forms.py:275 +#: forms.py:283  msgid "Year of the operation"  msgstr "" -#: forms.py:277 +#: forms.py:285  msgid "Period of the context record"  msgstr "" -#: forms.py:279 +#: forms.py:287  msgid "Unit type of the context record"  msgstr "" -#: forms.py:292 +#: forms.py:300  msgid "Documentation search"  msgstr "" -#: forms.py:294 +#: forms.py:302  msgid "You should select a document."  msgstr "" diff --git a/archaeological_files/wizards.py b/archaeological_files/wizards.py index 6e1e3ba03..ea06a48f7 100644 --- a/archaeological_files/wizards.py +++ b/archaeological_files/wizards.py @@ -50,13 +50,25 @@ class FileWizard(OperationWizard):      def done(self, form_list, **kwargs):          ''' -        Save parcels +        Save parcels and make numeric_reference unique          '''          r = super(FileWizard, self).done(form_list, return_object=True,                                           **kwargs)          if type(r) not in (list, tuple) or len(r) != 2:              return r          obj, res = r +        # numeric_reference check +        if not self.modification: +            numeric_reference = obj.numeric_reference +            changed = False +            while obj.__class__.objects.filter( +                    numeric_reference=numeric_reference, +                    year=obj.year).exclude(pk=obj.pk).count(): +                numeric_reference += 1 +                changed = True +            if changed: +                obj.numeric_reference = numeric_reference +                obj.save()          obj.parcels.clear()          for form in form_list:              if not hasattr(form, 'prefix') \ diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 6ef3d5a21..49824e24a 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -950,7 +950,6 @@ class SelectedParcelFormSet(forms.Form):      def __init__(self, *args, **kwargs):          parcels = None -        print(kwargs)          if 'data' in kwargs and 'PARCELS' in kwargs['data']:              parcels = kwargs['data']['PARCELS']              # clean data if not "real" data diff --git a/archaeological_operations/locale/django.pot b/archaeological_operations/locale/django.pot index 969d77335..eafb651cf 100644 --- a/archaeological_operations/locale/django.pot +++ b/archaeological_operations/locale/django.pot @@ -8,12 +8,12 @@  msgid ""  msgstr "" -#: forms.py:66 forms.py:333 forms.py:903 forms.py:925 forms.py:929 +#: forms.py:66 forms.py:344 forms.py:914 forms.py:936 forms.py:940  #: models.py:782 templates/ishtar/blocks/window_tables/parcels.html:8  msgid "Parcels"  msgstr "" -#: forms.py:69 forms.py:185 forms.py:879 models.py:772 +#: forms.py:69 forms.py:185 forms.py:890 models.py:772  #: templates/ishtar/blocks/window_tables/parcels.html:5  #: templates/ishtar/dashboards/dashboard_operation.html:302  #: templates/ishtar/dashboards/dashboard_operation.html:315 @@ -22,7 +22,7 @@ msgstr ""  msgid "Town"  msgstr "" -#: forms.py:71 forms.py:422 forms.py:693 forms.py:1111 models.py:158 +#: forms.py:71 forms.py:433 forms.py:704 forms.py:1147 models.py:158  #: models.py:589 models.py:770  #: templates/ishtar/blocks/window_tables/parcels.html:6  msgid "Year" @@ -57,53 +57,53 @@ msgstr ""  msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""  msgstr "" -#: forms.py:327 +#: forms.py:338  msgid "There are identical parcels."  msgstr "" -#: forms.py:342 +#: forms.py:353  msgid "Relation type"  msgstr "" -#: forms.py:345 ishtar_menu.py:30 models.py:237 models.py:490 models.py:515 +#: forms.py:356 ishtar_menu.py:30 models.py:237 models.py:490 models.py:515  #: models.py:530 models.py:581 models.py:769 wizards.py:338 wizards.py:349  #: templates/ishtar/sheet_operation.html:6  msgid "Operation"  msgstr "" -#: forms.py:364 +#: forms.py:375  msgid ":"  msgstr "" -#: forms.py:372 forms.py:548 forms.py:1083 +#: forms.py:383 forms.py:559 forms.py:1119  msgid "You should select an operation."  msgstr "" -#: forms.py:376 +#: forms.py:387  msgid "You should select a relation type."  msgstr "" -#: forms.py:406 +#: forms.py:417  msgid "Current relations"  msgstr "" -#: forms.py:408 +#: forms.py:419  msgid "Deleted relations"  msgstr "" -#: forms.py:412 templates/ishtar/sheet_operation.html:115 +#: forms.py:423 templates/ishtar/sheet_operation.html:115  msgid "Relations"  msgstr "" -#: forms.py:423 +#: forms.py:434  msgid "Numeric reference"  msgstr "" -#: forms.py:428 forms.py:1121 +#: forms.py:439 forms.py:1157  msgid "Parcel (section/number)"  msgstr "" -#: forms.py:431 forms.py:1124 models.py:491 +#: forms.py:442 forms.py:1160 models.py:491  #: templates/ishtar/dashboards/dashboard_operation.html:273  #: templates/ishtar/dashboards/dashboard_operation.html:286  #: templates/ishtar/dashboards/dashboard_operation.html:453 @@ -111,389 +111,389 @@ msgstr ""  msgid "Department"  msgstr "" -#: forms.py:432 forms.py:964 models.py:77 +#: forms.py:443 forms.py:1000 models.py:77  #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6  msgid "Name"  msgstr "" -#: forms.py:434 forms.py:615 forms.py:691 forms.py:1088 models.py:166 +#: forms.py:445 forms.py:626 forms.py:702 forms.py:1124 models.py:166  msgid "Operation type"  msgstr "" -#: forms.py:436 +#: forms.py:447  msgid "Is open?"  msgstr "" -#: forms.py:445 forms.py:717 models.py:155 +#: forms.py:456 forms.py:728 models.py:155  msgid "In charge"  msgstr "" -#: forms.py:452 models.py:575 +#: forms.py:463 models.py:575  msgid "Scientist in charge"  msgstr "" -#: forms.py:454 forms.py:617 forms.py:708 models.py:153 +#: forms.py:465 forms.py:628 forms.py:719 models.py:153  msgid "Operator"  msgstr "" -#: forms.py:461 forms.py:969 models.py:81 models.py:168 +#: forms.py:472 forms.py:1005 models.py:81 models.py:168  #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8  msgid "Remains"  msgstr "" -#: forms.py:462 forms.py:948 forms.py:966 models.py:79 models.py:173 +#: forms.py:473 forms.py:984 forms.py:1002 models.py:79 models.py:173  #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7  msgid "Periods"  msgstr "" -#: forms.py:463 +#: forms.py:474  msgid "Started before"  msgstr "" -#: forms.py:465 +#: forms.py:476  msgid "Started after"  msgstr "" -#: forms.py:467 +#: forms.py:478  msgid "Ended before"  msgstr "" -#: forms.py:469 +#: forms.py:480  msgid "Ended after"  msgstr "" -#: forms.py:472 +#: forms.py:483  msgid "Search within relations"  msgstr "" -#: forms.py:474 forms.py:759 models.py:219 +#: forms.py:485 forms.py:770 models.py:219  msgid "Comment"  msgstr "" -#: forms.py:475 +#: forms.py:486  msgid "Abstract (full text search)"  msgstr "" -#: forms.py:476 forms.py:761 models.py:231 +#: forms.py:487 forms.py:772 models.py:231  msgid "Record quality"  msgstr "" -#: forms.py:477 forms.py:740 models.py:185 +#: forms.py:488 forms.py:751 models.py:185  msgid "Report processing"  msgstr "" -#: forms.py:479 forms.py:764 models.py:226 +#: forms.py:490 forms.py:775 models.py:226  msgid "Virtual operation"  msgstr "" -#: forms.py:481 forms.py:1009 +#: forms.py:492 forms.py:1045  msgid "Archaelogical site"  msgstr "" -#: forms.py:487 forms.py:1128 +#: forms.py:498 forms.py:1164  msgid "Created by"  msgstr "" -#: forms.py:493 forms.py:1134 +#: forms.py:504 forms.py:1170  msgid "Modified by"  msgstr "" -#: forms.py:535 forms.py:1081 views.py:231 +#: forms.py:546 forms.py:1117 views.py:231  msgid "Operation search"  msgstr "" -#: forms.py:579 +#: forms.py:590  msgid "Associated file"  msgstr "" -#: forms.py:583 forms.py:827 models.py:586 wizards.py:76 +#: forms.py:594 forms.py:838 models.py:586 wizards.py:76  msgid "Archaelogical file"  msgstr "" -#: forms.py:590 forms.py:592 models.py:233 +#: forms.py:601 forms.py:603 models.py:233  msgid "Abstract"  msgstr "" -#: forms.py:595 +#: forms.py:606  msgid "months"  msgstr "" -#: forms.py:595 +#: forms.py:606  msgid "years"  msgstr "" -#: forms.py:597 models.py:139 +#: forms.py:608 models.py:139  msgid "Creation date"  msgstr "" -#: forms.py:598 +#: forms.py:609  msgid "Start of field work"  msgstr "" -#: forms.py:600 +#: forms.py:611  msgid "All"  msgstr "" -#: forms.py:601 +#: forms.py:612  msgid "Preventive"  msgstr "" -#: forms.py:602 +#: forms.py:613  msgid "Research"  msgstr "" -#: forms.py:606 +#: forms.py:617  msgid "Slicing"  msgstr "" -#: forms.py:609 +#: forms.py:620  msgid "Department detail"  msgstr "" -#: forms.py:611 +#: forms.py:622  msgid "Date get from"  msgstr "" -#: forms.py:613 +#: forms.py:624  msgid "Preventive/Research"  msgstr "" -#: forms.py:619 +#: forms.py:630  msgid "Date after"  msgstr "" -#: forms.py:621 +#: forms.py:632  msgid "Date before"  msgstr "" -#: forms.py:623 +#: forms.py:634  msgid "With reports"  msgstr "" -#: forms.py:624 +#: forms.py:635  msgid "With finds"  msgstr "" -#: forms.py:676 forms.py:1181 templates/ishtar/sheet_administrativeact.html:11 +#: forms.py:687 forms.py:1217 templates/ishtar/sheet_administrativeact.html:11  #: templates/ishtar/sheet_operation.html:32  msgid "General"  msgstr "" -#: forms.py:689 models.py:218 +#: forms.py:700 models.py:218  msgid "Generic name"  msgstr "" -#: forms.py:698 +#: forms.py:709  msgid "Head scientist"  msgstr "" -#: forms.py:714 models.py:217 +#: forms.py:725 models.py:217  msgid "Operator reference"  msgstr "" -#: forms.py:726 +#: forms.py:737  msgid "Total surface (m2)"  msgstr "" -#: forms.py:733 models.py:49 models.py:142 models.py:940 +#: forms.py:744 models.py:49 models.py:142 models.py:940  msgid "Start date"  msgstr "" -#: forms.py:735 models.py:144 +#: forms.py:746 models.py:144  msgid "Excavation end date"  msgstr "" -#: forms.py:738 models.py:145 +#: forms.py:749 models.py:145  msgid "Report delivery date"  msgstr "" -#: forms.py:791 +#: forms.py:802  msgid ""  "If you want to set an excavation end date you have to provide a start date."  msgstr "" -#: forms.py:796 +#: forms.py:807  msgid "The excavation end date cannot be before the start date."  msgstr "" -#: forms.py:813 +#: forms.py:824  #, python-format  msgid ""  "Operation code already exist for year: %(year)d - use a value bigger than "  "%(last_val)d"  msgstr "" -#: forms.py:817 +#: forms.py:828  msgid "Bad operation code"  msgstr "" -#: forms.py:823 models.py:159 models.py:368 +#: forms.py:834 models.py:159 models.py:368  msgid "Operation code"  msgstr "" -#: forms.py:849 +#: forms.py:860  msgid "Preventive informations - excavation"  msgstr "" -#: forms.py:850 models.py:171 +#: forms.py:861 models.py:171  #: templates/ishtar/dashboards/dashboard_operation.html:495  msgid "Cost (euros)"  msgstr "" -#: forms.py:851 models.py:176 +#: forms.py:862 models.py:176  msgid "Scheduled man-days"  msgstr "" -#: forms.py:853 models.py:179 +#: forms.py:864 models.py:179  msgid "Optional man-days"  msgstr "" -#: forms.py:855 models.py:182 +#: forms.py:866 models.py:182  msgid "Effective man-days"  msgstr "" -#: forms.py:865 +#: forms.py:876  msgid "Preventive informations - diagnostic"  msgstr "" -#: forms.py:868 models.py:201 +#: forms.py:879 models.py:201  msgid "Prescription on zoning"  msgstr "" -#: forms.py:870 models.py:204 +#: forms.py:881 models.py:204  msgid "Prescription on large area"  msgstr "" -#: forms.py:873 models.py:206 +#: forms.py:884 models.py:206  msgid "Prescription on geoarchaeological context"  msgstr "" -#: forms.py:877 forms.py:899 models.py:170 models.py:599 +#: forms.py:888 forms.py:910 models.py:170 models.py:599  msgid "Towns"  msgstr "" -#: forms.py:906 models.py:781 models.py:938 +#: forms.py:917 models.py:781 models.py:938  msgid "Parcel"  msgstr "" -#: forms.py:933 models.py:43 +#: forms.py:969 models.py:43  msgid "Remain types"  msgstr "" -#: forms.py:937 models.py:42 +#: forms.py:973 models.py:42  msgid "Remain type"  msgstr "" -#: forms.py:952 +#: forms.py:988  msgid "Period"  msgstr "" -#: forms.py:963 models.py:76 +#: forms.py:999 models.py:76  msgid "Reference"  msgstr "" -#: forms.py:988 +#: forms.py:1024  msgid "This reference already exists."  msgstr "" -#: forms.py:1005 models.py:85 +#: forms.py:1041 models.py:85  msgid "Archaeological site"  msgstr "" -#: forms.py:1020 models.py:86 models.py:223 +#: forms.py:1056 models.py:86 models.py:223  #: templates/ishtar/sheet_operation.html:126  msgid "Archaeological sites"  msgstr "" -#: forms.py:1024 +#: forms.py:1060  msgid "Associated archaelogical sites"  msgstr "" -#: forms.py:1030 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 +#: forms.py:1066 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92  msgid "Search"  msgstr "" -#: forms.py:1035 +#: forms.py:1071  msgid "Would you like to close this operation?"  msgstr "" -#: forms.py:1040 +#: forms.py:1076  msgid "Would you like to delete this operation?"  msgstr "" -#: forms.py:1049 forms.py:1112 models.py:517 models.py:566 +#: forms.py:1085 forms.py:1148 models.py:517 models.py:566  msgid "Index"  msgstr "" -#: forms.py:1075 +#: forms.py:1111  #, python-format  msgid ""  "Index already exists for operation: %(operation)s - use a value bigger than "  "%(last_val)d"  msgstr "" -#: forms.py:1087 +#: forms.py:1123  msgid "Operation's town"  msgstr "" -#: forms.py:1090 +#: forms.py:1126  msgid "Operation's year"  msgstr "" -#: forms.py:1101 +#: forms.py:1137  msgid "Documentation search"  msgstr "" -#: forms.py:1103 +#: forms.py:1139  msgid "You should select a document."  msgstr "" -#: forms.py:1118 forms.py:1184 models.py:541 models.py:560 +#: forms.py:1154 forms.py:1220 models.py:541 models.py:560  msgid "Act type"  msgstr "" -#: forms.py:1119 forms.py:1272 +#: forms.py:1155 forms.py:1308  msgid "Indexed?"  msgstr "" -#: forms.py:1125 forms.py:1189 models.py:590 +#: forms.py:1161 forms.py:1225 models.py:590  #: templates/ishtar/blocks/window_tables/administrativacts.html:8  msgid "Object"  msgstr "" -#: forms.py:1161 views.py:373 +#: forms.py:1197 views.py:373  msgid "Administrative act search"  msgstr "" -#: forms.py:1176 forms.py:1230 forms.py:1297 +#: forms.py:1212 forms.py:1266 forms.py:1333  msgid "You should select an administrative act."  msgstr "" -#: forms.py:1192 models.py:587 +#: forms.py:1228 models.py:587  msgid "Signature date"  msgstr "" -#: forms.py:1207 +#: forms.py:1243  msgid "Would you like to delete this administrative act?"  msgstr "" -#: forms.py:1212 +#: forms.py:1248  msgid "Template"  msgstr "" -#: forms.py:1236 forms.py:1240 +#: forms.py:1272 forms.py:1276  msgid "This document is not intended for this type of act."  msgstr "" -#: forms.py:1258 +#: forms.py:1294  msgid "Doc generation"  msgstr "" -#: forms.py:1260 +#: forms.py:1296  msgid "Generate the associated doc?"  msgstr "" -#: forms.py:1281 ishtar_menu.py:121 views.py:407 +#: forms.py:1317 ishtar_menu.py:121 views.py:407  msgctxt "admin act register"  msgid "Register"  msgstr "" diff --git a/archaeological_operations/migrations/0003_auto__chg_field_historicaloperation_code_dracar__chg_field_operation_c.py b/archaeological_operations/migrations/0003_auto__chg_field_historicaloperation_code_dracar__chg_field_operation_c.py new file mode 100644 index 000000000..be0bd1b4b --- /dev/null +++ b/archaeological_operations/migrations/0003_auto__chg_field_historicaloperation_code_dracar__chg_field_operation_c.py @@ -0,0 +1,628 @@ +# -*- 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): + +        # Changing field 'HistoricalOperation.code_dracar' +        db.alter_column('archaeological_operations_historicaloperation', 'code_dracar', self.gf('django.db.models.fields.CharField')(max_length=200, null=True)) + +        # Changing field 'Operation.code_dracar' +        db.alter_column('archaeological_operations_operation', 'code_dracar', self.gf('django.db.models.fields.CharField')(max_length=200, null=True)) + +    def backwards(self, orm): + +        # Changing field 'HistoricalOperation.code_dracar' +        db.alter_column('archaeological_operations_historicaloperation', 'code_dracar', self.gf('django.db.models.fields.CharField')(max_length=10, null=True)) + +        # Changing field 'Operation.code_dracar' +        db.alter_column('archaeological_operations_operation', 'code_dracar', self.gf('django.db.models.fields.CharField')(max_length=10, null=True)) + +    models = { +        'archaeological_files.file': { +            'Meta': {'ordering': "('cached_label',)", 'object_name': 'File'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'cached_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'cira_advised': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'classified_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'corporation_general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today', 'null': 'True', 'blank': 'True'}), +            'departments': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '120', 'null': 'True', 'blank': 'True'}), +            'file_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.FileType']"}), +            'general_contractor': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'general_contractor_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            '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'}), +            'imported_line': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'imports': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'imported_archaeological_files_file'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'instruction_deadline': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '60', 'null': 'True', 'blank': 'True'}), +            'locality': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'main_town': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'file_main'", 'null': 'True', 'to': "orm['ishtar_common.Town']"}), +            'mh_listing': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'mh_register': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'numeric_reference': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'organization': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'permit_reference': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'permit_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.PermitType']", 'null': 'True', 'blank': 'True'}), +            'planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'postal_code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'protected_area': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'raw_general_contractor': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'raw_town_planning_service': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'reception_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'related_file': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.File']", 'null': 'True', 'blank': 'True'}), +            'requested_operation_type': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'to': "orm['ishtar_common.OperationType']"}), +            'research_comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'responsible_town_planning_service': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsible_town_planning_service_files'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'saisine_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_files.SaisineType']", 'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'total_developed_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'total_surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'file'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Town']"}), +            'year': ('django.db.models.fields.IntegerField', [], {'default': '2016'}) +        }, +        'archaeological_files.filetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'FileType'}, +            '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'}) +        }, +        'archaeological_files.permittype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'PermitType'}, +            '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'}) +        }, +        'archaeological_files.saisinetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'SaisineType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'delay': ('django.db.models.fields.IntegerField', [], {'default': '30'}), +            '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'}) +        }, +        'archaeological_operations.acttype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'ActType'}, +            'associated_template': ('django.db.models.fields.related.ManyToManyField', [], {'blank': 'True', 'related_name': "'acttypes'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.DocumentTemplate']"}), +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'code': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'indexed': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'intented_to': ('django.db.models.fields.CharField', [], {'max_length': '1'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.administrativeact': { +            'Meta': {'ordering': "('year', 'signature_date', 'index', 'act_type')", 'object_name': 'AdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ActType']"}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            'departments_label': ('django.db.models.fields.TextField', [], {'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_archaeological_operations_administrativeact'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operation_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'administrative_act'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}), +            'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'adminact_scientist'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signatory': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'signatory'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.archaeologicalsite': { +            'Meta': {'object_name': 'ArchaeologicalSite'}, +            '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_archaeological_operations_archaeologicalsite'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '20'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.historicaladministrativeact': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalAdministrativeAct'}, +            'act_object': ('django.db.models.fields.TextField', [], {'max_length': '300', 'null': 'True', 'blank': 'True'}), +            'act_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'departments_label': ('django.db.models.fields.TextField', [], {'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'}), +            'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'ref_sra': ('django.db.models.fields.CharField', [], {'max_length': '15', 'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'signatory_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'signature_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'towns_label': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.historicaloperation': { +            'Meta': {'ordering': "('-history_date', '-history_id')", 'object_name': 'HistoricalOperation'}, +            'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_file_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'cira_rapporteur_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'code_patriarche': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}), +            'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), +            'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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'}), +            'in_charge_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation_type_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'operator_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), +            'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist_id': ('django.db.models.fields.IntegerField', [], {'db_index': 'True', 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.operation': { +            'Meta': {'ordering': "('cached_label',)", 'object_name': 'Operation'}, +            'abstract': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'archaeological_sites': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.ArchaeologicalSite']", 'null': 'True', 'blank': 'True'}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operations'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            'cached_label': ('django.db.models.fields.CharField', [], {'max_length': '500', 'null': 'True', 'blank': 'True'}), +            'cira_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'cira_rapporteur': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'cira_rapporteur'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'code_dracar': ('django.db.models.fields.CharField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'code_patriarche': ('django.db.models.fields.IntegerField', [], {'unique': 'True', 'null': 'True', 'blank': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'common_name': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'creation_date': ('django.db.models.fields.DateField', [], {'default': 'datetime.date.today'}), +            'eas_number': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), +            'effective_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'excavation_end_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'fnap_cost': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'fnap_financing': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}), +            'geoarchaeological_context_prescription': ('django.db.models.fields.NullBooleanField', [], {'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_archaeological_operations_operation'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'large_area_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'negative_result': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}), +            'operation_code': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'operation_type': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['ishtar_common.OperationType']"}), +            'operator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operator'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Organization']"}), +            'operator_reference': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}), +            'optional_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'periods': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'record_quality': ('django.db.models.fields.CharField', [], {'max_length': '2', 'null': 'True', 'blank': 'True'}), +            'remains': ('django.db.models.fields.related.ManyToManyField', [], {'symmetrical': 'False', 'to': "orm['archaeological_operations.RemainType']", 'null': 'True', 'blank': 'True'}), +            'report_delivery_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'report_processing': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.ReportState']", 'null': 'True', 'blank': 'True'}), +            'scheduled_man_days': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'scientist': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'operation_scientist_responsability'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            'start_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'surface': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'towns': ('django.db.models.fields.related.ManyToManyField', [], {'to': "orm['ishtar_common.Town']", 'symmetrical': 'False'}), +            'virtual_operation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'zoning_prescription': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.operationbydepartment': { +            'Meta': {'object_name': 'OperationByDepartment', 'db_table': "'operation_department'", 'managed': 'False'}, +            'department': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Department']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Operation']"}) +        }, +        'archaeological_operations.operationsource': { +            'Meta': {'object_name': 'OperationSource'}, +            'additional_information': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_url': ('django.db.models.fields.URLField', [], {'max_length': '200', 'null': 'True', 'blank': 'True'}), +            'authors': ('django.db.models.fields.related.ManyToManyField', [], {'related_name': "'operationsource_related'", 'symmetrical': 'False', 'to': "orm['ishtar_common.Author']"}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'creation_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'duplicate': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '12', 'null': 'True', 'blank': 'True'}), +            'format_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.Format']", 'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'index': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'internal_reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'item_number': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'source'", 'to': "orm['archaeological_operations.Operation']"}), +            'receipt_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'receipt_date_in_documentation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'max_length': '100', 'null': 'True', 'blank': 'True'}), +            'scale': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}), +            'source_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SourceType']"}), +            'support_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['ishtar_common.SupportType']", 'null': 'True', 'blank': 'True'}), +            'title': ('django.db.models.fields.CharField', [], {'max_length': '300'}) +        }, +        'archaeological_operations.operationtypeold': { +            'Meta': {'ordering': "['-preventive', 'order', 'label']", 'object_name': 'OperationTypeOld'}, +            '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'}) +        }, +        'archaeological_operations.parcel': { +            'Meta': {'ordering': "('year', 'section', 'parcel_number')", 'object_name': 'Parcel'}, +            'address': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'associated_file': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_files.File']"}), +            'external_id': ('django.db.models.fields.CharField', [], {'max_length': '100', '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_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            '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_archaeological_operations_parcel'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'operation': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'parcels'", 'null': 'True', 'to': "orm['archaeological_operations.Operation']"}), +            'parcel_number': ('django.db.models.fields.CharField', [], {'max_length': '6', 'null': 'True', 'blank': 'True'}), +            'section': ('django.db.models.fields.CharField', [], {'max_length': '4'}), +            'town': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcels'", 'to': "orm['ishtar_common.Town']"}), +            'year': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_operations.parcelowner': { +            'Meta': {'object_name': 'ParcelOwner'}, +            'end_date': ('django.db.models.fields.DateField', [], {}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            '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_archaeological_operations_parcelowner'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'owner': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'parcel_owner'", 'to': "orm['ishtar_common.Person']"}), +            'parcel': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'owners'", 'to': "orm['archaeological_operations.Parcel']"}), +            'start_date': ('django.db.models.fields.DateField', [], {}) +        }, +        'archaeological_operations.period': { +            'Meta': {'ordering': "('order',)", 'object_name': 'Period'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'end_date': ('django.db.models.fields.IntegerField', [], {}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {}), +            'parent': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.Period']", 'null': 'True', 'blank': 'True'}), +            'start_date': ('django.db.models.fields.IntegerField', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.recordrelations': { +            'Meta': {'ordering': "('left_record', 'relation_type')", 'object_name': 'RecordRelations'}, +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'left_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'right_relations'", 'to': "orm['archaeological_operations.Operation']"}), +            'relation_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.RelationType']"}), +            'right_record': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'left_relations'", 'to': "orm['archaeological_operations.Operation']"}) +        }, +        'archaeological_operations.relationtype': { +            'Meta': {'ordering': "('order',)", 'object_name': 'RelationType'}, +            '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'}), +            'inverse_relation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_operations.RelationType']", 'null': 'True', 'blank': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'order': ('django.db.models.fields.IntegerField', [], {'default': '1'}), +            'symmetrical': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        'archaeological_operations.remaintype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'RemainType'}, +            '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'}) +        }, +        'archaeological_operations.reportstate': { +            'Meta': {'ordering': "('order',)", 'object_name': 'ReportState'}, +            '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', [], {}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}) +        }, +        '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.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.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.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.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.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.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 = ['archaeological_operations']
\ No newline at end of file diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index d0a010d6a..253ea7635 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -188,7 +188,7 @@ class Operation(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem,          code_patriarche = models.IntegerField(u"Code PATRIARCHE", null=True,                                                blank=True, unique=True)          TABLE_COLS = ['full_code_patriarche'] + TABLE_COLS -        code_dracar = models.CharField(u"Code DRACAR", max_length=10, +        code_dracar = models.CharField(u"Code DRACAR", max_length=200,                                         null=True, blank=True)          # preventive          fnap_financing = models.FloatField(u"Financement FNAP (%)", diff --git a/archaeological_warehouse/migrations/0002_auto__add_field_warehouse_alt_address__add_field_warehouse_alt_address.py b/archaeological_warehouse/migrations/0002_auto__add_field_warehouse_alt_address__add_field_warehouse_alt_address.py new file mode 100644 index 000000000..611ed4ebb --- /dev/null +++ b/archaeological_warehouse/migrations/0002_auto__add_field_warehouse_alt_address__add_field_warehouse_alt_address.py @@ -0,0 +1,342 @@ +# -*- 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 'Warehouse.alt_address' +        db.add_column('archaeological_warehouse_warehouse', 'alt_address', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.alt_address_complement' +        db.add_column('archaeological_warehouse_warehouse', 'alt_address_complement', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.alt_postal_code' +        db.add_column('archaeological_warehouse_warehouse', 'alt_postal_code', +                      self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.alt_town' +        db.add_column('archaeological_warehouse_warehouse', 'alt_town', +                      self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.alt_country' +        db.add_column('archaeological_warehouse_warehouse', 'alt_country', +                      self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.phone_desc' +        db.add_column('archaeological_warehouse_warehouse', 'phone_desc', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.phone2' +        db.add_column('archaeological_warehouse_warehouse', 'phone2', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.phone_desc2' +        db.add_column('archaeological_warehouse_warehouse', 'phone_desc2', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.phone3' +        db.add_column('archaeological_warehouse_warehouse', 'phone3', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.phone_desc3' +        db.add_column('archaeological_warehouse_warehouse', 'phone_desc3', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.raw_phone' +        db.add_column('archaeological_warehouse_warehouse', 'raw_phone', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Warehouse.alt_address_is_prefered' +        db.add_column('archaeological_warehouse_warehouse', 'alt_address_is_prefered', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'Warehouse.email' +        db.alter_column('archaeological_warehouse_warehouse', 'email', self.gf('django.db.models.fields.EmailField')(max_length=300, null=True)) + +    def backwards(self, orm): +        # Deleting field 'Warehouse.alt_address' +        db.delete_column('archaeological_warehouse_warehouse', 'alt_address') + +        # Deleting field 'Warehouse.alt_address_complement' +        db.delete_column('archaeological_warehouse_warehouse', 'alt_address_complement') + +        # Deleting field 'Warehouse.alt_postal_code' +        db.delete_column('archaeological_warehouse_warehouse', 'alt_postal_code') + +        # Deleting field 'Warehouse.alt_town' +        db.delete_column('archaeological_warehouse_warehouse', 'alt_town') + +        # Deleting field 'Warehouse.alt_country' +        db.delete_column('archaeological_warehouse_warehouse', 'alt_country') + +        # Deleting field 'Warehouse.phone_desc' +        db.delete_column('archaeological_warehouse_warehouse', 'phone_desc') + +        # Deleting field 'Warehouse.phone2' +        db.delete_column('archaeological_warehouse_warehouse', 'phone2') + +        # Deleting field 'Warehouse.phone_desc2' +        db.delete_column('archaeological_warehouse_warehouse', 'phone_desc2') + +        # Deleting field 'Warehouse.phone3' +        db.delete_column('archaeological_warehouse_warehouse', 'phone3') + +        # Deleting field 'Warehouse.phone_desc3' +        db.delete_column('archaeological_warehouse_warehouse', 'phone_desc3') + +        # Deleting field 'Warehouse.raw_phone' +        db.delete_column('archaeological_warehouse_warehouse', 'raw_phone') + +        # Deleting field 'Warehouse.alt_address_is_prefered' +        db.delete_column('archaeological_warehouse_warehouse', 'alt_address_is_prefered') + + +        # Changing field 'Warehouse.email' +        db.alter_column('archaeological_warehouse_warehouse', 'email', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True)) + +    models = { +        'archaeological_warehouse.container': { +            'Meta': {'object_name': 'Container'}, +            'comment': ('django.db.models.fields.TextField', [], {}), +            'container_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.ContainerType']"}), +            'history_creator': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'+'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['auth.User']"}), +            'history_date': ('django.db.models.fields.DateTimeField', [], {'default': 'datetime.datetime.now'}), +            '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_archaeological_warehouse_container'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'location': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.Warehouse']"}), +            'reference': ('django.db.models.fields.CharField', [], {'max_length': '40'}) +        }, +        'archaeological_warehouse.containertype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'ContainerType'}, +            'available': ('django.db.models.fields.BooleanField', [], {'default': 'True'}), +            'comment': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'height': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.CharField', [], {'max_length': '100'}), +            'length': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'reference': ('django.db.models.fields.CharField', [], {'max_length': '30'}), +            'txt_idx': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '100'}), +            'volume': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}), +            'width': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}) +        }, +        'archaeological_warehouse.warehouse': { +            'Meta': {'object_name': 'Warehouse'}, +            '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'}), +            'comment': ('django.db.models.fields.TextField', [], {'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_archaeological_warehouse_warehouse'", 'null': 'True', 'symmetrical': 'False', 'to': "orm['ishtar_common.Import']"}), +            'mobile_phone': ('django.db.models.fields.CharField', [], {'max_length': '18', 'null': 'True', 'blank': 'True'}), +            'name': ('django.db.models.fields.CharField', [], {'max_length': '40'}), +            'person_in_charge': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'warehouse_in_charge'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': "orm['ishtar_common.Person']"}), +            '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'}), +            'warehouse_type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['archaeological_warehouse.WarehouseType']"}) +        }, +        'archaeological_warehouse.warehousetype': { +            'Meta': {'ordering': "('label',)", 'object_name': 'WarehouseType'}, +            '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'}) +        }, +        '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.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.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.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.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'}) +        } +    } + +    complete_apps = ['archaeological_warehouse']
\ No newline at end of file diff --git a/example_project/settings.py b/example_project/settings.py index 88738b479..8136fb81f 100644 --- a/example_project/settings.py +++ b/example_project/settings.py @@ -9,6 +9,7 @@ DEBUG = False  DEBUG_TOOLBAR = False  TEMPLATE_DEBUG = DEBUG  SQL_DEBUG = False +DJANGO_EXTENSIONS = False  if "test" in sys.argv:      sys.path.insert(0, '..') @@ -138,7 +139,6 @@ INSTALLED_APPS = [      'archaeological_context_records',      'archaeological_warehouse',      'archaeological_finds', -    # 'django_extensions',      # 'debug_toolbar',  ] @@ -235,6 +235,8 @@ INTERNAL_IPS = ('127.0.0.1',)  JQUERY_URL = STATIC_URL + "js/jquery.min.js"  JQUERY_UI_URL = STATIC_URL + "js/jquery-ui/" +if DJANGO_EXTENSIONS: +    INSTALLED_APPS.append('django_extensions')  if DEBUG_TOOLBAR:      if '..' not in sys.path: diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py index ae72d173f..1d8dc2092 100644 --- a/ishtar_common/forms_common.py +++ b/ishtar_common/forms_common.py @@ -260,18 +260,19 @@ class SimplePersonForm(NewItemForm):                             validators=[name_validator])      raw_name = forms.CharField(label=_(u"Raw name"), max_length=300,                                 required=False) -    address = forms.CharField(label=_(u"Address"), widget=forms.Textarea, -                              required=False) -    address_complement = forms.CharField(label=_(u"Address complement"), -                                         widget=forms.Textarea, required=False) -    postal_code = forms.CharField(label=_(u"Postal code"), max_length=10, -                                  required=False) -    town = forms.CharField(label=_(u"Town"), max_length=30, required=False) -    country = forms.CharField(label=_(u"Country"), max_length=30, -                              required=False)      email = forms.EmailField(label=_(u"Email"), required=False) +    phone_desc = forms.CharField(label=_(u"Phone description"), max_length=300, +                                 required=False)      phone = forms.CharField(label=_(u"Phone"), max_length=18, required=False) -    mobile_phone = forms.CharField(label=_(u"Town"), max_length=18, +    phone_desc2 = forms.CharField(label=_(u"Phone description 2"), +                                  max_length=300, required=False) +    phone2 = forms.CharField(label=_(u"Phone 2"), max_length=18, +                             required=False) +    phone_desc3 = forms.CharField(label=_(u"Phone description 3"), +                                  max_length=300, required=False) +    phone3 = forms.CharField(label=_(u"Phone 3"), max_length=18, +                             required=False) +    mobile_phone = forms.CharField(label=_(u"Mobile phone"), max_length=18,                                     required=False)      attached_to = forms.IntegerField(          label=_("Current organization"), @@ -279,6 +280,26 @@ class SimplePersonForm(NewItemForm):              reverse_lazy('autocomplete-organization'),              associated_model=models.Organization, new=True),          validators=[models.valid_id(models.Organization)], required=False) +    address = forms.CharField(label=_(u"Address"), widget=forms.Textarea, +                              required=False) +    address_complement = forms.CharField( +        label=_(u"Address complement"), widget=forms.Textarea, required=False) +    postal_code = forms.CharField(label=_(u"Postal code"), max_length=10, +                                  required=False) +    town = forms.CharField(label=_(u"Town"), max_length=30, required=False) +    country = forms.CharField(label=_(u"Country"), max_length=30, +                              required=False) +    alt_address = forms.CharField(label=_(u"Other address: address"), +                                  widget=forms.Textarea, required=False) +    alt_address_complement = forms.CharField( +        label=_(u"Other address: address complement"), +        widget=forms.Textarea, required=False) +    alt_postal_code = forms.CharField(label=_(u"Other address: postal code"), +                                      max_length=10, required=False) +    alt_town = forms.CharField(label=_(u"Other address: town"), max_length=30, +                               required=False) +    alt_country = forms.CharField(label=_(u"Other address: country"), +                                  max_length=30, required=False)      def __init__(self, *args, **kwargs):          super(SimplePersonForm, self).__init__(*args, **kwargs) diff --git a/ishtar_common/locale/django.pot b/ishtar_common/locale/django.pot index 0610c5e95..303c03ace 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:38 models.py:1251 +#: context_processors.py:38 models.py:1281  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:420 +#: forms.py:71 forms_common.py:441  msgid "Confirm"  msgstr "" @@ -176,7 +176,7 @@ msgid "Template"  msgstr ""  #: forms_common.py:39 forms_common.py:57 forms_common.py:169 -#: forms_common.py:269 forms_common.py:274 models.py:1124 models.py:2340 +#: forms_common.py:289 models.py:1124 models.py:2377  #: templates/blocks/JQueryAdvancedTown.html:19  #: templates/ishtar/sheet_organization.html:17  msgid "Town" @@ -192,67 +192,72 @@ msgid ""  "french town Saint-Denis in the Seine-Saint-Denis department.</p>"  msgstr "" -#: forms_common.py:66 forms_common.py:648 ishtar_menu.py:42 models.py:2039 -#: models.py:2168 models.py:2222 templates/ishtar/sheet_person.html:6 +#: forms_common.py:66 forms_common.py:669 ishtar_menu.py:42 models.py:1279 +#: models.py:2076 models.py:2205 models.py:2259 +#: templates/ishtar/sheet_person.html:6  msgid "Person"  msgstr "" -#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1961 -#: templates/ishtar/sheet_organization.html:6 +#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1280 +#: models.py:1995 templates/ishtar/sheet_organization.html:6  msgid "Organization"  msgstr ""  #: forms_common.py:160 forms_common.py:196 forms_common.py:226 -#: forms_common.py:259 models.py:775 models.py:1057 models.py:1293 -#: models.py:1511 models.py:1955 models.py:2029 models.py:2326 +#: forms_common.py:259 models.py:775 models.py:1057 models.py:1325 +#: models.py:1543 models.py:1989 models.py:2063 models.py:2363  #: templates/ishtar/sheet_organization.html:12  #: templates/ishtar/sheet_organization.html:25  msgid "Name"  msgstr "" -#: forms_common.py:161 models.py:1238 models.py:1642 +#: forms_common.py:161 models.py:1266 models.py:1674  msgid "Organization type"  msgstr "" -#: forms_common.py:163 forms_common.py:263 models.py:1119 +#: forms_common.py:163 forms_common.py:283 models.py:1119  #: templates/ishtar/sheet_organization.html:14  msgid "Address"  msgstr "" -#: forms_common.py:165 forms_common.py:265 models.py:1120 +#: forms_common.py:165 forms_common.py:286 models.py:1120  #: templates/ishtar/sheet_organization.html:15  msgid "Address complement"  msgstr "" -#: forms_common.py:167 forms_common.py:267 models.py:1122 +#: forms_common.py:167 forms_common.py:287 models.py:1122  #: templates/ishtar/sheet_organization.html:16  msgid "Postal code"  msgstr "" -#: forms_common.py:170 forms_common.py:270 models.py:1125 +#: forms_common.py:170 forms_common.py:290 models.py:1125  msgid "Country"  msgstr "" -#: forms_common.py:172 forms_common.py:228 forms_common.py:272 -#: forms_common.py:376 models.py:1131 +#: forms_common.py:172 forms_common.py:228 forms_common.py:263 +#: forms_common.py:397 models.py:1152  msgid "Email"  msgstr "" -#: forms_common.py:173 forms_common.py:273 models.py:1127 +#: forms_common.py:173 forms_common.py:266 models.py:1137  #: templates/ishtar/sheet_organization.html:18 +#: templates/ishtar/sheet_person.html:23 +#: templates/ishtar/wizard/wizard_person.html:17  msgid "Phone"  msgstr "" -#: forms_common.py:174 models.py:1128 +#: forms_common.py:174 forms_common.py:275 models.py:1149  #: templates/ishtar/sheet_organization.html:19 +#: templates/ishtar/sheet_person.html:41 +#: templates/ishtar/wizard/wizard_person.html:35  msgid "Mobile phone"  msgstr "" -#: forms_common.py:197 forms_common.py:229 models.py:1666 models.py:1957 -#: models.py:2263 templates/sheet_ope.html:85 templates/sheet_ope.html.py:105 +#: forms_common.py:197 forms_common.py:229 models.py:1700 models.py:1991 +#: models.py:2300 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:27 -#: templates/ishtar/sheet_person.html:56 +#: templates/ishtar/sheet_person.html:95  #: templates/ishtar/blocks/window_tables/documents.html:6  msgid "Type"  msgstr "" @@ -261,7 +266,7 @@ msgstr ""  msgid "Organization search"  msgstr "" -#: forms_common.py:227 forms_common.py:257 models.py:2027 +#: forms_common.py:227 forms_common.py:257 models.py:2061  #: templates/ishtar/sheet_organization.html:26  msgid "Surname"  msgstr "" @@ -270,145 +275,186 @@ msgstr ""  msgid "Person search"  msgstr "" -#: forms_common.py:254 +#: forms_common.py:254 templates/ishtar/sheet_person.html:12 +#: templates/ishtar/wizard/wizard_person.html:6  msgid "Identity"  msgstr "" -#: forms_common.py:256 forms_common.py:574 forms_common.py:615 models.py:2025 -#: models.py:2260 templates/sheet_ope.html:104 -#: templates/ishtar/sheet_person.html:55 +#: forms_common.py:256 forms_common.py:595 forms_common.py:636 models.py:2059 +#: models.py:2297 templates/sheet_ope.html:104 +#: templates/ishtar/sheet_person.html:94  #: templates/ishtar/blocks/window_tables/documents.html:5  msgid "Title"  msgstr "" -#: forms_common.py:261 models.py:2031 +#: forms_common.py:261 models.py:2065  msgid "Raw name"  msgstr "" -#: forms_common.py:277 +#: forms_common.py:264 models.py:1138 +msgid "Phone description" +msgstr "" + +#: forms_common.py:267 models.py:1140 models.py:1142 +msgid "Phone description 2" +msgstr "" + +#: forms_common.py:269 +msgid "Phone 2" +msgstr "" + +#: forms_common.py:271 models.py:1146 +msgid "Phone description 3" +msgstr "" + +#: forms_common.py:273 models.py:1144 +msgid "Phone 3" +msgstr "" + +#: forms_common.py:278  msgid "Current organization"  msgstr "" -#: forms_common.py:325 forms_common.py:355 forms_common.py:359 models.py:2009 +#: forms_common.py:292 models.py:1127 +msgid "Other address: address" +msgstr "" + +#: forms_common.py:295 models.py:1130 +msgid "Other address: address complement" +msgstr "" + +#: forms_common.py:297 models.py:1131 +msgid "Other address: postal code" +msgstr "" + +#: forms_common.py:299 models.py:1133 +msgid "Other address: town" +msgstr "" + +#: forms_common.py:301 models.py:1135 +msgid "Other address: country" +msgstr "" + +#: forms_common.py:346 forms_common.py:376 forms_common.py:380 models.py:2043  msgid "Person type"  msgstr "" -#: forms_common.py:370 forms_common.py:375 +#: forms_common.py:391 forms_common.py:396  msgid "Account"  msgstr "" -#: forms_common.py:379 wizards.py:1154 +#: forms_common.py:400 wizards.py:1158  msgid "New password"  msgstr "" -#: forms_common.py:382 +#: forms_common.py:403  msgid "New password (confirmation)"  msgstr "" -#: forms_common.py:401 +#: forms_common.py:422  msgid "Your password and confirmation password do not match."  msgstr "" -#: forms_common.py:406 +#: forms_common.py:427  msgid "You must provide a correct password."  msgstr "" -#: forms_common.py:414 +#: forms_common.py:435  msgid "This username already exists."  msgstr "" -#: forms_common.py:421 +#: forms_common.py:442  msgid "Send the new password by email?"  msgstr "" -#: forms_common.py:430 forms_common.py:443 models.py:2341 +#: forms_common.py:451 forms_common.py:464 models.py:2378  msgid "Towns"  msgstr "" -#: forms_common.py:440 +#: forms_common.py:461  msgid "There are identical towns."  msgstr "" -#: forms_common.py:524 +#: forms_common.py:545  msgid "Only one choice can be checked."  msgstr "" -#: forms_common.py:572 +#: forms_common.py:593  msgid "Documentation informations"  msgstr "" -#: forms_common.py:576 forms_common.py:616 models.py:1643 models.py:2243 +#: forms_common.py:597 forms_common.py:637 models.py:1675 models.py:2280  msgid "Source type"  msgstr "" -#: forms_common.py:578 forms_common.py:617 templates/sheet_ope.html:84 +#: forms_common.py:599 forms_common.py:638 templates/sheet_ope.html:84  msgid "Reference"  msgstr "" -#: forms_common.py:581 forms_common.py:618 +#: forms_common.py:602 forms_common.py:639  msgid "Internal reference"  msgstr "" -#: forms_common.py:584 models.py:2274 +#: forms_common.py:605 models.py:2311  msgid "Numerical ressource (web address)"  msgstr "" -#: forms_common.py:585 models.py:2276 +#: forms_common.py:606 models.py:2313  msgid "Receipt date"  msgstr "" -#: forms_common.py:587 models.py:1793 models.py:2278 +#: forms_common.py:608 models.py:1827 models.py:2315  msgid "Creation date"  msgstr "" -#: forms_common.py:590 models.py:2281 +#: forms_common.py:611 models.py:2318  msgid "Receipt date in documentation"  msgstr "" -#: forms_common.py:592 forms_common.py:620 models.py:277 models.py:1538 -#: models.py:2288 +#: forms_common.py:613 forms_common.py:641 models.py:277 models.py:1570 +#: models.py:2069 models.py:2325  msgid "Comment"  msgstr "" -#: forms_common.py:594 forms_common.py:619 models.py:777 models.py:1297 -#: models.py:1470 models.py:1512 models.py:2287 templates/sheet_ope.html:128 +#: forms_common.py:615 forms_common.py:640 models.py:777 models.py:1329 +#: models.py:1502 models.py:1544 models.py:2324 templates/sheet_ope.html:128  msgid "Description"  msgstr "" -#: forms_common.py:597 models.py:2289 +#: forms_common.py:618 models.py:2326  msgid "Additional information"  msgstr "" -#: forms_common.py:599 forms_common.py:623 models.py:2291 +#: forms_common.py:620 forms_common.py:644 models.py:2328  msgid "Has a duplicate"  msgstr "" -#: forms_common.py:612 forms_common.py:641 forms_common.py:674 models.py:2227 +#: forms_common.py:633 forms_common.py:662 forms_common.py:695 models.py:2264  #: templates/ishtar/wizard/wizard_person_deletion.html:124  msgid "Author"  msgstr "" -#: forms_common.py:622 +#: forms_common.py:643  msgid "Additional informations"  msgstr "" -#: forms_common.py:633 +#: forms_common.py:654  msgid "Would you like to delete this documentation?"  msgstr "" -#: forms_common.py:649 models.py:1644 models.py:2217 models.py:2224 +#: forms_common.py:670 models.py:1676 models.py:2254 models.py:2261  msgid "Author type"  msgstr "" -#: forms_common.py:667 +#: forms_common.py:688  msgid "Author selection"  msgstr "" -#: forms_common.py:681 +#: forms_common.py:702  msgid "There are identical authors."  msgstr "" -#: forms_common.py:685 models.py:2228 models.py:2270 +#: forms_common.py:706 models.py:2265 models.py:2307  #: templates/sheet_ope.html:106  #: templates/ishtar/blocks/window_tables/documents.html:7  msgid "Authors" @@ -446,11 +492,11 @@ msgstr ""  msgid "Merge"  msgstr "" -#: ishtar_menu.py:61 ishtar_menu.py:88 models.py:1830 widgets.py:110 +#: ishtar_menu.py:61 ishtar_menu.py:88 models.py:1864 widgets.py:110  msgid "Delete"  msgstr "" -#: ishtar_menu.py:96 models.py:1804 +#: ishtar_menu.py:96 models.py:1838  msgid "Imports"  msgstr "" @@ -490,7 +536,7 @@ msgstr ""  msgid "Available"  msgstr "" -#: models.py:479 models.py:1584 +#: models.py:479 models.py:1616  msgid "Key"  msgstr "" @@ -506,7 +552,7 @@ msgstr ""  msgid "Creator"  msgstr "" -#: models.py:692 models.py:2352 +#: models.py:692 models.py:2389  msgid "Order"  msgstr "" @@ -518,7 +564,7 @@ msgstr ""  msgid "Cannot have symmetrical and an inverse_relation"  msgstr "" -#: models.py:776 models.py:1295 +#: models.py:776 models.py:1327  msgid "Slug"  msgstr "" @@ -566,7 +612,7 @@ msgstr ""  msgid "Description of the variable"  msgstr "" -#: models.py:849 models.py:1585 +#: models.py:849 models.py:1617  msgid "Value"  msgstr "" @@ -579,8 +625,10 @@ msgid "Total"  msgstr ""  #: models.py:969 models.py:1093 models.py:1105 +#: templates/ishtar/sheet_person.html:26  #: templates/ishtar/dashboards/dashboard_main_detail.html:135  #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 +#: templates/ishtar/wizard/wizard_person.html:20  msgid "Number"  msgstr "" @@ -600,7 +648,7 @@ msgstr ""  msgid "Document templates"  msgstr "" -#: models.py:1096 models.py:1106 models.py:1788 +#: models.py:1096 models.py:1106 models.py:1822  msgid "State"  msgstr "" @@ -612,526 +660,546 @@ msgstr ""  msgid "Departments"  msgstr "" -#: models.py:1165 +#: models.py:1148 +msgid "Raw phone" +msgstr "" + +#: models.py:1154 +msgid "Alternative address is prefered" +msgstr "" + +#: models.py:1193  msgid "Tel: "  msgstr "" -#: models.py:1169 +#: models.py:1197  msgid "Mobile: "  msgstr "" -#: models.py:1173 +#: models.py:1201  msgid "Email: "  msgstr "" -#: models.py:1178 +#: models.py:1206  msgid "Merge key"  msgstr "" -#: models.py:1239 +#: models.py:1267  msgid "Organization types"  msgstr "" -#: models.py:1253 +#: models.py:1283  msgid "Archaeological site"  msgstr "" -#: models.py:1254 +#: models.py:1284  msgid "Parcels"  msgstr "" -#: models.py:1256 +#: models.py:1286  msgid "Operation source"  msgstr "" -#: models.py:1259 views.py:945 views.py:996 +#: models.py:1289 views.py:945 views.py:996  msgid "Archaeological files"  msgstr "" -#: models.py:1261 views.py:948 views.py:1004 +#: models.py:1291 views.py:948 views.py:1004  msgid "Context records"  msgstr "" -#: models.py:1263 views.py:950 views.py:1007 +#: models.py:1293 +msgid "Context record relations" +msgstr "" + +#: models.py:1295 views.py:950 views.py:1007  msgid "Finds"  msgstr "" -#: models.py:1299 templates/ishtar/dashboards/dashboard_main.html:26 +#: models.py:1331 templates/ishtar/dashboards/dashboard_main.html:26  msgid "Users"  msgstr "" -#: models.py:1301 +#: models.py:1333  msgid "Associated model"  msgstr "" -#: models.py:1304 +#: models.py:1336  msgid "Is template"  msgstr "" -#: models.py:1305 +#: models.py:1337  msgid "Unicity keys (separator \";\")"  msgstr "" -#: models.py:1309 +#: models.py:1341  msgid "Importer - Type"  msgstr "" -#: models.py:1310 +#: models.py:1342  msgid "Importer - Types"  msgstr "" -#: models.py:1400 +#: models.py:1432  msgid "Importer - Default"  msgstr "" -#: models.py:1401 +#: models.py:1433  msgid "Importer - Defaults"  msgstr "" -#: models.py:1436 +#: models.py:1468  msgid "Importer - Default value"  msgstr "" -#: models.py:1437 +#: models.py:1469  msgid "Importer - Default values"  msgstr "" -#: models.py:1469 +#: models.py:1501  msgid "Column number"  msgstr "" -#: models.py:1472 +#: models.py:1504  msgid "Required"  msgstr "" -#: models.py:1475 +#: models.py:1507  msgid "Importer - Column"  msgstr "" -#: models.py:1476 +#: models.py:1508  msgid "Importer - Columns"  msgstr "" -#: models.py:1496 +#: models.py:1528  msgid "Field name"  msgstr "" -#: models.py:1498 models.py:1532 +#: models.py:1530 models.py:1564  msgid "Force creation of new items"  msgstr "" -#: models.py:1500 models.py:1534 +#: models.py:1532 models.py:1566  msgid "Concatenate with existing"  msgstr "" -#: models.py:1502 models.py:1536 +#: models.py:1534 models.py:1568  msgid "Concatenate character"  msgstr "" -#: models.py:1506 +#: models.py:1538  msgid "Importer - Duplicate field"  msgstr "" -#: models.py:1507 +#: models.py:1539  msgid "Importer - Duplicate fields"  msgstr "" -#: models.py:1514 +#: models.py:1546  msgid "Regular expression"  msgstr "" -#: models.py:1517 +#: models.py:1549  msgid "Importer - Regular expression"  msgstr "" -#: models.py:1518 +#: models.py:1550  msgid "Importer - Regular expressions"  msgstr "" -#: models.py:1541 +#: models.py:1573  msgid "Importer - Target"  msgstr "" -#: models.py:1542 +#: models.py:1574  msgid "Importer - Targets"  msgstr "" -#: models.py:1566 views.py:311 +#: models.py:1598 views.py:311  msgid "True"  msgstr "" -#: models.py:1567 views.py:313 +#: models.py:1599 views.py:313  msgid "False"  msgstr "" -#: models.py:1586 +#: models.py:1618  msgid "Is set"  msgstr "" -#: models.py:1593 +#: models.py:1625  msgid "Importer - Target key"  msgstr "" -#: models.py:1594 +#: models.py:1626  msgid "Importer - Targets keys"  msgstr "" -#: models.py:1645 models.py:2255 models.py:2266 +#: models.py:1677 models.py:2292 models.py:2303  msgid "Format"  msgstr "" -#: models.py:1646 models.py:2356 +#: models.py:1678 models.py:2393  msgid "Operation type"  msgstr "" -#: models.py:1647 +#: models.py:1679  msgid "Period"  msgstr "" -#: models.py:1648 +#: models.py:1680  msgid "Unit"  msgstr "" -#: models.py:1649 +#: models.py:1681  msgid "Material"  msgstr "" -#: models.py:1651 +#: models.py:1683  msgid "Conservatory state"  msgstr "" -#: models.py:1652 +#: models.py:1684  msgid "Preservation type"  msgstr "" -#: models.py:1653 +#: models.py:1685  msgid "Object type"  msgstr "" -#: models.py:1655 +#: models.py:1687  msgid "Identification type"  msgstr "" -#: models.py:1656 models.py:2249 +#: models.py:1689 +msgid "Context record relation type" +msgstr "" + +#: models.py:1690 models.py:2286  msgid "Support type"  msgstr "" -#: models.py:1662 +#: models.py:1696  msgid "Integer"  msgstr "" -#: models.py:1663 +#: models.py:1697  msgid "Float"  msgstr "" -#: models.py:1664 +#: models.py:1698  msgid "String"  msgstr "" -#: models.py:1665 templates/sheet_ope.html:86 +#: models.py:1699 templates/sheet_ope.html:86  msgid "Date"  msgstr "" -#: models.py:1667 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 -#: templates/ishtar/sheet_person.html:54 +#: models.py:1701 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: templates/ishtar/sheet_person.html:93  #: templates/ishtar/dashboards/dashboard_main_detail.html:120  msgid "Year"  msgstr "" -#: models.py:1668 +#: models.py:1702  msgid "String to boolean"  msgstr "" -#: models.py:1669 +#: models.py:1703  msgctxt "filesystem"  msgid "File"  msgstr "" -#: models.py:1670 +#: models.py:1704  msgid "Unknow type"  msgstr "" -#: models.py:1686 +#: models.py:1720  msgid "4 digit year. e.g.: \"2015\""  msgstr "" -#: models.py:1687 +#: models.py:1721  msgid "4 digit year/month/day. e.g.: \"2015/02/04\""  msgstr "" -#: models.py:1688 +#: models.py:1722  msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""  msgstr "" -#: models.py:1698 +#: models.py:1732  msgid "Options"  msgstr "" -#: models.py:1700 +#: models.py:1734  msgid "Split character(s)"  msgstr "" -#: models.py:1704 +#: models.py:1738  msgid "Importer - Formater type"  msgstr "" -#: models.py:1705 +#: models.py:1739  msgid "Importer - Formater types"  msgstr "" -#: models.py:1752 templates/ishtar/dashboards/dashboard_main_detail.html:61 +#: models.py:1786 templates/ishtar/dashboards/dashboard_main_detail.html:61  msgid "Created"  msgstr "" -#: models.py:1753 +#: models.py:1787  msgid "Analyse in progress"  msgstr "" -#: models.py:1754 +#: models.py:1788  msgid "Analysed"  msgstr "" -#: models.py:1755 +#: models.py:1789  msgid "Import pending"  msgstr "" -#: models.py:1756 +#: models.py:1790  msgid "Import in progress"  msgstr "" -#: models.py:1757 +#: models.py:1791  msgid "Finished with errors"  msgstr "" -#: models.py:1758 +#: models.py:1792  msgid "Finished"  msgstr "" -#: models.py:1759 +#: models.py:1793  msgid "Archived"  msgstr "" -#: models.py:1771 +#: models.py:1805  msgid "Imported file"  msgstr "" -#: models.py:1774 +#: models.py:1808  msgid "Associated images (zip file)"  msgstr "" -#: models.py:1776 +#: models.py:1810  msgid "Encoding"  msgstr "" -#: models.py:1778 +#: models.py:1812  msgid "Skip lines"  msgstr "" -#: models.py:1779 templates/ishtar/import_list.html:47 +#: models.py:1813 templates/ishtar/import_list.html:47  msgid "Error file"  msgstr "" -#: models.py:1782 +#: models.py:1816  msgid "Result file"  msgstr "" -#: models.py:1785 templates/ishtar/import_list.html:53 +#: models.py:1819 templates/ishtar/import_list.html:53  msgid "Match file"  msgstr "" -#: models.py:1791 +#: models.py:1825  msgid "Conservative import"  msgstr "" -#: models.py:1796 +#: models.py:1830  msgid "End date"  msgstr "" -#: models.py:1798 +#: models.py:1832  msgid "Remaining seconds"  msgstr "" -#: models.py:1803 +#: models.py:1837  msgid "Import"  msgstr "" -#: models.py:1820 +#: models.py:1854  msgid "Analyse"  msgstr "" -#: models.py:1822 models.py:1825 +#: models.py:1856 models.py:1859  msgid "Re-analyse"  msgstr "" -#: models.py:1823 +#: models.py:1857  msgid "Launch import"  msgstr "" -#: models.py:1826 +#: models.py:1860  msgid "Re-import"  msgstr "" -#: models.py:1827 +#: models.py:1861  msgid "Archive"  msgstr "" -#: models.py:1829 +#: models.py:1863  msgid "Unarchive"  msgstr "" -#: models.py:1962 +#: models.py:1996  msgid "Organizations"  msgstr "" -#: models.py:1964 +#: models.py:1998  msgid "Can view all Organizations"  msgstr "" -#: models.py:1965 +#: models.py:1999  msgid "Can view own Organization"  msgstr "" -#: models.py:1966 +#: models.py:2000  msgid "Can add own Organization"  msgstr "" -#: models.py:1968 +#: models.py:2002  msgid "Can change own Organization"  msgstr "" -#: models.py:1970 +#: models.py:2004  msgid "Can delete own Organization"  msgstr "" -#: models.py:2005 +#: models.py:2039  msgid "Groups"  msgstr "" -#: models.py:2010 +#: models.py:2044  msgid "Person types"  msgstr "" -#: models.py:2017 +#: models.py:2051  msgid "Mr"  msgstr "" -#: models.py:2018 +#: models.py:2052  msgid "Miss"  msgstr "" -#: models.py:2019 +#: models.py:2053  msgid "Mr and Mrs"  msgstr "" -#: models.py:2020 +#: models.py:2054  msgid "Mrs"  msgstr "" -#: models.py:2021 +#: models.py:2055  msgid "Doctor"  msgstr "" -#: models.py:2033 models.py:2080 +#: models.py:2067 +msgid "Contact type" +msgstr "" + +#: models.py:2070 models.py:2117  msgid "Types"  msgstr "" -#: models.py:2036 +#: models.py:2073  msgid "Is attached to"  msgstr "" -#: models.py:2040 +#: models.py:2077  msgid "Persons"  msgstr "" -#: models.py:2042 +#: models.py:2079  msgid "Can view all Persons"  msgstr "" -#: models.py:2043 +#: models.py:2080  msgid "Can view own Person"  msgstr "" -#: models.py:2044 +#: models.py:2081  msgid "Can add own Person"  msgstr "" -#: models.py:2045 +#: models.py:2082  msgid "Can change own Person"  msgstr "" -#: models.py:2046 +#: models.py:2083  msgid "Can delete own Person"  msgstr "" -#: models.py:2172 +#: models.py:2209  msgid "Ishtar user"  msgstr "" -#: models.py:2173 +#: models.py:2210  msgid "Ishtar users"  msgstr "" -#: models.py:2218 +#: models.py:2255  msgid "Author types"  msgstr "" -#: models.py:2244 +#: models.py:2281  msgid "Source types"  msgstr "" -#: models.py:2250 +#: models.py:2287  msgid "Support types"  msgstr "" -#: models.py:2256 +#: models.py:2293  msgid "Formats"  msgstr "" -#: models.py:2261 +#: models.py:2298  msgid "External ID"  msgstr "" -#: models.py:2264 +#: models.py:2301  msgid "Support"  msgstr "" -#: models.py:2268 +#: models.py:2305  msgid "Scale"  msgstr "" -#: models.py:2282 +#: models.py:2319  msgid "Item number"  msgstr "" -#: models.py:2283 +#: models.py:2320  msgid "Ref."  msgstr "" -#: models.py:2286 +#: models.py:2323  msgid "Internal ref."  msgstr "" -#: models.py:2327 +#: models.py:2364  msgid "Surface (m2)"  msgstr "" -#: models.py:2328 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2365 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107  msgid "Localisation"  msgstr "" -#: models.py:2353 +#: models.py:2390  msgid "Is preventive"  msgstr "" -#: models.py:2357 +#: models.py:2394  msgid "Operation types"  msgstr "" -#: models.py:2383 +#: models.py:2420  msgid "Preventive"  msgstr "" -#: models.py:2384 +#: models.py:2421  msgid "Research"  msgstr "" @@ -1218,7 +1286,7 @@ msgstr ""  msgid "No"  msgstr "" -#: wizards.py:1211 +#: wizards.py:1215  #, python-format  msgid "[%(app_name)s] Account creation/modification"  msgstr "" @@ -1493,7 +1561,7 @@ msgstr ""  msgid "Documentation"  msgstr "" -#: templates/sheet_ope.html:102 templates/ishtar/sheet_person.html:52 +#: templates/sheet_ope.html:102 templates/ishtar/sheet_person.html:91  msgid "Documents"  msgstr "" @@ -1583,7 +1651,7 @@ msgstr ""  #: templates/ishtar/form.html:10 templates/ishtar/formset.html:8  #: templates/ishtar/import_list.html:58 templates/ishtar/merge.html:31  #: templates/ishtar/wizard/confirm_wizard.html:42 -#: templates/ishtar/wizard/default_wizard.html:29 +#: templates/ishtar/wizard/default_wizard.html:30  #: templates/ishtar/wizard/search.html:13  #: templates/ishtar/wizard/validation_bar.html:4  msgid "Validate" @@ -1721,28 +1789,44 @@ msgid "No person in this organization"  msgstr ""  #: templates/ishtar/sheet_person.html:25 +#: templates/ishtar/wizard/wizard_person.html:19 +msgid "Phone type" +msgstr "" + +#: templates/ishtar/sheet_person.html:48 +#: templates/ishtar/wizard/wizard_person.html:42 +msgid "Business address" +msgstr "" + +#: templates/ishtar/sheet_person.html:56 +#: templates/ishtar/wizard/wizard_person.html:51 +msgid "Other address" +msgstr "" + +#: templates/ishtar/sheet_person.html:64  msgid "Associated organization"  msgstr "" -#: templates/ishtar/sheet_person.html:36 +#: templates/ishtar/sheet_person.html:75  msgid "Associated operations as scientist"  msgstr "" -#: templates/ishtar/sheet_person.html:40 +#: templates/ishtar/sheet_person.html:79  msgid "Associated operations as responsible"  msgstr "" -#: templates/ishtar/sheet_person.html:46 +#: templates/ishtar/sheet_person.html:85  msgid "Associated archaelogical files"  msgstr "" -#: templates/ishtar/sheet_person.html:57 templates/ishtar/sheet_person.html:65 +#: templates/ishtar/sheet_person.html:96 +#: templates/ishtar/sheet_person.html:104  #: templates/ishtar/blocks/window_tables/documents.html:9  #: templates/ishtar/blocks/window_tables/documents.html:17  msgid "Link"  msgstr "" -#: templates/ishtar/sheet_person.html:69 +#: templates/ishtar/sheet_person.html:108  msgid "No document associated to this person"  msgstr "" @@ -1849,7 +1933,7 @@ msgstr ""  msgid "Would you like to save them?"  msgstr "" -#: templates/ishtar/wizard/default_wizard.html:35 +#: templates/ishtar/wizard/default_wizard.html:36  #: templates/ishtar/wizard/parcels_wizard.html:24  #: templates/ishtar/wizard/relations_wizard.html:23  #: templates/ishtar/wizard/search.html:20 @@ -1857,7 +1941,7 @@ msgstr ""  msgid "Add/Modify"  msgstr "" -#: templates/ishtar/wizard/default_wizard.html:56 +#: templates/ishtar/wizard/default_wizard.html:58  msgid ""  "The form has changed if you don't validate it all your changes will be lost."  msgstr "" diff --git a/ishtar_common/menu_base.py b/ishtar_common/menu_base.py index eb08d8c78..d8ee0775c 100644 --- a/ishtar_common/menu_base.py +++ b/ishtar_common/menu_base.py @@ -107,7 +107,8 @@ class MenuItem:          prefix = (self.model._meta.app_label + '.') if self.model else ''          for access_control in self.access_controls:              access_control = prefix + access_control -            if user.has_perm(access_control, self.model, obj): +            if user.has_perm(access_control, self.model, obj=obj, +                             session=session):                  return True          # manage by person type          if hasattr(user, 'ishtaruser'): diff --git a/ishtar_common/menus.py b/ishtar_common/menus.py index e55b288bf..36b53b162 100644 --- a/ishtar_common/menus.py +++ b/ishtar_common/menus.py @@ -59,12 +59,20 @@ class Menu:          self.current_action = current_action          self.selected_idx = None          self.session = session +        self.items_by_idx = {}      def init(self):          if self.initialized:              return          self.items = {} +        self.items_by_idx = {}          for idx, main_menu in enumerate(self.childs): +            self.items_by_idx[main_menu.idx] = main_menu +            for child in main_menu.childs: +                self.items_by_idx[child.idx] = child +                if hasattr(child, 'childs'): +                    for subchild in child.childs: +                        self.items_by_idx[subchild.idx] = subchild              selected = main_menu.set_items(                  self.user, self.items,                  self.current_action, session=self.session) diff --git a/ishtar_common/migrations/0004_auto__add_field_person_alt_address__add_field_person_alt_address_compl.py b/ishtar_common/migrations/0004_auto__add_field_person_alt_address__add_field_person_alt_address_compl.py new file mode 100644 index 000000000..4527be5f6 --- /dev/null +++ b/ishtar_common/migrations/0004_auto__add_field_person_alt_address__add_field_person_alt_address_compl.py @@ -0,0 +1,729 @@ +# -*- 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 'Person.alt_address' +        db.add_column('ishtar_common_person', 'alt_address', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.alt_address_complement' +        db.add_column('ishtar_common_person', 'alt_address_complement', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.alt_postal_code' +        db.add_column('ishtar_common_person', 'alt_postal_code', +                      self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.alt_town' +        db.add_column('ishtar_common_person', 'alt_town', +                      self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.alt_country' +        db.add_column('ishtar_common_person', 'alt_country', +                      self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.phone_desc' +        db.add_column('ishtar_common_person', 'phone_desc', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.phone2' +        db.add_column('ishtar_common_person', 'phone2', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.phone_desc2' +        db.add_column('ishtar_common_person', 'phone_desc2', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.phone3' +        db.add_column('ishtar_common_person', 'phone3', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.phone_desc3' +        db.add_column('ishtar_common_person', 'phone_desc3', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.raw_phone' +        db.add_column('ishtar_common_person', 'raw_phone', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.alt_address_is_prefered' +        db.add_column('ishtar_common_person', 'alt_address_is_prefered', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + +        # Adding field 'Person.contact_type' +        db.add_column('ishtar_common_person', 'contact_type', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Person.comment' +        db.add_column('ishtar_common_person', 'comment', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + + +        # Changing field 'Person.email' +        db.alter_column('ishtar_common_person', 'email', self.gf('django.db.models.fields.EmailField')(max_length=300, null=True)) +        # Adding field 'HistoricalOrganization.alt_address' +        db.add_column('ishtar_common_historicalorganization', 'alt_address', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.alt_address_complement' +        db.add_column('ishtar_common_historicalorganization', 'alt_address_complement', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.alt_postal_code' +        db.add_column('ishtar_common_historicalorganization', 'alt_postal_code', +                      self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.alt_town' +        db.add_column('ishtar_common_historicalorganization', 'alt_town', +                      self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.alt_country' +        db.add_column('ishtar_common_historicalorganization', 'alt_country', +                      self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.phone_desc' +        db.add_column('ishtar_common_historicalorganization', 'phone_desc', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.phone2' +        db.add_column('ishtar_common_historicalorganization', 'phone2', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.phone_desc2' +        db.add_column('ishtar_common_historicalorganization', 'phone_desc2', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.phone3' +        db.add_column('ishtar_common_historicalorganization', 'phone3', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.phone_desc3' +        db.add_column('ishtar_common_historicalorganization', 'phone_desc3', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.raw_phone' +        db.add_column('ishtar_common_historicalorganization', 'raw_phone', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'HistoricalOrganization.alt_address_is_prefered' +        db.add_column('ishtar_common_historicalorganization', 'alt_address_is_prefered', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'HistoricalOrganization.name' +        db.alter_column('ishtar_common_historicalorganization', 'name', self.gf('django.db.models.fields.CharField')(max_length=500)) + +        # Changing field 'HistoricalOrganization.email' +        db.alter_column('ishtar_common_historicalorganization', 'email', self.gf('django.db.models.fields.EmailField')(max_length=300, null=True)) +        # Adding field 'Organization.alt_address' +        db.add_column('ishtar_common_organization', 'alt_address', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.alt_address_complement' +        db.add_column('ishtar_common_organization', 'alt_address_complement', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.alt_postal_code' +        db.add_column('ishtar_common_organization', 'alt_postal_code', +                      self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.alt_town' +        db.add_column('ishtar_common_organization', 'alt_town', +                      self.gf('django.db.models.fields.CharField')(max_length=70, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.alt_country' +        db.add_column('ishtar_common_organization', 'alt_country', +                      self.gf('django.db.models.fields.CharField')(max_length=30, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.phone_desc' +        db.add_column('ishtar_common_organization', 'phone_desc', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.phone2' +        db.add_column('ishtar_common_organization', 'phone2', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.phone_desc2' +        db.add_column('ishtar_common_organization', 'phone_desc2', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.phone3' +        db.add_column('ishtar_common_organization', 'phone3', +                      self.gf('django.db.models.fields.CharField')(max_length=18, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.phone_desc3' +        db.add_column('ishtar_common_organization', 'phone_desc3', +                      self.gf('django.db.models.fields.CharField')(max_length=300, null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.raw_phone' +        db.add_column('ishtar_common_organization', 'raw_phone', +                      self.gf('django.db.models.fields.TextField')(null=True, blank=True), +                      keep_default=False) + +        # Adding field 'Organization.alt_address_is_prefered' +        db.add_column('ishtar_common_organization', 'alt_address_is_prefered', +                      self.gf('django.db.models.fields.BooleanField')(default=False), +                      keep_default=False) + + +        # Changing field 'Organization.email' +        db.alter_column('ishtar_common_organization', 'email', self.gf('django.db.models.fields.EmailField')(max_length=300, null=True)) + +        # Changing field 'Organization.name' +        db.alter_column('ishtar_common_organization', 'name', self.gf('django.db.models.fields.CharField')(max_length=500)) + +    def backwards(self, orm): +        # Deleting field 'Person.alt_address' +        db.delete_column('ishtar_common_person', 'alt_address') + +        # Deleting field 'Person.alt_address_complement' +        db.delete_column('ishtar_common_person', 'alt_address_complement') + +        # Deleting field 'Person.alt_postal_code' +        db.delete_column('ishtar_common_person', 'alt_postal_code') + +        # Deleting field 'Person.alt_town' +        db.delete_column('ishtar_common_person', 'alt_town') + +        # Deleting field 'Person.alt_country' +        db.delete_column('ishtar_common_person', 'alt_country') + +        # Deleting field 'Person.phone_desc' +        db.delete_column('ishtar_common_person', 'phone_desc') + +        # Deleting field 'Person.phone2' +        db.delete_column('ishtar_common_person', 'phone2') + +        # Deleting field 'Person.phone_desc2' +        db.delete_column('ishtar_common_person', 'phone_desc2') + +        # Deleting field 'Person.phone3' +        db.delete_column('ishtar_common_person', 'phone3') + +        # Deleting field 'Person.phone_desc3' +        db.delete_column('ishtar_common_person', 'phone_desc3') + +        # Deleting field 'Person.raw_phone' +        db.delete_column('ishtar_common_person', 'raw_phone') + +        # Deleting field 'Person.alt_address_is_prefered' +        db.delete_column('ishtar_common_person', 'alt_address_is_prefered') + +        # Deleting field 'Person.contact_type' +        db.delete_column('ishtar_common_person', 'contact_type') + +        # Deleting field 'Person.comment' +        db.delete_column('ishtar_common_person', 'comment') + + +        # Changing field 'Person.email' +        db.alter_column('ishtar_common_person', 'email', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True)) +        # Deleting field 'HistoricalOrganization.alt_address' +        db.delete_column('ishtar_common_historicalorganization', 'alt_address') + +        # Deleting field 'HistoricalOrganization.alt_address_complement' +        db.delete_column('ishtar_common_historicalorganization', 'alt_address_complement') + +        # Deleting field 'HistoricalOrganization.alt_postal_code' +        db.delete_column('ishtar_common_historicalorganization', 'alt_postal_code') + +        # Deleting field 'HistoricalOrganization.alt_town' +        db.delete_column('ishtar_common_historicalorganization', 'alt_town') + +        # Deleting field 'HistoricalOrganization.alt_country' +        db.delete_column('ishtar_common_historicalorganization', 'alt_country') + +        # Deleting field 'HistoricalOrganization.phone_desc' +        db.delete_column('ishtar_common_historicalorganization', 'phone_desc') + +        # Deleting field 'HistoricalOrganization.phone2' +        db.delete_column('ishtar_common_historicalorganization', 'phone2') + +        # Deleting field 'HistoricalOrganization.phone_desc2' +        db.delete_column('ishtar_common_historicalorganization', 'phone_desc2') + +        # Deleting field 'HistoricalOrganization.phone3' +        db.delete_column('ishtar_common_historicalorganization', 'phone3') + +        # Deleting field 'HistoricalOrganization.phone_desc3' +        db.delete_column('ishtar_common_historicalorganization', 'phone_desc3') + +        # Deleting field 'HistoricalOrganization.raw_phone' +        db.delete_column('ishtar_common_historicalorganization', 'raw_phone') + +        # Deleting field 'HistoricalOrganization.alt_address_is_prefered' +        db.delete_column('ishtar_common_historicalorganization', 'alt_address_is_prefered') + + +        # Changing field 'HistoricalOrganization.name' +        db.alter_column('ishtar_common_historicalorganization', 'name', self.gf('django.db.models.fields.CharField')(max_length=300)) + +        # Changing field 'HistoricalOrganization.email' +        db.alter_column('ishtar_common_historicalorganization', 'email', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True)) +        # Deleting field 'Organization.alt_address' +        db.delete_column('ishtar_common_organization', 'alt_address') + +        # Deleting field 'Organization.alt_address_complement' +        db.delete_column('ishtar_common_organization', 'alt_address_complement') + +        # Deleting field 'Organization.alt_postal_code' +        db.delete_column('ishtar_common_organization', 'alt_postal_code') + +        # Deleting field 'Organization.alt_town' +        db.delete_column('ishtar_common_organization', 'alt_town') + +        # Deleting field 'Organization.alt_country' +        db.delete_column('ishtar_common_organization', 'alt_country') + +        # Deleting field 'Organization.phone_desc' +        db.delete_column('ishtar_common_organization', 'phone_desc') + +        # Deleting field 'Organization.phone2' +        db.delete_column('ishtar_common_organization', 'phone2') + +        # Deleting field 'Organization.phone_desc2' +        db.delete_column('ishtar_common_organization', 'phone_desc2') + +        # Deleting field 'Organization.phone3' +        db.delete_column('ishtar_common_organization', 'phone3') + +        # Deleting field 'Organization.phone_desc3' +        db.delete_column('ishtar_common_organization', 'phone_desc3') + +        # Deleting field 'Organization.raw_phone' +        db.delete_column('ishtar_common_organization', 'raw_phone') + +        # Deleting field 'Organization.alt_address_is_prefered' +        db.delete_column('ishtar_common_organization', 'alt_address_is_prefered') + + +        # Changing field 'Organization.email' +        db.alter_column('ishtar_common_organization', 'email', self.gf('django.db.models.fields.EmailField')(max_length=75, null=True)) + +        # Changing field 'Organization.name' +        db.alter_column('ishtar_common_organization', 'name', self.gf('django.db.models.fields.CharField')(max_length=300)) + +    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'}), +            'context_record': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'description': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}), +            'files': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'find': ('django.db.models.fields.BooleanField', [], {'default': 'False'}), +            'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}), +            'label': ('django.db.models.fields.TextField', [], {}), +            '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 2a12edc02..9509b36a6 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1124,11 +1124,34 @@ class Address(BaseHistorizedItem):      town = models.CharField(_(u"Town"), max_length=70, null=True, blank=True)      country = models.CharField(_(u"Country"), max_length=30, null=True,                                 blank=True) +    alt_address = models.TextField(_(u"Other address: address"), null=True, +                                   blank=True) +    alt_address_complement = models.TextField( +        _(u"Other address: address complement"), null=True, blank=True) +    alt_postal_code = models.CharField(_(u"Other address: postal code"), +                                       max_length=10, null=True, blank=True) +    alt_town = models.CharField(_(u"Other address: town"), max_length=70, +                                null=True, blank=True) +    alt_country = models.CharField(_(u"Other address: country"), +                                   max_length=30, null=True, blank=True)      phone = models.CharField(_(u"Phone"), max_length=18, null=True, blank=True) +    phone_desc = models.CharField(_(u"Phone description"), max_length=300, +                                  null=True, blank=True) +    phone2 = models.CharField(_(u"Phone description 2"), max_length=18, +                              null=True, blank=True) +    phone_desc2 = models.CharField(_(u"Phone description 2"), max_length=300, +                                   null=True, blank=True) +    phone3 = models.CharField(_(u"Phone 3"), max_length=18, null=True, +                              blank=True) +    phone_desc3 = models.CharField(_(u"Phone description 3"), max_length=300, +                                   null=True, blank=True) +    raw_phone = models.TextField(_(u"Raw phone"), blank=True, null=True)      mobile_phone = models.CharField(_(u"Mobile phone"), max_length=18,                                      null=True, blank=True)      email = models.EmailField( -        _(u"Email"), max_length=75, blank=True, null=True) +        _(u"Email"), max_length=300, blank=True, null=True) +    alt_address_is_prefered = models.BooleanField( +        _(u"Alternative address is prefered"), default=False)      history = HistoricalRecords()      class Meta: @@ -1146,19 +1169,24 @@ class Address(BaseHistorizedItem):      def address_lbl(self):          lbl = u'' -        if self.address: -            lbl += self.address -        if self.address_complement: +        prefix = '' +        if self.alt_address_is_prefered: +            prefix = 'alt_' +        if getattr(self, prefix + 'address'): +            lbl += getattr(self, prefix + 'address') +        if getattr(self, prefix + 'address_complement'):              if lbl:                  lbl += "\n" -            lbl += self.address_complement -        if self.postal_code or self.town: +            lbl += getattr(self, prefix + 'address_complement') +        postal_code = getattr(self, prefix + 'postal_code') +        town = getattr(self, prefix + 'town') +        if postal_code or town:              if lbl:                  lbl += "\n"              lbl += u"{}{}{}".format( -                self.postal_code or '', -                " " if self.postal_code and self.town else '', -                self.town or '') +                postal_code or '', +                " " if postal_code and town else '', +                town or '')          if self.phone:              if lbl:                  lbl += u"\n" @@ -1248,6 +1276,8 @@ IMPORTER_CLASSES.update({  def get_importer_models():      MODELS = [ +        ('ishtar_common.models.Person', _(u"Person")), +        ('ishtar_common.models.Organization', _(u"Organization")),          ('archaeological_operations.models.Operation', _(u"Operation")),          ('archaeological_operations.models.ArchaeologicalSite',           _(u"Archaeological site")), @@ -1258,7 +1288,9 @@ def get_importer_models():      MODELS = [('archaeological_files.models.File',                _(u"Archaeological files"))] + MODELS      MODELS = [('archaeological_context_records.models.ContextRecord', -              _(u"Context records")), ] + MODELS +              _(u"Context records")), +              ('archaeological_context_records.models.RecordRelations', +              _(u"Context record relations"))] + MODELS      MODELS = [('archaeological_finds.models.BaseFind',                _(u"Finds")), ] + MODELS      return MODELS @@ -1653,6 +1685,8 @@ TARGET_MODELS = [      ('archaeological_finds.models.ObjectType', _(u"Object type")),      ('archaeological_context_records.models.IdentificationType',       _("Identification type")), +    ('archaeological_context_records.models.RelationType', +     _(u"Context record relation type")),      ('SupportType', _(u"Support type")),  ] @@ -1952,7 +1986,7 @@ pre_delete.connect(pre_delete_import, sender=Import)  class Organization(Address, Merge, OwnPerms, ValueGetter):      TABLE_COLS = ('name', 'organization_type',) -    name = models.CharField(_(u"Name"), max_length=300) +    name = models.CharField(_(u"Name"), max_length=500)      organization_type = models.ForeignKey(OrganizationType,                                            verbose_name=_(u"Type"))      history = HistoricalRecords() @@ -2022,6 +2056,8 @@ class Person(Address, Merge, OwnPerms, ValueGetter):      )      TABLE_COLS = ('name', 'surname', 'raw_name', 'email', 'person_types_list',                    'attached_to') +    SHOW_URL = 'show-person' +    MODIFY_URL = 'person_modify'      title = models.CharField(_(u"Title"), max_length=100, choices=TYPE,                               blank=True, null=True)      surname = models.CharField(_(u"Surname"), max_length=50, blank=True, @@ -2030,6 +2066,9 @@ class Person(Address, Merge, OwnPerms, ValueGetter):                              null=True)      raw_name = models.CharField(_(u"Raw name"), max_length=300, blank=True,                                  null=True) +    contact_type = models.CharField(_(u"Contact type"), max_length=300, +                                    blank=True, null=True) +    comment = models.TextField(_(u"Comment"), blank=True, null=True)      person_types = models.ManyToManyField(PersonType, verbose_name=_(u"Types"))      attached_to = models.ForeignKey(          'Organization', related_name='members', on_delete=models.SET_NULL, @@ -2199,7 +2238,7 @@ class IshtarUser(User):      def full_label(self):          return self.person.full_label() -    def has_perm(self, perm, model=None, session=None): +    def has_perm(self, perm, model=None, session=None, obj=None):          if not session:              return super(IshtarUser, self).has_perm(perm, model)          cache_key = 'usersession-{}-{}'.format(session.session_key, perm, @@ -2207,7 +2246,7 @@ class IshtarUser(User):          res = cache.get(cache_key)          if res in (True, False):              return res -        res = super(IshtarUser, self).has_perm(perm, model) +        res = super(IshtarUser, self).has_perm(perm, obj)          cache.set(cache_key, res, settings.CACHE_SMALLTIMEOUT)          return res diff --git a/ishtar_common/static/media/style.css b/ishtar_common/static/media/style.css index 4467a0639..1590c1738 100644 --- a/ishtar_common/static/media/style.css +++ b/ishtar_common/static/media/style.css @@ -57,6 +57,12 @@ div.form {      border-bottom:1px solid #D14;  } +hr.spacer{ +    clear:both; +    border:0; +    margin: 13px; +} +  /* shadows */  #progress-content,  .sheet{ @@ -1103,3 +1109,31 @@ a.remove{      background-image: none;  } +table.table-form{ +    background: #fff; +    border-collapse: collapse; +    text-align: center; +    padding: 10px 8px; +} + +#window table.table-form{ +    margin: 10px 80px; +} + +table.table-form th { +    text-align: center; +    font-weight: normal; +    padding: 8px 6px; +    color: #922; +    border-bottom: 2px solid #922; +} + +table.table-form td { +    text-align: center; +    color: #666; +    padding: 6px 15px; +} + +table.table-form td input{ +    border-color:#922; +} diff --git a/ishtar_common/templates/blocks/table_field.html b/ishtar_common/templates/blocks/table_field.html new file mode 100644 index 000000000..97d63ef46 --- /dev/null +++ b/ishtar_common/templates/blocks/table_field.html @@ -0,0 +1,4 @@ +  <tr{% if required %} class='required'{% endif %}> +    <th>{% if label %}{{label}}{% else %}{{ field.label_tag }}{% endif %}</th> +    <td> {{ field.errors }}{{field|safe}}</td> +  </tr> diff --git a/ishtar_common/templates/ishtar/blocks/modify_toolbar.html b/ishtar_common/templates/ishtar/blocks/modify_toolbar.html new file mode 100644 index 000000000..6f8cc7584 --- /dev/null +++ b/ishtar_common/templates/ishtar/blocks/modify_toolbar.html @@ -0,0 +1 @@ +{% load i18n link_to_window %}{% if item %}<div class='tool modify'><a href='{{item|link_to_modify}}'>{% trans "Modify" %}</a></div>{% endif %} diff --git a/ishtar_common/templates/ishtar/sheet.html b/ishtar_common/templates/ishtar/sheet.html index 1302e4637..714bfa762 100644 --- a/ishtar_common/templates/ishtar/sheet.html +++ b/ishtar_common/templates/ishtar/sheet.html @@ -44,6 +44,7 @@ jQuery(document).ready(function(){  });  </script>  {% endblock %} +{% block header_title %}{% endblock %}  <div class="body">  {% block toolbar %}{% endblock %}  {% block content %} diff --git a/ishtar_common/templates/ishtar/sheet_person.html b/ishtar_common/templates/ishtar/sheet_person.html index 796fe2c4a..f63bbc588 100644 --- a/ishtar_common/templates/ishtar/sheet_person.html +++ b/ishtar_common/templates/ishtar/sheet_person.html @@ -1,13 +1,11 @@  {% extends "ishtar/sheet.html" %}  {% load i18n window_field window_tables %} -{% block head_sheet %} -{{block.super}} -<h1>{% trans "Person"%}</h1> -{% endblock %} +{% block header_title %}<h1>{% trans "Person"%}</h1>{% endblock %} +{% block toolbar %}{% include "ishtar/sheet_toolbar.html" %}{% endblock %}  {% block content %} -<div class='tool'>{%trans "Export as:"%} <a href='{% url show-person item.pk "odt" %}'>{%trans "OpenOffice.org file"%}</a>, <a href='{% url show-person item.pk "pdf" %}'>{%trans "PDF file"%}</a></div> +<h3>{% trans "Identity" %}</h3>  {% field "Name" item.name %}  {% field "Surname" item.surname %} @@ -15,12 +13,49 @@  {% field "Created by" item.history_creator.ishtaruser.full_label %}  {% field "Email" item.email %}  {% field "Type(s)" item.person_types_list %} + +{% if item.phone or item.phone2 or item.phone3 or item.mobile_phone %} +<table class='formset table-form'> +  <caption>{% trans "Phone" %}</caption> +  <tr> +    <th>{% trans "Phone type" %}</th> +    <th>{% trans "Number" %}</th> +  </tr> +  {% if item.phone or item.phone_desc %}<tr> +    <td>{% if item.phone_desc %}{{item.phone_desc}}{% else %}–{% endif %}</td> +    <td>{% if item.phone %}{{item.phone}}{% else %}–{% endif %}</td> +  </tr>{% endif %} +  {% if item.phone2 or item.phone_desc2 %}<tr> +    <td>{% if item.phone_desc2 %}{{item.phone_desc2}}{% else %}–{% endif %}</td> +    <td>{% if item.phone2 %}{{item.phone2}}{% else %}–{% endif %}</td> +  </tr>{% endif %} +  {% if item.phone3 or item.phone_desc3 %}<tr> +    <td>{% if item.phone_desc3 %}{{item.phone_desc3}}{% else %}–{% endif %}</td> +    <td>{% if item.phone3 %}{{item.phone3}}{% else %}–{% endif %}</td> +  </tr>{% endif %} +  {% if item.mobile_phone %}<tr> +    <td>{% trans "Mobile phone" %}</td> +    <td>{{item.mobile_phone}}</td> +  </tr>{% endif %} +</table> +{% endif %} + +{% if item.address or item.postal_code or item.town %} +<h3>{% trans "Business address" %}</h3>  {% field "Address" item.address %}  {% field "Address complement" item.address_complement %}  {% field "Postal code" item.postal_code %}  {% field "Town" item.town %} -{% field "Phone" item.phone %} -{% field "Mobile phone" item.mobile_phone %} +{% endif %} + +{% if item.alt_address or item.alt_postal_code or item.alt_town %} +<h3>{% trans "Other address" %}</h3> +{% field "Address" item.alt_address %} +{% field "Address complement" item.alt_address_complement %} +{% field "Postal code" item.alt_postal_code %} +{% field "Town" item.alt_town %} +{% endif %} +  {% if item.attached_to %}<h3>{% trans "Associated organization"%}</h3>  {% field "Name" item.attached_to %} diff --git a/ishtar_common/templates/ishtar/sheet_toolbar.html b/ishtar_common/templates/ishtar/sheet_toolbar.html index 2e059781e..7e2c1659a 100644 --- a/ishtar_common/templates/ishtar/sheet_toolbar.html +++ b/ishtar_common/templates/ishtar/sheet_toolbar.html @@ -1,2 +1,2 @@  {% load i18n link_to_window %}<div class='tool'>{%trans "Export as:"%} <a href='{{item|link_to_odt}}'>{%trans "OpenOffice.org file"%}</a>, <a href='{{item|link_to_pdf}}'>{%trans "PDF file"%}</a></div> - +{% modify_toolbar item "person_modification" %} diff --git a/ishtar_common/templates/ishtar/wizard/default_wizard.html b/ishtar_common/templates/ishtar/wizard/default_wizard.html index 1a17cf32b..6491b7a0f 100644 --- a/ishtar_common/templates/ishtar/wizard/default_wizard.html +++ b/ishtar_common/templates/ishtar/wizard/default_wizard.html @@ -24,6 +24,7 @@  <div class='form'>  {{ wizard.form.media }}  {{ wizard.management_form }} +{% block form_detail %}  {% if wizard.form.forms %}    {{ wizard.form.management_form }}  <div class='top_button'><input type="submit" id="submit_form" value="{% trans "Validate" %}"/></div> @@ -39,6 +40,7 @@  {% table_form wizard.form %}  {% if not is_search %}</table>{% endif %}  {% endif %} +{% endblock %}  <input type="hidden" name="{{ step_field }}" value="{{ step0 }}" />  {{ previous_fields|safe }}  {% block "validation_bar" %} diff --git a/ishtar_common/templates/ishtar/wizard/wizard_person.html b/ishtar_common/templates/ishtar/wizard/wizard_person.html new file mode 100644 index 000000000..85bbfc75e --- /dev/null +++ b/ishtar_common/templates/ishtar/wizard/wizard_person.html @@ -0,0 +1,59 @@ +{% extends "ishtar/wizard/default_wizard.html" %} +{% load i18n range table_form %} +{% block form_detail %} + +<table class='formset'> +  <caption>{% trans "Identity" %}</caption> +  {% table_field wizard.form.title %} +  {% table_field wizard.form.surname 1 %} +  {% table_field wizard.form.name 1 %} +  {% table_field wizard.form.raw_name %} +  {% table_field wizard.form.email %} +  {% table_field wizard.form.attached_to %} +</table> + +<hr class='spacer'/> +<table class='formset table-form'> +  <caption>{% trans "Phone" %}</caption> +  <tr> +    <th>{% trans "Phone type" %}</th> +    <th>{% trans "Number" %}</th> +  </tr> +  <tr> +    <td>{{ wizard.form.phone_desc.errors }}{{wizard.form.phone_desc|safe}}</td> +    <td>{{ wizard.form.phone.errors }}{{wizard.form.phone|safe}}</td> +  </tr> +  <tr> +    <td>{{ wizard.form.phone_desc2.errors }}{{wizard.form.phone_desc2|safe}}</td> +    <td>{{ wizard.form.phone2.errors }}{{wizard.form.phone2|safe}}</td> +  </tr> +  <tr> +    <td>{{ wizard.form.phone_desc3.errors }}{{wizard.form.phone_desc3|safe}}</td> +    <td>{{ wizard.form.phone3.errors }}{{wizard.form.phone3|safe}}</td> +  </tr> +  <tr> +    <td>{% trans "Mobile phone" %}</td> +    <td>{{ wizard.form.mobile_phone.errors }}{{wizard.form.mobile_phone|safe}}</td> +  </tr> +</table> +<hr class='spacer'/> + +<table class='formset'> +  <caption>{% trans "Business address" %}</caption> +  {% table_field wizard.form.address %} +  {% table_field wizard.form.address_complement %} +  {% table_field wizard.form.postal_code %} +  {% table_field wizard.form.town %} +  {% table_field wizard.form.country %} +</table> +<hr class='spacer'/> +<table class='formset'> +  <caption>{% trans "Other address" %}</caption> +  {% table_field wizard.form.alt_address 0 'Address' %} +  {% table_field wizard.form.alt_address_complement 0 'Address complement' %} +  {% table_field wizard.form.alt_postal_code 0 'Postal code' %} +  {% table_field wizard.form.alt_town 0 'Town' %} +  {% table_field wizard.form.alt_country 0 'Country' %} +</table> + +{% endblock %} diff --git a/ishtar_common/templatetags/link_to_window.py b/ishtar_common/templatetags/link_to_window.py index 65e8b23ca..5ff928bb1 100644 --- a/ishtar_common/templatetags/link_to_window.py +++ b/ishtar_common/templatetags/link_to_window.py @@ -24,3 +24,25 @@ def link_to_odt(item):  @register.filter  def link_to_pdf(item):      return reverse(item.SHOW_URL, args=[item.pk, 'pdf']) + + +@register.filter +def link_to_modify(item): +    if not hasattr(item, 'MODIFY_URL') or not item: +        return "" +    return reverse(item.MODIFY_URL, args=[item.pk]) + + +@register.inclusion_tag('ishtar/blocks/modify_toolbar.html', +                        takes_context=True) +def modify_toolbar(context, item, action): +    request = context.get('request') +    items_by_idx = request.session['MENU'].items_by_idx.keys() +    if action not in items_by_idx: +        return {} +    menu = request.session['MENU'].items_by_idx[action] +    user = request.user +    if not hasattr(user, 'ishtaruser') or \ +            not menu.is_available(user.ishtaruser, item): +        return {} +    return {'item': item} diff --git a/ishtar_common/templatetags/table_form.py b/ishtar_common/templatetags/table_form.py index 6ee99b9a5..596301f89 100644 --- a/ishtar_common/templatetags/table_form.py +++ b/ishtar_common/templatetags/table_form.py @@ -2,6 +2,7 @@  # -*- coding: utf-8 -*-  from django.template import Library +from django.utils.translation import ugettext_lazy as _  register = Library() @@ -9,3 +10,10 @@ register = Library()  @register.inclusion_tag('blocks/form_snippet.html')  def table_form(form):      return {'form': form} + + +@register.inclusion_tag('blocks/table_field.html') +def table_field(field, required=False, label=None): +    if label: +        label = _(label) +    return {'field': field, 'required': required, 'label': label} diff --git a/ishtar_common/urls.py b/ishtar_common/urls.py index 036494354..a3bcaffb5 100644 --- a/ishtar_common/urls.py +++ b/ishtar_common/urls.py @@ -43,6 +43,8 @@ urlpatterns = patterns(      url(r'person_modification/(?P<step>.+)?$',          check_rights(['change_person', 'change_own_person'])(              views.person_modification_wizard), name='person_modification'), +    url(r'person_modify/(?P<pk>.+)/$', views.person_modify, +        name='person_modify'),      url(r'person_deletion/(?P<step>.+)?$',          check_rights(['change_person', 'change_own_person'])(              views.person_deletion_wizard), name='person_deletion'), diff --git a/ishtar_common/views.py b/ishtar_common/views.py index 54eb9164f..296d56648 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -103,6 +103,15 @@ person_modification_wizard = wizards.PersonModifWizard.as_view(      label=_(u"Person modification"),      url_name='person_modification') + +def person_modify(request, pk): +    person_modification_wizard(request) +    wizards.PersonModifWizard.session_set_value( +        request, 'selec-person_modification', 'pk', pk, reset=True) +    return redirect(reverse('person_modification', +                            kwargs={'step': 'identity-person_modification'})) + +  person_deletion_wizard = wizards.PersonDeletionWizard.as_view(      [('selec-person_deletion', forms.PersonFormSelection),       ('final-person_deletion', FinalDeleteForm)], diff --git a/ishtar_common/wizards.py b/ishtar_common/wizards.py index 0b121fd76..e974942b7 100644 --- a/ishtar_common/wizards.py +++ b/ishtar_common/wizards.py @@ -1112,10 +1112,14 @@ class ClosingWizard(Wizard):  class PersonWizard(Wizard):      model = models.Person +    wizard_templates = { +        'identity-person_creation': "ishtar/wizard/wizard_person.html"}  class PersonModifWizard(PersonWizard):      modification = True +    wizard_templates = { +        'identity-person_modification': "ishtar/wizard/wizard_person.html"}  class PersonDeletionWizard(DeletionWizard): diff --git a/translations/fr/archaeological_context_records.po b/translations/fr/archaeological_context_records.po index 7d679c1f8..c2aca222b 100644 --- a/translations/fr/archaeological_context_records.po +++ b/translations/fr/archaeological_context_records.po @@ -3,19 +3,20 @@  # This file is distributed under the same license as the Ishtar package.  # Étienne Loks <etienne.loks at peacefrogs net>, 2010-2015.  # Valérie-Emma Leroux <emma@iggdrasil.net>, 2016. #zanata +# Étienne Loks <etienne.loks@iggdrasil.net>, 2016. #zanata  msgid ""  msgstr ""  "MIME-Version: 1.0\n"  "Content-Transfer-Encoding: 8bit\n"  "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2016-02-24 10:48-0500\n" -"Last-Translator: Valérie-Emma Leroux <emma@iggdrasil.net>\n" +"PO-Revision-Date: 2016-04-07 09:18-0400\n" +"Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"  "Language-Team: \n"  "Language: fr\n"  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.8.2\n" -#: forms.py:45 forms.py:104 models.py:125 +#: forms.py:45 forms.py:112 models.py:125  #: templates/ishtar/sheet_contextrecord.html:72  msgid "ID"  msgstr "Identifiant" @@ -36,7 +37,7 @@ msgstr "Numéro de l'opération (index par année)"  msgid "Archaelogical site"  msgstr "Entité Archéologique" -#: forms.py:59 forms.py:170 models.py:48 +#: forms.py:59 forms.py:178 models.py:48  msgid "Period"  msgstr "Période" @@ -48,158 +49,162 @@ msgstr "Type d'unité"  msgid "Parcel (section/number)"  msgstr "Parcelle (section/numéro)" -#: forms.py:79 forms.py:266 views.py:78 +#: forms.py:63 +msgid "Search within relations" +msgstr "Recherche parmi les relations" + +#: forms.py:87 forms.py:274 views.py:78  msgid "Context record search"  msgstr "Recherche d'Unité d'Enregistrement" -#: forms.py:93 +#: forms.py:101  msgid "You should at least select one context record."  msgstr "Vous devez sélectionner au moins une Unité d'Enregistrement." -#: forms.py:99 +#: forms.py:107  msgid "General"  msgstr "Général" -#: forms.py:103 models.py:118 models.py:121 +#: forms.py:111 models.py:118 models.py:121  #: templates/ishtar/sheet_contextrecord.html:76  msgid "Parcel"  msgstr "Parcelle" -#: forms.py:106 models.py:126 templates/ishtar/sheet_contextrecord.html:42 +#: forms.py:114 models.py:126 templates/ishtar/sheet_contextrecord.html:42  #: templates/ishtar/sheet_contextrecord.html:75  msgid "Description"  msgstr "Description" -#: forms.py:108 models.py:131 +#: forms.py:116 models.py:131  msgid "Length (cm)"  msgstr "Longueur (cm)" -#: forms.py:109 models.py:132 +#: forms.py:117 models.py:132  msgid "Width (cm)"  msgstr "Largeur (cm)" -#: forms.py:110 models.py:133 +#: forms.py:118 models.py:133  msgid "Thickness (cm)"  msgstr "Épaisseur (cm)" -#: forms.py:111 models.py:135 +#: forms.py:119 models.py:135  msgid "Depth (cm)"  msgstr "Profondeur (cm)" -#: forms.py:112 models.py:141 +#: forms.py:120 models.py:141  msgid "Unit"  msgstr "Unité" -#: forms.py:114 models.py:137 +#: forms.py:122 models.py:137  msgid "Location"  msgstr "Lieu" -#: forms.py:159 +#: forms.py:167  msgid "This ID already exists for this operation."  msgstr "Cet identifiant existe déjà pour cette opération." -#: forms.py:165 forms.py:189 models.py:59 +#: forms.py:173 forms.py:197 models.py:59  msgid "Dating"  msgstr "Datation" -#: forms.py:171 models.py:49 +#: forms.py:179 models.py:49  msgid "Start date"  msgstr "Date de début" -#: forms.py:172 models.py:50 models.py:130 +#: forms.py:180 models.py:50 models.py:130  msgid "End date"  msgstr "Date de fin" -#: forms.py:173 models.py:53 +#: forms.py:181 models.py:53  msgid "Quality"  msgstr "Qualité" -#: forms.py:174 models.py:35 models.py:51 +#: forms.py:182 models.py:35 models.py:51  msgid "Dating type"  msgstr "Type de datation" -#: forms.py:198 ishtar_menu.py:29 models.py:321 +#: forms.py:206 ishtar_menu.py:29 models.py:321  msgid "Context record"  msgstr "Unité d'Enregistrement" -#: forms.py:218 +#: forms.py:226  msgid "Relations"  msgstr "Relations" -#: forms.py:222 forms.py:229 models.py:146 +#: forms.py:230 forms.py:237 models.py:146  #: templates/ishtar/sheet_contextrecord.html:52  msgid "Interpretation"  msgstr "Interprétation" -#: forms.py:225 models.py:143 +#: forms.py:233 models.py:143  msgid "Has furniture?"  msgstr "Contient du mobilier ?" -#: forms.py:227 models.py:145 +#: forms.py:235 models.py:145  msgid "Filling"  msgstr "Remplissage" -#: forms.py:231 models.py:166 +#: forms.py:239 models.py:166  msgid "Activity"  msgstr "Activité" -#: forms.py:233 models.py:164 +#: forms.py:241 models.py:164  msgid "Identification"  msgstr "Identification" -#: forms.py:235 models.py:149 +#: forms.py:243 models.py:149  msgid "TAQ"  msgstr "TAQ" -#: forms.py:236 models.py:153 +#: forms.py:244 models.py:153  msgid "Estimated TAQ"  msgstr "TAQ estimé" -#: forms.py:238 models.py:156 +#: forms.py:246 models.py:156  msgid "TPQ"  msgstr "TPQ" -#: forms.py:239 models.py:160 +#: forms.py:247 models.py:160  msgid "Estimated TPQ"  msgstr "TPQ estimé" -#: forms.py:252 +#: forms.py:260  msgid "Operation search"  msgstr "Recherche d'Opérations" -#: forms.py:254 +#: forms.py:262  msgid "You should select an operation."  msgstr "Vous devez sélectionner une Opération." -#: forms.py:259 +#: forms.py:267  msgid "Would you like to delete this context record?"  msgstr "Voulez-vous supprimer cette Unité d'Enregistrement ?" -#: forms.py:268 +#: forms.py:276  msgid "You should select a context record."  msgstr "Vous devez sélectionner une Unité d'Enregistrement." -#: forms.py:273 +#: forms.py:281  msgid "Town of the operation"  msgstr "Commune de l'opération" -#: forms.py:275 +#: forms.py:283  msgid "Year of the operation"  msgstr "Année de l'opération" -#: forms.py:277 +#: forms.py:285  msgid "Period of the context record"  msgstr "Période de l'Unité d'Enregistrement" -#: forms.py:279 +#: forms.py:287  msgid "Unit type of the context record"  msgstr "Type d'unité de l'Unité d'Enregistrement" -#: forms.py:292 +#: forms.py:300  msgid "Documentation search"  msgstr "Recherche de documents" -#: forms.py:294 +#: forms.py:302  msgid "You should select a document."  msgstr "Vous devez sélectionner un document." diff --git a/translations/fr/archaeological_operations.po b/translations/fr/archaeological_operations.po index eb5ab5738..660fbeba2 100644 --- a/translations/fr/archaeological_operations.po +++ b/translations/fr/archaeological_operations.po @@ -17,12 +17,12 @@ msgstr ""  "Plural-Forms: nplurals=2; plural=n>1;\n"  "X-Generator: Zanata 3.8.2\n" -#: forms.py:66 forms.py:333 forms.py:903 forms.py:925 forms.py:929 +#: forms.py:66 forms.py:344 forms.py:914 forms.py:936 forms.py:940  #: models.py:782 templates/ishtar/blocks/window_tables/parcels.html:8  msgid "Parcels"  msgstr "Parcelles" -#: forms.py:69 forms.py:185 forms.py:879 models.py:772 +#: forms.py:69 forms.py:185 forms.py:890 models.py:772  #: templates/ishtar/blocks/window_tables/parcels.html:5  #: templates/ishtar/dashboards/dashboard_operation.html:302  #: templates/ishtar/dashboards/dashboard_operation.html:315 @@ -31,7 +31,7 @@ msgstr "Parcelles"  msgid "Town"  msgstr "Commune" -#: forms.py:71 forms.py:422 forms.py:693 forms.py:1111 models.py:158 +#: forms.py:71 forms.py:433 forms.py:704 forms.py:1147 models.py:158  #: models.py:589 models.py:770  #: templates/ishtar/blocks/window_tables/parcels.html:6  msgid "Year" @@ -66,53 +66,53 @@ msgstr "Saisie libre"  msgid "example: \"2013: XD:1 to 13,24,33 to 39, YD:24\" or \"AB:24,AC:42\""  msgstr "exemple : \"2013: XD:1 à 13,24,33 à 39, YD:24\" ou \"AB:24,AC:42\"" -#: forms.py:327 +#: forms.py:338  msgid "There are identical parcels."  msgstr "Il y a des parcelles identiques." -#: forms.py:342 +#: forms.py:353  msgid "Relation type"  msgstr "Type de relation" -#: forms.py:345 ishtar_menu.py:30 models.py:237 models.py:490 models.py:515 +#: forms.py:356 ishtar_menu.py:30 models.py:237 models.py:490 models.py:515  #: models.py:530 models.py:581 models.py:769 wizards.py:338 wizards.py:349  #: templates/ishtar/sheet_operation.html:6  msgid "Operation"  msgstr "Opération" -#: forms.py:364 +#: forms.py:375  msgid ":"  msgstr ": " -#: forms.py:372 forms.py:548 forms.py:1083 +#: forms.py:383 forms.py:559 forms.py:1119  msgid "You should select an operation."  msgstr "Vous devez sélectionner une opération." -#: forms.py:376 +#: forms.py:387  msgid "You should select a relation type."  msgstr "Vous devez sélectionner un type de relation." -#: forms.py:406 +#: forms.py:417  msgid "Current relations"  msgstr "Relations actuelles" -#: forms.py:408 +#: forms.py:419  msgid "Deleted relations"  msgstr "Relations supprimées" -#: forms.py:412 templates/ishtar/sheet_operation.html:115 +#: forms.py:423 templates/ishtar/sheet_operation.html:115  msgid "Relations"  msgstr "Relations" -#: forms.py:423 +#: forms.py:434  msgid "Numeric reference"  msgstr "Identifiant numérique" -#: forms.py:428 forms.py:1121 +#: forms.py:439 forms.py:1157  msgid "Parcel (section/number)"  msgstr "Parcelle (section/numéro)" -#: forms.py:431 forms.py:1124 models.py:491 +#: forms.py:442 forms.py:1160 models.py:491  #: templates/ishtar/dashboards/dashboard_operation.html:273  #: templates/ishtar/dashboards/dashboard_operation.html:286  #: templates/ishtar/dashboards/dashboard_operation.html:453 @@ -120,215 +120,215 @@ msgstr "Parcelle (section/numéro)"  msgid "Department"  msgstr "Département" -#: forms.py:432 forms.py:964 models.py:77 +#: forms.py:443 forms.py:1000 models.py:77  #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:6  msgid "Name"  msgstr "Nom" -#: forms.py:434 forms.py:615 forms.py:691 forms.py:1088 models.py:166 +#: forms.py:445 forms.py:626 forms.py:702 forms.py:1124 models.py:166  msgid "Operation type"  msgstr "Type d'opération" -#: forms.py:436 +#: forms.py:447  msgid "Is open?"  msgstr "Est ouvert ?" -#: forms.py:445 forms.py:717 models.py:155 +#: forms.py:456 forms.py:728 models.py:155  msgid "In charge"  msgstr "Responsable" -#: forms.py:452 models.py:575 +#: forms.py:463 models.py:575  msgid "Scientist in charge"  msgstr "Responsable scientifique" -#: forms.py:454 forms.py:617 forms.py:708 models.py:153 +#: forms.py:465 forms.py:628 forms.py:719 models.py:153  msgid "Operator"  msgstr "Opérateur" -#: forms.py:461 forms.py:969 models.py:81 models.py:168 +#: forms.py:472 forms.py:1005 models.py:81 models.py:168  #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:8  msgid "Remains"  msgstr "Vestiges" -#: forms.py:462 forms.py:948 forms.py:966 models.py:79 models.py:173 +#: forms.py:473 forms.py:984 forms.py:1002 models.py:79 models.py:173  #: templates/ishtar/blocks/window_tables/archaeologicalsites.html:7  msgid "Periods"  msgstr "Périodes" -#: forms.py:463 +#: forms.py:474  msgid "Started before"  msgstr "Commencé avant" -#: forms.py:465 +#: forms.py:476  msgid "Started after"  msgstr "Commencé après" -#: forms.py:467 +#: forms.py:478  msgid "Ended before"  msgstr "Terminé avant" -#: forms.py:469 +#: forms.py:480  msgid "Ended after"  msgstr "Terminé après" -#: forms.py:472 +#: forms.py:483  msgid "Search within relations"  msgstr "Recherche parmi les relations" -#: forms.py:474 forms.py:759 models.py:219 +#: forms.py:485 forms.py:770 models.py:219  msgid "Comment"  msgstr "Commentaire" -#: forms.py:475 +#: forms.py:486  msgid "Abstract (full text search)"  msgstr "Résumé (recherche texte intégral)" -#: forms.py:476 forms.py:761 models.py:231 +#: forms.py:487 forms.py:772 models.py:231  msgid "Record quality"  msgstr "Qualité d'enregistrement" -#: forms.py:477 forms.py:740 models.py:185 +#: forms.py:488 forms.py:751 models.py:185  msgid "Report processing"  msgstr "Traitement du rapport" -#: forms.py:479 forms.py:764 models.py:226 +#: forms.py:490 forms.py:775 models.py:226  msgid "Virtual operation"  msgstr "Opération virtuelle" -#: forms.py:481 forms.py:1009 +#: forms.py:492 forms.py:1045  msgid "Archaelogical site"  msgstr "Entité Archéologique" -#: forms.py:487 forms.py:1128 +#: forms.py:498 forms.py:1164  msgid "Created by"  msgstr "Créé par" -#: forms.py:493 forms.py:1134 +#: forms.py:504 forms.py:1170  msgid "Modified by"  msgstr "Modifié par" -#: forms.py:535 forms.py:1081 views.py:231 +#: forms.py:546 forms.py:1117 views.py:231  msgid "Operation search"  msgstr "Recherche d'opérations" -#: forms.py:579 +#: forms.py:590  msgid "Associated file"  msgstr "Dossier associé" -#: forms.py:583 forms.py:827 models.py:586 wizards.py:76 +#: forms.py:594 forms.py:838 models.py:586 wizards.py:76  msgid "Archaelogical file"  msgstr "Dossier" -#: forms.py:590 forms.py:592 models.py:233 +#: forms.py:601 forms.py:603 models.py:233  msgid "Abstract"  msgstr "Résumé" -#: forms.py:595 +#: forms.py:606  msgid "months"  msgstr "mois" -#: forms.py:595 +#: forms.py:606  msgid "years"  msgstr "années" -#: forms.py:597 models.py:139 +#: forms.py:608 models.py:139  msgid "Creation date"  msgstr "Date de création" -#: forms.py:598 +#: forms.py:609  msgid "Start of field work"  msgstr "Début du travail de terrain" -#: forms.py:600 +#: forms.py:611  msgid "All"  msgstr "Tout" -#: forms.py:601 +#: forms.py:612  msgid "Preventive"  msgstr "Préventif" -#: forms.py:602 +#: forms.py:613  msgid "Research"  msgstr "Programmé" -#: forms.py:606 +#: forms.py:617  msgid "Slicing"  msgstr "Découpage" -#: forms.py:609 +#: forms.py:620  msgid "Department detail"  msgstr "Détail par département" -#: forms.py:611 +#: forms.py:622  msgid "Date get from"  msgstr "Date obtenue depuis" -#: forms.py:613 +#: forms.py:624  msgid "Preventive/Research"  msgstr "Préventif/Programmé" -#: forms.py:619 +#: forms.py:630  msgid "Date after"  msgstr "Date après" -#: forms.py:621 +#: forms.py:632  msgid "Date before"  msgstr "Date avant" -#: forms.py:623 +#: forms.py:634  msgid "With reports"  msgstr "Avec un rapport" -#: forms.py:624 +#: forms.py:635  msgid "With finds"  msgstr "Avec du mobilier" -#: forms.py:676 forms.py:1181 templates/ishtar/sheet_administrativeact.html:11 +#: forms.py:687 forms.py:1217 templates/ishtar/sheet_administrativeact.html:11  #: templates/ishtar/sheet_operation.html:32  msgid "General"  msgstr "Général" -#: forms.py:689 models.py:218 +#: forms.py:700 models.py:218  msgid "Generic name"  msgstr "Nom générique" -#: forms.py:698 +#: forms.py:709  msgid "Head scientist"  msgstr "Responsable scientifique" -#: forms.py:714 models.py:217 +#: forms.py:725 models.py:217  msgid "Operator reference"  msgstr "Référence de l'opérateur" -#: forms.py:726 +#: forms.py:737  msgid "Total surface (m2)"  msgstr "Surface totale (m2)" -#: forms.py:733 models.py:49 models.py:142 models.py:940 +#: forms.py:744 models.py:49 models.py:142 models.py:940  msgid "Start date"  msgstr "Date de début" -#: forms.py:735 models.py:144 +#: forms.py:746 models.py:144  msgid "Excavation end date"  msgstr "Date de fin de chantier" -#: forms.py:738 models.py:145 +#: forms.py:749 models.py:145  msgid "Report delivery date"  msgstr "Date de livraison du rapport" -#: forms.py:791 +#: forms.py:802  msgid ""  "If you want to set an excavation end date you have to provide a start date."  msgstr ""  "Avant de renseigner la date de fin de chantier, il est nécessaire de "  "renseigner une date de début." -#: forms.py:796 +#: forms.py:807  msgid "The excavation end date cannot be before the start date."  msgstr ""  "La date de fin de chantier ne peut être antérieure à la date de début." -#: forms.py:813 +#: forms.py:824  #, python-format  msgid ""  "Operation code already exist for year: %(year)d - use a value bigger than " @@ -337,109 +337,109 @@ msgstr ""  "Ce code d'opération existe déjà pour l'année %(year)d - utilisez une valeur "  "plus grande que %(last_val)d" -#: forms.py:817 +#: forms.py:828  msgid "Bad operation code"  msgstr "Mauvais code d'opération" -#: forms.py:823 models.py:159 models.py:368 +#: forms.py:834 models.py:159 models.py:368  msgid "Operation code"  msgstr "Code de l'opération" -#: forms.py:849 +#: forms.py:860  msgid "Preventive informations - excavation"  msgstr "Information archéologie préventive - fouille" -#: forms.py:850 models.py:171 +#: forms.py:861 models.py:171  #: templates/ishtar/dashboards/dashboard_operation.html:495  msgid "Cost (euros)"  msgstr "Coût (euros)" -#: forms.py:851 models.py:176 +#: forms.py:862 models.py:176  msgid "Scheduled man-days"  msgstr "Jours-hommes prévus" -#: forms.py:853 models.py:179 +#: forms.py:864 models.py:179  msgid "Optional man-days"  msgstr "Jours-hommes optionnels" -#: forms.py:855 models.py:182 +#: forms.py:866 models.py:182  msgid "Effective man-days"  msgstr "Jours-hommes effectifs" -#: forms.py:865 +#: forms.py:876  msgid "Preventive informations - diagnostic"  msgstr "Information archéologie préventive - diagnostic" -#: forms.py:868 models.py:201 +#: forms.py:879 models.py:201  msgid "Prescription on zoning"  msgstr "Prescription sur zonage" -#: forms.py:870 models.py:204 +#: forms.py:881 models.py:204  msgid "Prescription on large area"  msgstr "Prescription sur une vaste surface" -#: forms.py:873 models.py:206 +#: forms.py:884 models.py:206  msgid "Prescription on geoarchaeological context"  msgstr "Prescription sur un contexte géoarchéologique" -#: forms.py:877 forms.py:899 models.py:170 models.py:599 +#: forms.py:888 forms.py:910 models.py:170 models.py:599  msgid "Towns"  msgstr "Communes" -#: forms.py:906 models.py:781 models.py:938 +#: forms.py:917 models.py:781 models.py:938  msgid "Parcel"  msgstr "Parcelle" -#: forms.py:933 models.py:43 +#: forms.py:969 models.py:43  msgid "Remain types"  msgstr "Types de vestige" -#: forms.py:937 models.py:42 +#: forms.py:973 models.py:42  msgid "Remain type"  msgstr "Type de vestige" -#: forms.py:952 +#: forms.py:988  msgid "Period"  msgstr "Période" -#: forms.py:963 models.py:76 +#: forms.py:999 models.py:76  msgid "Reference"  msgstr "Référence" -#: forms.py:988 +#: forms.py:1024  msgid "This reference already exists."  msgstr "Cette référence existe déjà." -#: forms.py:1005 models.py:85 +#: forms.py:1041 models.py:85  msgid "Archaeological site"  msgstr "Entité archéologique" -#: forms.py:1020 models.py:86 models.py:223 +#: forms.py:1056 models.py:86 models.py:223  #: templates/ishtar/sheet_operation.html:126  msgid "Archaeological sites"  msgstr "Entités archéologiques" -#: forms.py:1024 +#: forms.py:1060  msgid "Associated archaelogical sites"  msgstr "Entités archéologiques associées" -#: forms.py:1030 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92 +#: forms.py:1066 ishtar_menu.py:33 ishtar_menu.py:63 ishtar_menu.py:92  msgid "Search"  msgstr "Recherche" -#: forms.py:1035 +#: forms.py:1071  msgid "Would you like to close this operation?"  msgstr "Voulez-vous clore cette opération ?" -#: forms.py:1040 +#: forms.py:1076  msgid "Would you like to delete this operation?"  msgstr "Voulez-vous supprimer cette opération ?" -#: forms.py:1049 forms.py:1112 models.py:517 models.py:566 +#: forms.py:1085 forms.py:1148 models.py:517 models.py:566  msgid "Index"  msgstr "Index" -#: forms.py:1075 +#: forms.py:1111  #, python-format  msgid ""  "Index already exists for operation: %(operation)s - use a value bigger than " @@ -448,68 +448,68 @@ msgstr ""  "Cet index existe déjà pour l'opération : %(operation)s, utilisez une valeur "  "plus grande que %(last_val)d" -#: forms.py:1087 +#: forms.py:1123  msgid "Operation's town"  msgstr "Commune de l'opération" -#: forms.py:1090 +#: forms.py:1126  msgid "Operation's year"  msgstr "Année de l'opération" -#: forms.py:1101 +#: forms.py:1137  msgid "Documentation search"  msgstr "Recherche de document" -#: forms.py:1103 +#: forms.py:1139  msgid "You should select a document."  msgstr "Vous devez sélectionner un document." -#: forms.py:1118 forms.py:1184 models.py:541 models.py:560 +#: forms.py:1154 forms.py:1220 models.py:541 models.py:560  msgid "Act type"  msgstr "Type d'acte" -#: forms.py:1119 forms.py:1272 +#: forms.py:1155 forms.py:1308  msgid "Indexed?"  msgstr "Indexé ?" -#: forms.py:1125 forms.py:1189 models.py:590 +#: forms.py:1161 forms.py:1225 models.py:590  #: templates/ishtar/blocks/window_tables/administrativacts.html:8  msgid "Object"  msgstr "Objet" -#: forms.py:1161 views.py:373 +#: forms.py:1197 views.py:373  msgid "Administrative act search"  msgstr "Recherche d'actes administratifs" -#: forms.py:1176 forms.py:1230 forms.py:1297 +#: forms.py:1212 forms.py:1266 forms.py:1333  msgid "You should select an administrative act."  msgstr "Vous devez sélectionner un acte administratif." -#: forms.py:1192 models.py:587 +#: forms.py:1228 models.py:587  msgid "Signature date"  msgstr "Date de signature" -#: forms.py:1207 +#: forms.py:1243  msgid "Would you like to delete this administrative act?"  msgstr "Voulez-vous supprimer cet acte administratif ?" -#: forms.py:1212 +#: forms.py:1248  msgid "Template"  msgstr "Patron" -#: forms.py:1236 forms.py:1240 +#: forms.py:1272 forms.py:1276  msgid "This document is not intended for this type of act."  msgstr "Ce document n'est pas destiné à ce type d'acte." -#: forms.py:1258 +#: forms.py:1294  msgid "Doc generation"  msgstr "Génération de document" -#: forms.py:1260 +#: forms.py:1296  msgid "Generate the associated doc?"  msgstr "Générer le document associé ?" -#: forms.py:1281 ishtar_menu.py:121 views.py:407 +#: forms.py:1317 ishtar_menu.py:121 views.py:407  msgctxt "admin act register"  msgid "Register"  msgstr "Registre" diff --git a/translations/fr/ishtar_common.po b/translations/fr/ishtar_common.po index 4177bafdd..9473fecad 100644 --- a/translations/fr/ishtar_common.po +++ b/translations/fr/ishtar_common.po @@ -10,7 +10,7 @@ msgstr ""  "MIME-Version: 1.0\n"  "Content-Transfer-Encoding: 8bit\n"  "Content-Type: text/plain; charset=UTF-8\n" -"PO-Revision-Date: 2016-03-16 03:21-0400\n" +"PO-Revision-Date: 2016-04-07 09:17-0400\n"  "Last-Translator: Étienne Loks <etienne.loks@iggdrasil.net>\n"  "Language-Team: \n"  "Language: fr\n" @@ -33,7 +33,7 @@ msgstr "Élément associé"  msgid "Archaeological file"  msgstr "Dossier" -#: context_processors.py:38 models.py:1251 +#: context_processors.py:38 models.py:1281  msgid "Operation"  msgstr "Opération" @@ -161,7 +161,7 @@ msgstr "\"%(value)s\" n'est pas dans %(values)s"  msgid "Enter a valid name consisting of letters, spaces and hyphens."  msgstr "Entrez un nom correct composé de lettres, espaces et tirets." -#: forms.py:71 forms_common.py:420 +#: forms.py:71 forms_common.py:441  msgid "Confirm"  msgstr "Confirmer" @@ -190,7 +190,7 @@ msgid "Template"  msgstr "Patron"  #: forms_common.py:39 forms_common.py:57 forms_common.py:169 -#: forms_common.py:269 forms_common.py:274 models.py:1124 models.py:2340 +#: forms_common.py:289 models.py:1124 models.py:2377  #: templates/blocks/JQueryAdvancedTown.html:19  #: templates/ishtar/sheet_organization.html:17  msgid "Town" @@ -214,67 +214,72 @@ msgstr ""  "<p class='example'>Par exemple tapez « saint denis 93 » pour obtenir la "  "commune Saint-Denis dans le département français de Seine-Saint-Denis.</p>" -#: forms_common.py:66 forms_common.py:648 ishtar_menu.py:42 models.py:2039 -#: models.py:2168 models.py:2222 templates/ishtar/sheet_person.html:6 +#: forms_common.py:66 forms_common.py:669 ishtar_menu.py:42 models.py:1279 +#: models.py:2076 models.py:2205 models.py:2259 +#: templates/ishtar/sheet_person.html:6  msgid "Person"  msgstr "Personne" -#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1961 -#: templates/ishtar/sheet_organization.html:6 +#: forms_common.py:157 forms_common.py:231 ishtar_menu.py:66 models.py:1280 +#: models.py:1995 templates/ishtar/sheet_organization.html:6  msgid "Organization"  msgstr "Organisation"  #: forms_common.py:160 forms_common.py:196 forms_common.py:226 -#: forms_common.py:259 models.py:775 models.py:1057 models.py:1293 -#: models.py:1511 models.py:1955 models.py:2029 models.py:2326 +#: forms_common.py:259 models.py:775 models.py:1057 models.py:1325 +#: models.py:1543 models.py:1989 models.py:2063 models.py:2363  #: templates/ishtar/sheet_organization.html:12  #: templates/ishtar/sheet_organization.html:25  msgid "Name"  msgstr "Nom" -#: forms_common.py:161 models.py:1238 models.py:1642 +#: forms_common.py:161 models.py:1266 models.py:1674  msgid "Organization type"  msgstr "Type d'organisation" -#: forms_common.py:163 forms_common.py:263 models.py:1119 +#: forms_common.py:163 forms_common.py:283 models.py:1119  #: templates/ishtar/sheet_organization.html:14  msgid "Address"  msgstr "Adresse" -#: forms_common.py:165 forms_common.py:265 models.py:1120 +#: forms_common.py:165 forms_common.py:286 models.py:1120  #: templates/ishtar/sheet_organization.html:15  msgid "Address complement"  msgstr "Complément d'adresse" -#: forms_common.py:167 forms_common.py:267 models.py:1122 +#: forms_common.py:167 forms_common.py:287 models.py:1122  #: templates/ishtar/sheet_organization.html:16  msgid "Postal code"  msgstr "Code postal" -#: forms_common.py:170 forms_common.py:270 models.py:1125 +#: forms_common.py:170 forms_common.py:290 models.py:1125  msgid "Country"  msgstr "Pays" -#: forms_common.py:172 forms_common.py:228 forms_common.py:272 -#: forms_common.py:376 models.py:1131 +#: forms_common.py:172 forms_common.py:228 forms_common.py:263 +#: forms_common.py:397 models.py:1152  msgid "Email"  msgstr "Courriel" -#: forms_common.py:173 forms_common.py:273 models.py:1127 +#: forms_common.py:173 forms_common.py:266 models.py:1137  #: templates/ishtar/sheet_organization.html:18 +#: templates/ishtar/sheet_person.html:23 +#: templates/ishtar/wizard/wizard_person.html:17  msgid "Phone"  msgstr "Téléphone" -#: forms_common.py:174 models.py:1128 +#: forms_common.py:174 forms_common.py:275 models.py:1149  #: templates/ishtar/sheet_organization.html:19 +#: templates/ishtar/sheet_person.html:41 +#: templates/ishtar/wizard/wizard_person.html:35  msgid "Mobile phone"  msgstr "Téléphone portable" -#: forms_common.py:197 forms_common.py:229 models.py:1666 models.py:1957 -#: models.py:2263 templates/sheet_ope.html:85 templates/sheet_ope.html.py:105 +#: forms_common.py:197 forms_common.py:229 models.py:1700 models.py:1991 +#: models.py:2300 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:27 -#: templates/ishtar/sheet_person.html:56 +#: templates/ishtar/sheet_person.html:95  #: templates/ishtar/blocks/window_tables/documents.html:6  msgid "Type"  msgstr "Type" @@ -283,7 +288,7 @@ msgstr "Type"  msgid "Organization search"  msgstr "Recherche d'organisations" -#: forms_common.py:227 forms_common.py:257 models.py:2027 +#: forms_common.py:227 forms_common.py:257 models.py:2061  #: templates/ishtar/sheet_organization.html:26  msgid "Surname"  msgstr "Prénom" @@ -292,145 +297,186 @@ msgstr "Prénom"  msgid "Person search"  msgstr "Recherche de personnes" -#: forms_common.py:254 +#: forms_common.py:254 templates/ishtar/sheet_person.html:12 +#: templates/ishtar/wizard/wizard_person.html:6  msgid "Identity"  msgstr "Identité" -#: forms_common.py:256 forms_common.py:574 forms_common.py:615 models.py:2025 -#: models.py:2260 templates/sheet_ope.html:104 -#: templates/ishtar/sheet_person.html:55 +#: forms_common.py:256 forms_common.py:595 forms_common.py:636 models.py:2059 +#: models.py:2297 templates/sheet_ope.html:104 +#: templates/ishtar/sheet_person.html:94  #: templates/ishtar/blocks/window_tables/documents.html:5  msgid "Title"  msgstr "Titre" -#: forms_common.py:261 models.py:2031 +#: forms_common.py:261 models.py:2065  msgid "Raw name"  msgstr "Nom brut" -#: forms_common.py:277 +#: forms_common.py:264 models.py:1138 +msgid "Phone description" +msgstr "Type de téléphone" + +#: forms_common.py:267 models.py:1140 models.py:1142 +msgid "Phone description 2" +msgstr "Type de téléphone 2" + +#: forms_common.py:269 +msgid "Phone 2" +msgstr "Téléphone 2" + +#: forms_common.py:271 models.py:1146 +msgid "Phone description 3" +msgstr "Type de téléphone 3" + +#: forms_common.py:273 models.py:1144 +msgid "Phone 3" +msgstr "Téléphone 3" + +#: forms_common.py:278  msgid "Current organization"  msgstr "Organisation actuelle" -#: forms_common.py:325 forms_common.py:355 forms_common.py:359 models.py:2009 +#: forms_common.py:292 models.py:1127 +msgid "Other address: address" +msgstr "Autre adresse : adresse" + +#: forms_common.py:295 models.py:1130 +msgid "Other address: address complement" +msgstr "Autre adresse : complément d'adresse" + +#: forms_common.py:297 models.py:1131 +msgid "Other address: postal code" +msgstr "Autre adresse : code postal" + +#: forms_common.py:299 models.py:1133 +msgid "Other address: town" +msgstr "Autre adresse : ville" + +#: forms_common.py:301 models.py:1135 +msgid "Other address: country" +msgstr "Autre adresse : pays" + +#: forms_common.py:346 forms_common.py:376 forms_common.py:380 models.py:2043  msgid "Person type"  msgstr "Type de personne" -#: forms_common.py:370 forms_common.py:375 +#: forms_common.py:391 forms_common.py:396  msgid "Account"  msgstr "Compte" -#: forms_common.py:379 wizards.py:1154 +#: forms_common.py:400 wizards.py:1158  msgid "New password"  msgstr "Nouveau mot de passe" -#: forms_common.py:382 +#: forms_common.py:403  msgid "New password (confirmation)"  msgstr "Nouveau mot de passe (confirmation)" -#: forms_common.py:401 +#: forms_common.py:422  msgid "Your password and confirmation password do not match."  msgstr "La vérification du mot de passe a échoué." -#: forms_common.py:406 +#: forms_common.py:427  msgid "You must provide a correct password."  msgstr "Vous devez fournir un mot de passe correct." -#: forms_common.py:414 +#: forms_common.py:435  msgid "This username already exists."  msgstr "Ce nom d'utilisateur existe déjà." -#: forms_common.py:421 +#: forms_common.py:442  msgid "Send the new password by email?"  msgstr "Envoyer le nouveau mot de passe par courriel ?" -#: forms_common.py:430 forms_common.py:443 models.py:2341 +#: forms_common.py:451 forms_common.py:464 models.py:2378  msgid "Towns"  msgstr "Communes" -#: forms_common.py:440 +#: forms_common.py:461  msgid "There are identical towns."  msgstr "Il y a des communes identiques." -#: forms_common.py:524 +#: forms_common.py:545  msgid "Only one choice can be checked."  msgstr "Seul un choix peut être coché." -#: forms_common.py:572 +#: forms_common.py:593  msgid "Documentation informations"  msgstr "Information sur le document" -#: forms_common.py:576 forms_common.py:616 models.py:1643 models.py:2243 +#: forms_common.py:597 forms_common.py:637 models.py:1675 models.py:2280  msgid "Source type"  msgstr "Type de document" -#: forms_common.py:578 forms_common.py:617 templates/sheet_ope.html:84 +#: forms_common.py:599 forms_common.py:638 templates/sheet_ope.html:84  msgid "Reference"  msgstr "Référence" -#: forms_common.py:581 forms_common.py:618 +#: forms_common.py:602 forms_common.py:639  msgid "Internal reference"  msgstr "Référence interne" -#: forms_common.py:584 models.py:2274 +#: forms_common.py:605 models.py:2311  msgid "Numerical ressource (web address)"  msgstr "Ressource numérique (adresse web)" -#: forms_common.py:585 models.py:2276 +#: forms_common.py:606 models.py:2313  msgid "Receipt date"  msgstr "Date de réception" -#: forms_common.py:587 models.py:1793 models.py:2278 +#: forms_common.py:608 models.py:1827 models.py:2315  msgid "Creation date"  msgstr "Date de création" -#: forms_common.py:590 models.py:2281 +#: forms_common.py:611 models.py:2318  msgid "Receipt date in documentation"  msgstr "Date de réception en documentation" -#: forms_common.py:592 forms_common.py:620 models.py:277 models.py:1538 -#: models.py:2288 +#: forms_common.py:613 forms_common.py:641 models.py:277 models.py:1570 +#: models.py:2069 models.py:2325  msgid "Comment"  msgstr "Commentaire" -#: forms_common.py:594 forms_common.py:619 models.py:777 models.py:1297 -#: models.py:1470 models.py:1512 models.py:2287 templates/sheet_ope.html:128 +#: forms_common.py:615 forms_common.py:640 models.py:777 models.py:1329 +#: models.py:1502 models.py:1544 models.py:2324 templates/sheet_ope.html:128  msgid "Description"  msgstr "Description" -#: forms_common.py:597 models.py:2289 +#: forms_common.py:618 models.py:2326  msgid "Additional information"  msgstr "Informations supplémentaires" -#: forms_common.py:599 forms_common.py:623 models.py:2291 +#: forms_common.py:620 forms_common.py:644 models.py:2328  msgid "Has a duplicate"  msgstr "Existe en doublon" -#: forms_common.py:612 forms_common.py:641 forms_common.py:674 models.py:2227 +#: forms_common.py:633 forms_common.py:662 forms_common.py:695 models.py:2264  #: templates/ishtar/wizard/wizard_person_deletion.html:124  msgid "Author"  msgstr "Auteur" -#: forms_common.py:622 +#: forms_common.py:643  msgid "Additional informations"  msgstr "Informations complémentaires" -#: forms_common.py:633 +#: forms_common.py:654  msgid "Would you like to delete this documentation?"  msgstr "Voulez-vous supprimer ce document ?" -#: forms_common.py:649 models.py:1644 models.py:2217 models.py:2224 +#: forms_common.py:670 models.py:1676 models.py:2254 models.py:2261  msgid "Author type"  msgstr "Type d'auteur" -#: forms_common.py:667 +#: forms_common.py:688  msgid "Author selection"  msgstr "Sélection d'auteur" -#: forms_common.py:681 +#: forms_common.py:702  msgid "There are identical authors."  msgstr "Il y a des auteurs identiques." -#: forms_common.py:685 models.py:2228 models.py:2270 +#: forms_common.py:706 models.py:2265 models.py:2307  #: templates/sheet_ope.html:106  #: templates/ishtar/blocks/window_tables/documents.html:7  msgid "Authors" @@ -468,11 +514,11 @@ msgstr "Modification"  msgid "Merge"  msgstr "Fusion" -#: ishtar_menu.py:61 ishtar_menu.py:88 models.py:1830 widgets.py:110 +#: ishtar_menu.py:61 ishtar_menu.py:88 models.py:1864 widgets.py:110  msgid "Delete"  msgstr "Suppression" -#: ishtar_menu.py:96 models.py:1804 +#: ishtar_menu.py:96 models.py:1838  msgid "Imports"  msgstr "Imports" @@ -512,7 +558,7 @@ msgstr "Identifiant textuel"  msgid "Available"  msgstr "Disponible" -#: models.py:479 models.py:1584 +#: models.py:479 models.py:1616  msgid "Key"  msgstr "Clé" @@ -528,7 +574,7 @@ msgstr "Dernier éditeur"  msgid "Creator"  msgstr "Créateur" -#: models.py:692 models.py:2352 +#: models.py:692 models.py:2389  msgid "Order"  msgstr "Ordre" @@ -540,7 +586,7 @@ msgstr "Symétrique"  msgid "Cannot have symmetrical and an inverse_relation"  msgstr "Ne peut pas être symétrique et avoir une relation inverse" -#: models.py:776 models.py:1295 +#: models.py:776 models.py:1327  msgid "Slug"  msgstr "Identifiant texte" @@ -588,7 +634,7 @@ msgstr "Nom de la variable"  msgid "Description of the variable"  msgstr "Description de la variable" -#: models.py:849 models.py:1585 +#: models.py:849 models.py:1617  msgid "Value"  msgstr "Valeur" @@ -601,8 +647,10 @@ msgid "Total"  msgstr "Total"  #: models.py:969 models.py:1093 models.py:1105 +#: templates/ishtar/sheet_person.html:26  #: templates/ishtar/dashboards/dashboard_main_detail.html:135  #: templates/ishtar/dashboards/dashboard_main_detail_users.html:26 +#: templates/ishtar/wizard/wizard_person.html:20  msgid "Number"  msgstr "Nombre" @@ -622,7 +670,7 @@ msgstr "Patron de document"  msgid "Document templates"  msgstr "Patrons de documents" -#: models.py:1096 models.py:1106 models.py:1788 +#: models.py:1096 models.py:1106 models.py:1822  msgid "State"  msgstr "État" @@ -634,526 +682,546 @@ msgstr "Département"  msgid "Departments"  msgstr "Départements" -#: models.py:1165 +#: models.py:1148 +msgid "Raw phone" +msgstr "Téléphone brut" + +#: models.py:1154 +msgid "Alternative address is prefered" +msgstr "L'adresse alternative est préférée" + +#: models.py:1193  msgid "Tel: "  msgstr "Tél :" -#: models.py:1169 +#: models.py:1197  msgid "Mobile: "  msgstr "Mobile :" -#: models.py:1173 +#: models.py:1201  msgid "Email: "  msgstr "Courriel :" -#: models.py:1178 +#: models.py:1206  msgid "Merge key"  msgstr "Clé de fusion" -#: models.py:1239 +#: models.py:1267  msgid "Organization types"  msgstr "Types d'organisation" -#: models.py:1253 +#: models.py:1283  msgid "Archaeological site"  msgstr "Entité Archéologique" -#: models.py:1254 +#: models.py:1284  msgid "Parcels"  msgstr "Parcelles" -#: models.py:1256 +#: models.py:1286  msgid "Operation source"  msgstr "Documentation de l'opération" -#: models.py:1259 views.py:945 views.py:996 +#: models.py:1289 views.py:945 views.py:996  msgid "Archaeological files"  msgstr "Dossiers archéologiques" -#: models.py:1261 views.py:948 views.py:1004 +#: models.py:1291 views.py:948 views.py:1004  msgid "Context records"  msgstr "Unités d'Enregistrement" -#: models.py:1263 views.py:950 views.py:1007 +#: models.py:1293 +msgid "Context record relations" +msgstr "Relations entre Unités d'Enregistrement" + +#: models.py:1295 views.py:950 views.py:1007  msgid "Finds"  msgstr "Mobilier" -#: models.py:1299 templates/ishtar/dashboards/dashboard_main.html:26 +#: models.py:1331 templates/ishtar/dashboards/dashboard_main.html:26  msgid "Users"  msgstr "Utilisateurs" -#: models.py:1301 +#: models.py:1333  msgid "Associated model"  msgstr "Modèle associé" -#: models.py:1304 +#: models.py:1336  msgid "Is template"  msgstr "Est un patron" -#: models.py:1305 +#: models.py:1337  msgid "Unicity keys (separator \";\")"  msgstr "Clés d'unicité (séparateur « ; »)" -#: models.py:1309 +#: models.py:1341  msgid "Importer - Type"  msgstr "Importeur - Type" -#: models.py:1310 +#: models.py:1342  msgid "Importer - Types"  msgstr "Importeur - Types" -#: models.py:1400 +#: models.py:1432  msgid "Importer - Default"  msgstr "Importeur - Par défaut" -#: models.py:1401 +#: models.py:1433  msgid "Importer - Defaults"  msgstr "Importeur - Par défaut" -#: models.py:1436 +#: models.py:1468  msgid "Importer - Default value"  msgstr "Importeur - Valeur par défaut" -#: models.py:1437 +#: models.py:1469  msgid "Importer - Default values"  msgstr "Importeur - Valeurs par défaut" -#: models.py:1469 +#: models.py:1501  msgid "Column number"  msgstr "Numéro de colonne" -#: models.py:1472 +#: models.py:1504  msgid "Required"  msgstr "Requis" -#: models.py:1475 +#: models.py:1507  msgid "Importer - Column"  msgstr "Importeur - Colonne" -#: models.py:1476 +#: models.py:1508  msgid "Importer - Columns"  msgstr "Importeur - Colonnes" -#: models.py:1496 +#: models.py:1528  msgid "Field name"  msgstr "Nom du champ" -#: models.py:1498 models.py:1532 +#: models.py:1530 models.py:1564  msgid "Force creation of new items"  msgstr "Forcer la création de nouveaux éléments" -#: models.py:1500 models.py:1534 +#: models.py:1532 models.py:1566  msgid "Concatenate with existing"  msgstr "Concaténer avec l'existant" -#: models.py:1502 models.py:1536 +#: models.py:1534 models.py:1568  msgid "Concatenate character"  msgstr "Caractère de concaténation" -#: models.py:1506 +#: models.py:1538  msgid "Importer - Duplicate field"  msgstr "Importeur - Champ dupliqué" -#: models.py:1507 +#: models.py:1539  msgid "Importer - Duplicate fields"  msgstr "Importeur - Champs dupliqués" -#: models.py:1514 +#: models.py:1546  msgid "Regular expression"  msgstr "Expression régulière" -#: models.py:1517 +#: models.py:1549  msgid "Importer - Regular expression"  msgstr "Importeur - Expression régulière" -#: models.py:1518 +#: models.py:1550  msgid "Importer - Regular expressions"  msgstr "Importeur - Expressions régulières" -#: models.py:1541 +#: models.py:1573  msgid "Importer - Target"  msgstr "Importeur - Cible" -#: models.py:1542 +#: models.py:1574  msgid "Importer - Targets"  msgstr "Importeur - Cibles" -#: models.py:1566 views.py:311 +#: models.py:1598 views.py:311  msgid "True"  msgstr "Oui" -#: models.py:1567 views.py:313 +#: models.py:1599 views.py:313  msgid "False"  msgstr "Non" -#: models.py:1586 +#: models.py:1618  msgid "Is set"  msgstr "Est défini" -#: models.py:1593 +#: models.py:1625  msgid "Importer - Target key"  msgstr "Importeur - Rapprochement" -#: models.py:1594 +#: models.py:1626  msgid "Importer - Targets keys"  msgstr "Importeur - Rapprochements" -#: models.py:1645 models.py:2255 models.py:2266 +#: models.py:1677 models.py:2292 models.py:2303  msgid "Format"  msgstr "Format" -#: models.py:1646 models.py:2356 +#: models.py:1678 models.py:2393  msgid "Operation type"  msgstr "Type d'opération" -#: models.py:1647 +#: models.py:1679  msgid "Period"  msgstr "Périodes" -#: models.py:1648 +#: models.py:1680  msgid "Unit"  msgstr "Unité" -#: models.py:1649 +#: models.py:1681  msgid "Material"  msgstr "Matériau" -#: models.py:1651 +#: models.py:1683  msgid "Conservatory state"  msgstr "État de conservation" -#: models.py:1652 +#: models.py:1684  msgid "Preservation type"  msgstr "Type de conservation" -#: models.py:1653 +#: models.py:1685  msgid "Object type"  msgstr "Type d'objet" -#: models.py:1655 +#: models.py:1687  msgid "Identification type"  msgstr "Type d'identification" -#: models.py:1656 models.py:2249 +#: models.py:1689 +msgid "Context record relation type" +msgstr "Type de relations entre Unités d'Enregistrement" + +#: models.py:1690 models.py:2286  msgid "Support type"  msgstr "Type de support" -#: models.py:1662 +#: models.py:1696  msgid "Integer"  msgstr "Entier" -#: models.py:1663 +#: models.py:1697  msgid "Float"  msgstr "Nombre à virgule" -#: models.py:1664 +#: models.py:1698  msgid "String"  msgstr "Chaîne de caractères" -#: models.py:1665 templates/sheet_ope.html:86 +#: models.py:1699 templates/sheet_ope.html:86  msgid "Date"  msgstr "Date" -#: models.py:1667 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 -#: templates/ishtar/sheet_person.html:54 +#: models.py:1701 templates/sheet_ope.html:61 templates/sheet_ope.html.py:83 +#: templates/ishtar/sheet_person.html:93  #: templates/ishtar/dashboards/dashboard_main_detail.html:120  msgid "Year"  msgstr "Année" -#: models.py:1668 +#: models.py:1702  msgid "String to boolean"  msgstr "Chaîne de caractères vers booléen" -#: models.py:1669 +#: models.py:1703  msgctxt "filesystem"  msgid "File"  msgstr "Fichier" -#: models.py:1670 +#: models.py:1704  msgid "Unknow type"  msgstr "Type inconnu" -#: models.py:1686 +#: models.py:1720  msgid "4 digit year. e.g.: \"2015\""  msgstr "Année sur 4 chiffres. Exemple : « 2015 »" -#: models.py:1687 +#: models.py:1721  msgid "4 digit year/month/day. e.g.: \"2015/02/04\""  msgstr "Année sur 4 chiffres/mois/jour. Exemple : « 2015/02/04 »" -#: models.py:1688 +#: models.py:1722  msgid "Day/month/4 digit year. e.g.: \"04/02/2015\""  msgstr "Jour/mois/année sur 4 chiffres. Exemple : « 04/02/2015 »" -#: models.py:1698 +#: models.py:1732  msgid "Options"  msgstr "Options" -#: models.py:1700 +#: models.py:1734  msgid "Split character(s)"  msgstr "Caractère(s) de séparation" -#: models.py:1704 +#: models.py:1738  msgid "Importer - Formater type"  msgstr "Importeur - Type de mise en forme" -#: models.py:1705 +#: models.py:1739  msgid "Importer - Formater types"  msgstr "Importeur - Types de mise en forme" -#: models.py:1752 templates/ishtar/dashboards/dashboard_main_detail.html:61 +#: models.py:1786 templates/ishtar/dashboards/dashboard_main_detail.html:61  msgid "Created"  msgstr "Créé" -#: models.py:1753 +#: models.py:1787  msgid "Analyse in progress"  msgstr "Analyse en cours" -#: models.py:1754 +#: models.py:1788  msgid "Analysed"  msgstr "Analysé" -#: models.py:1755 +#: models.py:1789  msgid "Import pending"  msgstr "Import en attente" -#: models.py:1756 +#: models.py:1790  msgid "Import in progress"  msgstr "Import en cours" -#: models.py:1757 +#: models.py:1791  msgid "Finished with errors"  msgstr "Terminé avec des erreurs" -#: models.py:1758 +#: models.py:1792  msgid "Finished"  msgstr "Terminé" -#: models.py:1759 +#: models.py:1793  msgid "Archived"  msgstr "Archivé" -#: models.py:1771 +#: models.py:1805  msgid "Imported file"  msgstr "Fichier importé" -#: models.py:1774 +#: models.py:1808  msgid "Associated images (zip file)"  msgstr "Images associées (fichier zip)" -#: models.py:1776 +#: models.py:1810  msgid "Encoding"  msgstr "Codage" -#: models.py:1778 +#: models.py:1812  msgid "Skip lines"  msgstr "Nombre de lignes d'entête" -#: models.py:1779 templates/ishtar/import_list.html:47 +#: models.py:1813 templates/ishtar/import_list.html:47  msgid "Error file"  msgstr "Fichier erreur" -#: models.py:1782 +#: models.py:1816  msgid "Result file"  msgstr "Fichier résultant" -#: models.py:1785 templates/ishtar/import_list.html:53 +#: models.py:1819 templates/ishtar/import_list.html:53  msgid "Match file"  msgstr "Fichier de correspondance" -#: models.py:1791 +#: models.py:1825  msgid "Conservative import"  msgstr "Import conservateur" -#: models.py:1796 +#: models.py:1830  msgid "End date"  msgstr "Date de fin" -#: models.py:1798 +#: models.py:1832  msgid "Remaining seconds"  msgstr "Secondes restantes" -#: models.py:1803 +#: models.py:1837  msgid "Import"  msgstr "Import" -#: models.py:1820 +#: models.py:1854  msgid "Analyse"  msgstr "Analyser" -#: models.py:1822 models.py:1825 +#: models.py:1856 models.py:1859  msgid "Re-analyse"  msgstr "Analyser de nouveau " -#: models.py:1823 +#: models.py:1857  msgid "Launch import"  msgstr "Lancer l'import" -#: models.py:1826 +#: models.py:1860  msgid "Re-import"  msgstr "Ré-importer" -#: models.py:1827 +#: models.py:1861  msgid "Archive"  msgstr "Archiver" -#: models.py:1829 +#: models.py:1863  msgid "Unarchive"  msgstr "Désarchiver" -#: models.py:1962 +#: models.py:1996  msgid "Organizations"  msgstr "Organisations" -#: models.py:1964 +#: models.py:1998  msgid "Can view all Organizations"  msgstr "Peut voir toutes les Organisations" -#: models.py:1965 +#: models.py:1999  msgid "Can view own Organization"  msgstr "Peut voir sa propre Organisation" -#: models.py:1966 +#: models.py:2000  msgid "Can add own Organization"  msgstr "Peut ajouter sa propre Organisation" -#: models.py:1968 +#: models.py:2002  msgid "Can change own Organization"  msgstr "Peut modifier sa propre Organisation" -#: models.py:1970 +#: models.py:2004  msgid "Can delete own Organization"  msgstr "Peut supprimer sa propre Organisation" -#: models.py:2005 +#: models.py:2039  msgid "Groups"  msgstr "Groupes" -#: models.py:2010 +#: models.py:2044  msgid "Person types"  msgstr "Types d'individu" -#: models.py:2017 +#: models.py:2051  msgid "Mr"  msgstr "M." -#: models.py:2018 +#: models.py:2052  msgid "Miss"  msgstr "Mlle" -#: models.py:2019 +#: models.py:2053  msgid "Mr and Mrs"  msgstr "M. et Mme" -#: models.py:2020 +#: models.py:2054  msgid "Mrs"  msgstr "Mme" -#: models.py:2021 +#: models.py:2055  msgid "Doctor"  msgstr "Dr." -#: models.py:2033 models.py:2080 +#: models.py:2067 +msgid "Contact type" +msgstr "Type de contact" + +#: models.py:2070 models.py:2117  msgid "Types"  msgstr "Types" -#: models.py:2036 +#: models.py:2073  msgid "Is attached to"  msgstr "Est rattaché à" -#: models.py:2040 +#: models.py:2077  msgid "Persons"  msgstr "Personnes" -#: models.py:2042 +#: models.py:2079  msgid "Can view all Persons"  msgstr "Peut voir toutes les Personnes" -#: models.py:2043 +#: models.py:2080  msgid "Can view own Person"  msgstr "Peut voir sa propre Personne" -#: models.py:2044 +#: models.py:2081  msgid "Can add own Person"  msgstr "Peut ajouter sa propre Personne" -#: models.py:2045 +#: models.py:2082  msgid "Can change own Person"  msgstr "Peut modifier sa propre Personne" -#: models.py:2046 +#: models.py:2083  msgid "Can delete own Person"  msgstr "Peut supprimer sa propre Personne" -#: models.py:2172 +#: models.py:2209  msgid "Ishtar user"  msgstr "Utilisateur d'Ishtar" -#: models.py:2173 +#: models.py:2210  msgid "Ishtar users"  msgstr "Utilisateurs d'Ishtar" -#: models.py:2218 +#: models.py:2255  msgid "Author types"  msgstr "Types d'auteur" -#: models.py:2244 +#: models.py:2281  msgid "Source types"  msgstr "Types de document" -#: models.py:2250 +#: models.py:2287  msgid "Support types"  msgstr "Types de support" -#: models.py:2256 +#: models.py:2293  msgid "Formats"  msgstr "Formats" -#: models.py:2261 +#: models.py:2298  msgid "External ID"  msgstr "Identifiant externe" -#: models.py:2264 +#: models.py:2301  msgid "Support"  msgstr "Support" -#: models.py:2268 +#: models.py:2305  msgid "Scale"  msgstr "Échelle" -#: models.py:2282 +#: models.py:2319  msgid "Item number"  msgstr "Numéro d'élément" -#: models.py:2283 +#: models.py:2320  msgid "Ref."  msgstr "Réf." -#: models.py:2286 +#: models.py:2323  msgid "Internal ref."  msgstr "Réf. interne" -#: models.py:2327 +#: models.py:2364  msgid "Surface (m2)"  msgstr "Surface (m2)" -#: models.py:2328 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107 +#: models.py:2365 templates/sheet_ope.html:46 templates/sheet_ope.html.py:107  msgid "Localisation"  msgstr "Localisation" -#: models.py:2353 +#: models.py:2390  msgid "Is preventive"  msgstr "Est du préventif" -#: models.py:2357 +#: models.py:2394  msgid "Operation types"  msgstr "Types d'opération" -#: models.py:2383 +#: models.py:2420  msgid "Preventive"  msgstr "Préventif" -#: models.py:2384 +#: models.py:2421  msgid "Research"  msgstr "Programmé" @@ -1240,7 +1308,7 @@ msgstr "Oui"  msgid "No"  msgstr "Non" -#: wizards.py:1211 +#: wizards.py:1215  #, python-format  msgid "[%(app_name)s] Account creation/modification"  msgstr "[%(app_name)s] Création /modification du compte" @@ -1515,7 +1583,7 @@ msgstr "Pas d'acte administratif associé à cette opération"  msgid "Documentation"  msgstr "Documentation" -#: templates/sheet_ope.html:102 templates/ishtar/sheet_person.html:52 +#: templates/sheet_ope.html:102 templates/ishtar/sheet_person.html:91  msgid "Documents"  msgstr "Documents" @@ -1607,7 +1675,7 @@ msgstr "Aide"  #: templates/ishtar/form.html:10 templates/ishtar/formset.html:8  #: templates/ishtar/import_list.html:58 templates/ishtar/merge.html:31  #: templates/ishtar/wizard/confirm_wizard.html:42 -#: templates/ishtar/wizard/default_wizard.html:29 +#: templates/ishtar/wizard/default_wizard.html:30  #: templates/ishtar/wizard/search.html:13  #: templates/ishtar/wizard/validation_bar.html:4  msgid "Validate" @@ -1745,28 +1813,44 @@ msgid "No person in this organization"  msgstr "Pas de personne au sein de cette organisation"  #: templates/ishtar/sheet_person.html:25 +#: templates/ishtar/wizard/wizard_person.html:19 +msgid "Phone type" +msgstr "Type de téléphone" + +#: templates/ishtar/sheet_person.html:48 +#: templates/ishtar/wizard/wizard_person.html:42 +msgid "Business address" +msgstr "Adresse professionnelle" + +#: templates/ishtar/sheet_person.html:56 +#: templates/ishtar/wizard/wizard_person.html:51 +msgid "Other address" +msgstr "Autre adresse" + +#: templates/ishtar/sheet_person.html:64  msgid "Associated organization"  msgstr "Organisations associées" -#: templates/ishtar/sheet_person.html:36 +#: templates/ishtar/sheet_person.html:75  msgid "Associated operations as scientist"  msgstr "Opérations associées en tant que responsable scientifique" -#: templates/ishtar/sheet_person.html:40 +#: templates/ishtar/sheet_person.html:79  msgid "Associated operations as responsible"  msgstr "Opérations associées en tant que responsable" -#: templates/ishtar/sheet_person.html:46 +#: templates/ishtar/sheet_person.html:85  msgid "Associated archaelogical files"  msgstr "Dossiers archéologiques associés" -#: templates/ishtar/sheet_person.html:57 templates/ishtar/sheet_person.html:65 +#: templates/ishtar/sheet_person.html:96 +#: templates/ishtar/sheet_person.html:104  #: templates/ishtar/blocks/window_tables/documents.html:9  #: templates/ishtar/blocks/window_tables/documents.html:17  msgid "Link"  msgstr "Lien" -#: templates/ishtar/sheet_person.html:69 +#: templates/ishtar/sheet_person.html:108  msgid "No document associated to this person"  msgstr "Pas de document associé à cette personne" @@ -1875,7 +1959,7 @@ msgstr "Vous avez entré les informations suivantes :"  msgid "Would you like to save them?"  msgstr "Voulez-vous sauvegarder ces informations ?" -#: templates/ishtar/wizard/default_wizard.html:35 +#: templates/ishtar/wizard/default_wizard.html:36  #: templates/ishtar/wizard/parcels_wizard.html:24  #: templates/ishtar/wizard/relations_wizard.html:23  #: templates/ishtar/wizard/search.html:20 @@ -1883,7 +1967,7 @@ msgstr "Voulez-vous sauvegarder ces informations ?"  msgid "Add/Modify"  msgstr "Ajouter/Modifier" -#: templates/ishtar/wizard/default_wizard.html:56 +#: templates/ishtar/wizard/default_wizard.html:58  msgid ""  "The form has changed if you don't validate it all your changes will be lost."  msgstr "" diff --git a/version.py b/version.py index 2c79b2aca..8f9f2c578 100644 --- a/version.py +++ b/version.py @@ -1,4 +1,4 @@ -VERSION = (0, 92) +VERSION = (0, 93)  def get_version(): | 
