summaryrefslogtreecommitdiff
path: root/archaeological_files/data_importer.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_files/data_importer.py')
-rw-r--r--archaeological_files/data_importer.py98
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
]