diff options
Diffstat (limited to 'archaeological_files/data_importer.py')
| -rw-r--r-- | archaeological_files/data_importer.py | 98 | 
1 files changed, 61 insertions, 37 deletions
| diff --git a/archaeological_files/data_importer.py b/archaeological_files/data_importer.py index ae0cf340c..2b715cb42 100644 --- a/archaeological_files/data_importer.py +++ b/archaeological_files/data_importer.py @@ -41,7 +41,36 @@ class ImportClosingFormater(ImportFormater):          obj.end_date = open_date + datetime.timedelta(30)          obj.save() -class FileImporterSraPdL(Importer): +class ImportMayorFormater(ImportFormater): +    def post_process(self, obj, context, value, owner=None): +        value = self.formater.format(value) +        if type(self.field_name) in (list, tuple): +            return #not managed +        associated_obj = get_object_from_path(obj, self.field_name) +        if not value or not obj.main_town or not associated_obj: +            return +        if slugify(value).endswith('le-maire'): +            value += u" de " + obj.main_town.name +            value = value[:300] +        setattr(associated_obj, self.field_name.split('__')[-1], value) +        associated_obj.save() + +class FilePostProcessing(object): +    # erroneaous date to be easily identified on post-processing +    DEFAULT_YEAR = 1756 +    EXTRA_DEFAULTS = {tuple():{'year':DEFAULT_YEAR}} + +    def post_processing(self, item, data): +        if item.year == self.DEFAULT_YEAR: +            if item.creation_date: +                item.year = item.creation_date.year +            elif item.reception_date: +                item.year = item.reception_date.year +        item.save() +        return item + +class FileImporterSraPdL(FilePostProcessing, Importer): +    DESC = u"Exports dossiers SRA PdL : importeur Filemaker dossiers"      LINE_FORMAT = []      OBJECT_CLS = models.File      DEFAULTS = {('responsible_town_planning_service', 'attached_to'):{ @@ -52,42 +81,43 @@ class FileImporterSraPdL(Importer):                                               txt_idx="general_contractor")},                  tuple():{                      'file_type': models.FileType.objects.get( -                                             txt_idx='undefined'), +                                             txt_idx='preventive'),                  },                  ('in_charge',):{'attached_to':None}, # initialized in __init__                 } +    STR_CUT = {tuple():{'comment':2000}}      def _init_line_format(self):          tf = TownFormater()          tf.town_dct_init()          self.line_format = [          None, # A, 1 -        ImportFormater(['address', 'postal_code', ['towns', 'parcels__town']], # B, 2 +        ImportFormater(['address', 'postal_code', ['main_town', 'parcels__town']], # B, 2                      [UnicodeFormater(500, clean=True),                       UnicodeFormater(5, re_filter=RE_CD_POSTAL_FILTER),                       tf],                      regexp=RE_ADD_CD_POSTAL_TOWN,                      regexp_formater_args=[[0], [1], [2, 1]], required=False, -                    comment="Dossier - adresse"), -        ImportFormater('general_contractor__raw_name', # C, 3 TODO - extraire nom_prenom_titre +                    comment=u"Dossier - adresse"), +        ImportMayorFormater('general_contractor__raw_name', # C, 3 TODO - extraire nom_prenom_titre                         UnicodeFormater(200),                         comment=u"Aménageur - nom brut", -                       duplicate_fields=['general_contractor__attached_to__name'], +                       post_processing=True,                         required=False), -        ImportFormater(['general_contractor__attached_to__address', # D, 4 -                        'general_contractor__attached_to__postal_code', -                        'general_contractor__attached_to__town'], +        ImportFormater(['general_contractor__address', # D, 4 +                        'general_contractor__postal_code', +                        'general_contractor__town'],                      [UnicodeFormater(500, clean=True),                       UnicodeFormater(5, re_filter=RE_CD_POSTAL_FILTER),                       TownFormater(town_full_dct=tf._town_full_dct,                                    town_dct=tf._town_dct)],                      regexp=RE_ADD_CD_POSTAL_TOWN,                      regexp_formater_args=[[0], [1], [2, 1]], required=False, -                    comment="Aménageur - adresse"), +                    comment=u"Aménageur - adresse"),          ImportFormater("general_contractor__title", # E, 5                          StrChoiceFormater(Person.TYPE, cli=True),                          required=False, -                        comment="Aménageur - titre"), +                        comment=u"Aménageur - titre"),          None, # F, 6          None, # G, 7          None, # H, 8 @@ -96,19 +126,18 @@ class FileImporterSraPdL(Importer):                          required=False),          ImportParcelFormater('', required=False, post_processing=True), # J, 10          None, # K, 11 -        ImportFormater([['towns', 'parcels__town']], # L, 12 +        ImportFormater([['main_town', 'parcels__town']], # L, 12                         tf,                         required=False, -                       comment="Commune (si non définie avant)"), -        ImportFormater([['towns', 'parcels__town']], # M, 13 +                       comment=u"Commune (si non définie avant)"), +        ImportFormater([['main_town', 'parcels__town']], # M, 13                         tf,                         required=False, -                       comment="Commune (si non définie avant)"), +                       comment=u"Commune (si non définie avant)"),          ImportFormater('saisine_type', # N, 14 -                        StrChoiceFormater(models.SaisineType.get_types(), -                                          model=models.SaisineType, cli=True), +                        TypeFormater(models.SaisineType),                          required=False, -                        comment="Type de saisine"), +                        comment=u"Type de saisine"),          None, # O, 15          ImportFormater('comment', # P, 16                         UnicodeFormater(2000), @@ -117,9 +146,9 @@ class FileImporterSraPdL(Importer):          None, # Q, 17          ImportFormater([                      'responsible_town_planning_service__raw_name', # R, 18 service instructeur -                    'responsible_town_planning_service__attached_to__address', -                    'responsible_town_planning_service__attached_to__postal_code', -                    'responsible_town_planning_service__attached_to__town',], +                    'responsible_town_planning_service__address', +                    'responsible_town_planning_service__postal_code', +                    'responsible_town_planning_service__town',],                      [UnicodeFormater(300, clean=True),                       UnicodeFormater(300, clean=True),                       UnicodeFormater(5, re_filter=RE_CD_POSTAL_FILTER), @@ -127,14 +156,14 @@ class FileImporterSraPdL(Importer):                                    town_dct=tf._town_dct)],                      regexp=RE_NAME_ADD_CD_POSTAL_TOWN,                      regexp_formater_args=[[0], [1], [2], [3, 2]], -                    comment="Aménageur - adresse", +                    comment=u"Aménageur - adresse",                      required=False),          ImportFormater('comment', # S, 19                         UnicodeFormater(2000),                         comment=u"Commentaire",                         concat=True, required=False),          ImportYearFormater('reception_date', # T, 20 -                       DateFormater(), +                       DateFormater(['%d/%m/%Y', '%d/%m/%Y']),                         comment=u"Date de création",                         required=False,                         duplicate_fields=['creation_date']), @@ -153,7 +182,7 @@ class FileImporterSraPdL(Importer):          None, # AG, 33          None, # AH, 34          ImportFormater('creation_date', # AI, 35 -                       DateFormater(), +                       DateFormater(['%d/%m/%Y', '%d/%m/%y']),                         force_value=True,                         comment=u"Date de création",                         required=False,), @@ -182,7 +211,7 @@ class FileImporterSraPdL(Importer):          ImportFormater('permit_reference', # AW, 49                         UnicodeFormater(300, clean=True),                         regexp=RE_PERMIT_REFERENCE, -                       comment="Réf. du permis de construire", +                       comment=u"Réf. du permis de construire",                         required=False),          None, # AX, 50          None, # AY, 51 @@ -191,10 +220,10 @@ class FileImporterSraPdL(Importer):          None, # BB, 54          None, # BC, 55          None, # BD, 56 -        ImportFormater([['towns', 'parcels__town']], # BE, 57 +        ImportFormater([['main_town', 'parcels__town']], # BE, 57                         TownINSEEFormater(),                         required=False, -                       comment="Commune (si non définie avant)"), +                       comment=u"Commune (si non définie avant)"),          ImportFormater('comment', # BF, 58                         UnicodeFormater(2000),                         comment=u"Commentaire", @@ -212,15 +241,11 @@ class FileImporterSraPdL(Importer):          None, # BQ, 69          None, # BR, 70          None, # BS, 71 -        ImportFormater( -                    'responsible_town_planning_service__attached_to__name', # BT, 72 service instructeur -                    UnicodeFormater(300, clean=True), -                    regexp=RE_ORGA, -                    comment="Service instructeur - nom", -                    required=False), +        None, # BT, 72          None, # BU, 73          ImportClosingFormater('', StrToBoolean(cli=True), -                              post_processing=True, required=False), # BV, 74, end date +                              post_processing=True, required=False, +                              comment=u'Dossier clos'), # BV, 74, end date          ImportClosingFormater('in_charge__raw_name', # BW, 75 responsable                         UnicodeFormater(200),                         comment=u"Responsable - nom brut", @@ -241,10 +266,9 @@ class FileImporterSraPdL(Importer):          None, # CE, 83          None, # CF, 84          ImportFormater('permit_type', -                        StrChoiceFormater(models.PermitType.get_types(), -                                          model=models.PermitType, cli=True), +                        TypeFormater(models.PermitType),                          required=False, -                        comment="Type de permis"), # CG, 85 +                        comment=u"Type de permis"), # CG, 85          None, # CH, 85          ] | 
