diff options
-rw-r--r-- | archaeological_files/data_importer.py | 152 | ||||
-rw-r--r-- | archaeological_files/models.py | 2 | ||||
-rw-r--r-- | ishtar_common/data_importer.py | 8 |
3 files changed, 106 insertions, 56 deletions
diff --git a/archaeological_files/data_importer.py b/archaeological_files/data_importer.py index a1dc0fc3a..c6dbf4034 100644 --- a/archaeological_files/data_importer.py +++ b/archaeological_files/data_importer.py @@ -59,15 +59,37 @@ class ImportMayorFormater(ImportFormater): class FilePostProcessing(object): # erroneaous date to be easily identified on post-processing - DEFAULT_YEAR = 1756 + DEFAULT_YEAR = 1871 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 + if item.year == self.DEFAULT_YEAR: # the default year has been applied + if item.external_id: + idx = None + if '-' in item.external_id: + year, y_idx = item.external_id.split('-') + if len(year) == 4: # 2007-XXXX + try: + item.year = int(year) + idx = y_idx + except ValueError: + pass + if '.' in item.external_id: + year, y_idx = item.external_id.split('.') + if len(year) == 4: # 2011.XXXX + try: + item.year = int(year) + idx = y_idx + except ValueError: + pass + if not item.year: + if item.creation_date: + item.year = item.creation_date.year + elif item.reception_date: + item.year = item.reception_date.year + if not item.end_date: # auto-close + open_date = item.reception_date or item.creation_date + item.end_date = open_date + datetime.timedelta(30) item.save() return item @@ -91,7 +113,6 @@ class FileImporterSraPdL(FilePostProcessing, Importer): }, ('in_charge',): {'attached_to': None}, # initialized in __init__ } - STR_CUT = {tuple(): {'comment': 2000}} def _init_line_format(self): tf = TownFormater() @@ -99,13 +120,15 @@ class FileImporterSraPdL(FilePostProcessing, Importer): self.line_format = [ None, # A, 1 ImportFormater( - ['address', 'postal_code', - ['main_town', 'parcels__town']], # B, 2 + ['general_contractor__attached_to__address', # B, 2 + 'general_contractor__attached_to__postal_code', + 'general_contractor__attached_to__town'], [UnicodeFormater(500, clean=True), - UnicodeFormater(5, re_filter=RE_CD_POSTAL_FILTER), tf], + UnicodeFormater(5, re_filter=RE_CD_POSTAL_FILTER), + UnicodeFormater(70, clean=True), ], regexp=RE_ADD_CD_POSTAL_TOWN, - regexp_formater_args=[[0], [1], [2, 1]], required=False, - comment=u"Dossier - adresse"), + regexp_formater_args=[[0], [1], [2]], required=False, + comment=u"Aménageur - adresse"), ImportMayorFormater( # C, 3 TODO - extraire nom_prenom_titre 'general_contractor__raw_name', @@ -113,16 +136,7 @@ class FileImporterSraPdL(FilePostProcessing, Importer): comment=u"Aménageur - nom brut", post_processing=True, required=False), - 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), - UnicodeFormater(70, clean=True),], - regexp=RE_ADD_CD_POSTAL_TOWN, - regexp_formater_args=[[0], [1], [2]], required=False, - comment=u"Aménageur - adresse"), + None, # D, 4 ImportFormater( "general_contractor__title", # E, 5 StrChoiceFormater(Person.TYPE, cli=True), @@ -150,33 +164,36 @@ class FileImporterSraPdL(FilePostProcessing, Importer): required=False, comment=u"Type de saisine"), None, # O, 15 - ImportFormater('comment', # P, 16 - UnicodeFormater(2000), - comment=u"Commentaire", - concat=True, required=False), + ImportFormater('name', # P, 16 + UnicodeFormater(), + comment=u"Nom du dossier", + required=False), None, # Q, 17 ImportFormater( [ 'responsible_town_planning_service__raw_name', # R, 18 service instructeur - 'responsible_town_planning_service__address', - 'responsible_town_planning_service__postal_code', - 'responsible_town_planning_service__town'], + 'responsible_town_planning_service__attached_to__address', + 'responsible_town_planning_service__' + 'attached_to__postal_code', + 'responsible_town_planning_service__attached_to__town'], [UnicodeFormater(300, clean=True), UnicodeFormater(300, clean=True), UnicodeFormater(5, re_filter=RE_CD_POSTAL_FILTER), - UnicodeFormater(70, clean=True),], + UnicodeFormater(70, clean=True), ], regexp=RE_NAME_ADD_CD_POSTAL_TOWN, regexp_formater_args=[[0], [1], [2], [3]], - comment=u"Aménageur - adresse", + comment=u"Service instructeur - adresse", + required=False), + ImportFormater( + 'comment', # S, 19 + UnicodeFormater(prefix=u'* Considérants : '), + comment=u"Commentaire", + concat=True, required=False), - ImportFormater('comment', # S, 19 - UnicodeFormater(2000), - comment=u"Commentaire", - concat=True, required=False), ImportYearFormater('reception_date', # T, 20 DateFormater(['%d/%m/%Y', '%d/%m/%Y']), - comment=u"Date de création", + comment=u"Date de réception", required=False, duplicate_fields=[['creation_date', False]]), None, # U, 21 @@ -200,24 +217,34 @@ class FileImporterSraPdL(FilePostProcessing, Importer): required=False,), None, # AJ, 36 ImportFormater('comment', # AK, 37 - UnicodeFormater(2000), + UnicodeFormater(prefix=u"* Historique : "), comment=u"Commentaire", concat=True, required=False), - None, # AL, 38 + ImportFormater('internal_reference', # AL, 38 + UnicodeFormater(60), + comment=u"Autre référence", + required=False, + duplicate_fields=[['external_id', False]]), None, # AM, 39 None, # AN, 40 - None, # AO, 41 + ImportFormater('comment', # AO, 41 + UnicodeFormater( + prefix=u"* Justificatif de prescription : "), + comment=u"Justificatif de prescription", + concat=True, required=False), ImportFormater('comment', # AP, 42 - UnicodeFormater(2000), - comment=u"Commentaire", + UnicodeFormater( + prefix=u"* Justificatif d'intervention : "), + comment=u"Justificatif d'intervention", concat=True, required=False), None, # AQ, 43 None, # AR, 44 None, # AS, 45 None, # AT, 46 ImportFormater('comment', # AU, 47 - UnicodeFormater(2000), - comment=u"Commentaire", + UnicodeFormater( + prefix=u"* Méthodologie de l'opération : "), + comment=u"Méthodologie de l'opération", concat=True, required=False), None, # AV, 48 ImportFormater('permit_reference', # AW, 49 @@ -225,12 +252,29 @@ class FileImporterSraPdL(FilePostProcessing, Importer): regexp=RE_PERMIT_REFERENCE, comment=u"Réf. du permis de construire", required=False), - None, # AX, 50 + ImportFormater('comment', # AX, 50 + UnicodeFormater( + prefix=u"* Référence de dossier aménageur : "), + comment=u"Référence de dossier aménageur", + concat=True, required=False), None, # AY, 51 None, # AZ, 52 - None, # BA, 53 - None, # BB, 54 - None, # BC, 55 + ImportFormater('comment', # BA, 53 + UnicodeFormater( + prefix=u"* Numéro d'arrêté préfectoral : "), + comment=u"Numéro d'arrêté préfectoral", + concat=True, required=False), + ImportFormater('comment', # BB, 54 + UnicodeFormater( + prefix=u"* Numéro d'arrêté SRA : "), + comment=u"Numéro d'arrêté SRA", + concat=True, required=False), + ImportFormater('comment', # BC, 55 + UnicodeFormater( + prefix=u"* Numéro d'arrêté de " + u"post-diagnostic : "), + comment=u"Numéro d'arrêté de post-diagnostic", + concat=True, required=False), None, # BD, 56 ImportFormater([['main_town', 'parcels__town']], # BE, 57 TownINSEEFormater(), @@ -253,12 +297,16 @@ class FileImporterSraPdL(FilePostProcessing, Importer): None, # BQ, 69 None, # BR, 70 None, # BS, 71 - None, # BT, 72 + ImportFormater( # BT, 72 nom service instructeur + ['responsible_town_planning_service__attached_to__name', ], + [UnicodeFormater(300, clean=True), ], + regexp=RE_NAME_ADD_CD_POSTAL_TOWN, + regexp_formater_args=[[0], ], + comment=u"Service instructeur - nom", + required=False), None, # BU, 73 - ImportClosingFormater('', StrToBoolean(cli=True), - post_processing=True, required=False, - comment=u'Dossier clos'), # BV, 74, end date - ImportClosingFormater( + None, # BV, 74 + ImportFormater( 'in_charge__raw_name', # BW, 75 responsable UnicodeFormater(200), comment=u"Responsable - nom brut", diff --git a/archaeological_files/models.py b/archaeological_files/models.py index aa0cda30a..604278c73 100644 --- a/archaeological_files/models.py +++ b/archaeological_files/models.py @@ -77,7 +77,7 @@ class File(BaseHistorizedItem, OwnPerms, ValueGetter, ShortMenuItem, _(u"Numeric reference"), blank=True, null=True) internal_reference = models.CharField(_(u"Internal reference"), blank=True, null=True, max_length=60) - name = models.CharField(_(u"Name"), max_length=100, blank=True, null=True) + name = models.TextField(_(u"Name"), blank=True, null=True) file_type = models.ForeignKey(FileType, verbose_name=_(u"File type")) in_charge = models.ForeignKey(Person, related_name='file_responsability', verbose_name=_(u"Person in charge"), diff --git a/ishtar_common/data_importer.py b/ishtar_common/data_importer.py index 065720bbf..5f70d81e3 100644 --- a/ishtar_common/data_importer.py +++ b/ishtar_common/data_importer.py @@ -144,13 +144,14 @@ class ChoiceChecker(object): class UnicodeFormater(Formater): - def __init__(self, max_length, clean=False, re_filter=None, notnull=False, - db_target=None): + def __init__(self, max_length=None, clean=False, re_filter=None, + notnull=False, prefix=u'', db_target=None): self.max_length = max_length self.db_target = db_target self.clean = clean self.re_filter = re_filter self.notnull = notnull + self.prefix = prefix def format(self, value): try: @@ -169,13 +170,14 @@ class UnicodeFormater(Formater): value = value.replace(", , ", ", ") except UnicodeDecodeError: return - if len(value) > self.max_length: + if self.max_length and len(value) > self.max_length: raise ValueError( _(u"\"%(value)s\" is too long. The max length is %(length)d " u"characters.") % {'value': value, 'length': self.max_length}) if self.notnull and not value: return + value = self.prefix + value return value |