diff options
| author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-05-07 19:22:23 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-05-07 19:22:23 +0200 | 
| commit | de4f9a22a928a8b4f1a05720464f85db8651fa5b (patch) | |
| tree | a5449faaaf5e6b034152fcaea7fcb23165f76947 /archaeological_operations/import_from_csv.py | |
| parent | 548aec29bcaa8348f5d28402783165cff302830d (diff) | |
| download | Ishtar-de4f9a22a928a8b4f1a05720464f85db8651fa5b.tar.bz2 Ishtar-de4f9a22a928a8b4f1a05720464f85db8651fa5b.zip | |
First work on parcel imports
Diffstat (limited to 'archaeological_operations/import_from_csv.py')
| -rw-r--r-- | archaeological_operations/import_from_csv.py | 40 | 
1 files changed, 39 insertions, 1 deletions
| diff --git a/archaeological_operations/import_from_csv.py b/archaeological_operations/import_from_csv.py index 9d3a58ffd..e61596b00 100644 --- a/archaeological_operations/import_from_csv.py +++ b/archaeological_operations/import_from_csv.py @@ -410,6 +410,43 @@ def parse_rapp_index(value):      if items:          return int(items[-1]) +PARCEL_YEAR_REGEXP = re.compile(r"^([0-9]{4})[ :]+") + +PARCEL_SECTION_REGEXP = re.compile(r"([A-Z0-9]{1,3})[ :]+ *(([0-9]+[a-z]?[ ,à]*[et]*)+)") +PARCEL_NB_REGEXP = re.compile(r'([0-9]+[a-z]?)[ ,à]*[et]*') + +def parse_parcels(insee_code, parcel_str, owner): +    parcels = [] +    town = parse_insee(insee_code) +    # manage only one town at a time +    assert len(town) < 2 +    if not town: +        return parcels +    town = town[0] +    parcel_values = {} +    m = PARCEL_YEAR_REGEXP.match(parcel_str) +    year = None +    if m: +        year = m.groups()[0] +        parcel_str = parcel_str[m.span()[1]:] +    parcel_values[year] = [] +    parcels_str = [parcel_str] +    if ';' in parcel_str: +        parcels_str = parcel_str.split(';') +    if '/' in parcel_str: +        parcels_str = parcel_str.split('/') +    for parcel_str in parcels_str: +        m = PARCEL_SECTION_REGEXP.match(parcel_str) +        while m: +            gp = m.groups() +            sector, nums = gp[0], gp[1] +            for num in PARCEL_NB_REGEXP.findall(nums): +                parcel_values[year].append((sector, num)) +            parcel_str = parcel_str[m.span()[1]:] +            m = PARCEL_SECTION_REGEXP.match(parcel_str) +    print parcel_values +    return parcels +  _CACHED_DOC_TYPES = {}  def parse_doc_types(value): @@ -479,7 +516,8 @@ def ope_postimportfix(ope, dct):      return ope  class RelatedClass: -    def __init__(self, key, cls, default_data={}, reverse_key=False, unique_keys=[]): +    def __init__(self, key, cls, default_data={}, reverse_key=False, +                 unique_keys=[]):          self.key, self.cls, self.default_data = key, cls, default_data          self.reverse_key, self.unique_keys = reverse_key, unique_keys | 
