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 ] |