diff options
Diffstat (limited to 'archaeological_files/data_importer.py')
| -rw-r--r-- | archaeological_files/data_importer.py | 359 | 
1 files changed, 0 insertions, 359 deletions
| diff --git a/archaeological_files/data_importer.py b/archaeological_files/data_importer.py deleted file mode 100644 index 96b2ee007..000000000 --- a/archaeological_files/data_importer.py +++ /dev/null @@ -1,359 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- -# Copyright (C) 2013-2015  Étienne Loks  <etienne.loks_AT_peacefrogsDOTnet> - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as -# published by the Free Software Foundation, either version 3 of the -# License, or (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the -# GNU Affero General Public License for more details. - -# You should have received a copy of the GNU Affero General Public License -# along with this program.  If not, see <http://www.gnu.org/licenses/>. - -# See the file COPYING for details. - -import datetime -import unicodecsv - -from django.conf import settings - -from ishtar_common.data_importer import * -from ishtar_common.models import OrganizationType - -from archaeological_operations.data_importer import * - -from archaeological_files import models - - -class ImportClosingFormater(ImportFormater): -    def post_process(self, obj, context, value, owner=None): -        value = self.formater.format(value) -        if not value: -            return -        open_date = obj.reception_date or obj.creation_date -        if not open_date: -            return -        obj.end_date = open_date + datetime.timedelta(30) -        obj.save() - - -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): -    def post_processing(self, item, data): -        if not item.end_date:  # auto-close -            open_date = item.reception_date or item.creation_date -            if open_date: -                item.end_date = open_date + datetime.timedelta(30) -        item.save() -        return item - - -class FileImporterSraPdL(FilePostProcessing, Importer): -    DESC = u"Exports dossiers SRA PdL : importeur Filemaker dossiers" -    SLUG = "sra-pdl-files" -    LINE_FORMAT = [] -    OBJECT_CLS = models.File -    UNICITY_KEYS = ['external_id'] -    DEFAULTS = { -        ('responsible_town_planning_service', 'attached_to'): { -            'organization_type': OrganizationType.objects.get( -                txt_idx="planning_service")}, -        ('general_contractor', 'attached_to'): { -            'organization_type': OrganizationType.objects.get( -                txt_idx="general_contractor")}, -        tuple(): { -            'file_type': models.FileType.objects.get( -                txt_idx='preventive'), -            'creation_date': datetime.datetime.now, -        }, -        ('in_charge',): {'attached_to': None},  # initialized in __init__ -    } - -    def _init_line_format(self): -        tf = TownFormater() -        tf.town_dct_init() -        self.line_format = [ -            None,  # A, 1 -            ImportFormater( -                ['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), -                 UnicodeFormater(70, clean=True), ], -                regexp=RE_ADD_CD_POSTAL_TOWN, -                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', -                UnicodeFormater(200), -                comment=u"Aménageur - nom brut", -                post_processing=True, -                required=False), -            None,  # D, 4 -            ImportFormater( -                "general_contractor__title",  # E, 5 -                TypeFormater(models.TitleType), -                required=False, -                comment=u"Aménageur - titre"), -            None,  # F, 6 -            None,  # G, 7 -            None,  # H, 8 -            ImportFormater("parcels__year",  # I, 9 -                           YearNoFuturFormater(), -                           required=False), -            # J, 10 -            ImportParcelFormater('', required=False, post_processing=True), -            None,  # K, 11 -            ImportFormater([['main_town', 'parcels__town']],  # L, 12 -                           tf, -                           required=False, -                           comment=u"Commune (si non définie avant)"), -            ImportFormater([['main_town', 'parcels__town']],  # M, 13 -                           tf, -                           required=False, -                           comment=u"Commune (si non définie avant)"), -            ImportFormater('saisine_type',  # N, 14 -                           TypeFormater(models.SaisineType), -                           required=False, -                           comment=u"Type de saisine"), -            None,  # O, 15 -            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__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), ], -                regexp=RE_NAME_ADD_CD_POSTAL_TOWN, -                regexp_formater_args=[[0], [1], [2], [3]], -                comment=u"Service instructeur - adresse", -                required=False), -            ImportFormater( -                'comment',  # S, 19 -                UnicodeFormater(prefix=u'* Considérants : '), -                comment=u"Commentaire", -                concat=True, -                required=False), -            ImportYearFormater('reception_date',  # T, 20 -                               DateFormater(['%d/%m/%Y', '%d/%m/%Y']), -                               comment=u"Date de réception", -                               required=False, -                               duplicate_fields=[['creation_date', False]]), -            None,  # U, 21 -            None,  # V, 22 -            None,  # W, 23 -            None,  # X, 24 -            None,  # Y, 25 -            None,  # Z, 26 -            None,  # AA, 27 -            None,  # AB, 28 -            None,  # AC, 29 -            None,  # AD, 30 -            None,  # AE, 31 -            None,  # AF, 32 -            None,  # AG, 33 -            None,  # AH, 34 -            ImportFormater('creation_date',  # AI, 35 -                           DateFormater(['%d/%m/%Y', '%d/%m/%y']), -                           force_value=True, -                           comment=u"Date de création", -                           required=False,), -            None,  # AJ, 36 -            ImportFormater('comment',  # AK, 37 -                           UnicodeFormater(prefix=u"* Historique : "), -                           comment=u"Commentaire", -                           concat=True, required=False), -            ImportFormater('internal_reference',  # AL, 38 -                           UnicodeFormater(60), -                           comment=u"Autre référence", -                           required=False), -            None,  # AM, 39 -            None,  # AN, 40 -            ImportFormater('comment',  # AO, 41 -                           UnicodeFormater( -                               prefix=u"* Justificatif de prescription : "), -                           comment=u"Justificatif de prescription", -                           concat=True, required=False), -            ImportFormater('comment',  # AP, 42 -                           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( -                               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 -                           UnicodeFormater(300, clean=True), -                           regexp=RE_PERMIT_REFERENCE, -                           comment=u"Réf. du permis de construire", -                           required=False), -            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 -            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(), -                           required=False, -                           comment=u"Commune (si non définie avant)"), -            ImportFormater('comment',  # BF, 58 -                           UnicodeFormater(2000), -                           comment=u"Commentaire", -                           concat=True, required=False), -            None,  # BG, 59 -            None,  # BH, 60 -            None,  # BI, 61 -            None,  # BJ, 62 -            None,  # BK, 63 -            None,  # BL, 64 -            None,  # BM, 65 -            None,  # BN, 66 -            None,  # BO, 67 -            None,  # BP, 68 -            None,  # BQ, 69 -            None,  # BR, 70 -            None,  # BS, 71 -            ImportFormater(  # BT, 72 nom service instructeur -                ['responsible_town_planning_service__attached_to__name', ], -                [UnicodeFormater(300, clean=True), ], -                regexp=RE_ORGA, -                comment=u"Service instructeur - nom", -                required=False), -            None,  # BU, 73 -            None,  # BV, 74 -            ImportFormater( -                'in_charge__raw_name',  # BW, 75 responsable -                UnicodeFormater(200), -                comment=u"Responsable - nom brut", -                required=False), -            ImportFormater('total_surface',  # BX, 76 surface totale -                           SurfaceFormater(), -                           comment=u"Surface totale", -                           required=False), -            ImportFormater('total_developed_surface', -                           # BY, 77 surface totale aménagée -                           SurfaceFormater(), -                           comment=u"Surface totale aménagée", -                           required=False), -            None,  # BZ, 78 -            None,  # CA, 79 -            None,  # CB, 80 -            None,  # CC, 81 -            None,  # CD, 82 -            None,  # CE, 83 -            None,  # CF, 84 -            ImportFormater('permit_type', -                           TypeFormater(models.PermitType), -                           required=False, -                           comment=u"Type de permis"),  # CG, 85 -            None,  # CH, 85 -            ImportFormater('year',  # CI, 86 -                           IntegerFormater(), -                           comment=u"Année du dossier", -                           required=True), -            ImportFormater('numeric_reference',  # CJ, 87 -                           IntegerFormater(), -                           comment=u"Identifiant numérique", -                           required=True), -            ImportFormater('external_id',  # CK, 88 -                           UnicodeFormater(), -                           comment=u"Identifiant externe", -                           required=True), -        ] - -    def __init__(self, *args, **kwargs): -        super(FileImporterSraPdL, self).__init__(*args, **kwargs) -        self.DEFAULTS[('in_charge',)]['attached_to'], created = \ -            models.Organization.objects.get_or_create( -                name='SRA Pays de la Loire', -                defaults={ -                    'organization_type': -                    OrganizationType.objects.get(txt_idx='sra')}) -        self._init_line_format() -        if tuple() not in self._defaults: -            self._defaults[tuple()] = {} -        self._defaults[tuple()]['history_modifier'] = self.history_modifier -        self._associate_db_target_to_formaters() - - -def test(filename): -    importer = FileImporterSraPdL(skip_lines=3, output='cli') -    with open(filename) as csv_file: -        encodings = [settings.ENCODING, settings.ALT_ENCODING, 'utf-8'] -        for encoding in encodings: -            try: -                importer.importation( -                    [line for line in -                     unicodecsv.reader(csv_file, encoding='utf-8')]) -                # importer.importation(unicode_csv_reader( -                #        [line.decode(encoding) -                #         for line in csv_file.readlines()]) -                print importer.get_csv_errors() -                break -            except ImporterError, e: -                print(unicode(e)) -                if e.type == ImporterError.HEADER \ -                        and encoding != encodings[-1]: -                    csv_file.seek(0) -                    continue -            except UnicodeDecodeError: -                if encoding != encodings[-1]: -                    csv_file.seek(0) -                    continue | 
