diff options
Diffstat (limited to 'archaeological_operations/import_from_csv.py')
| -rw-r--r-- | archaeological_operations/import_from_csv.py | 41 | 
1 files changed, 2 insertions, 39 deletions
| diff --git a/archaeological_operations/import_from_csv.py b/archaeological_operations/import_from_csv.py index 1176aec4c..bd4c1c841 100644 --- a/archaeological_operations/import_from_csv.py +++ b/archaeological_operations/import_from_csv.py @@ -33,6 +33,8 @@ from django.contrib.auth.models import User  from django.db import transaction  from django.template.defaultfilters import slugify +from archaeological_operations.utils import parse_parcels +  from ishtar_common.models import Town, Person, PersonType, OrganizationType, \      Organization, SourceType  from archaeological_files.models import PermitType, File, FileType @@ -426,45 +428,6 @@ 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(ur"(?: )*(?:[Ss]ection(?:s)?)?(?: )*([A-Z][A-Z0-9]{0,3})[ :]*((?:(?: |;|,|[Pp]arcelle(?:s)?|n°|et|à)*[0-9]+[p]?)+)") -PARCEL_NB_RANGE_REGEXP = re.compile(ur'([0-9]+[p]?) à ([0-9]+[p]?)') -PARCEL_NB_REGEXP = re.compile(ur'(?: |;|,|[Pp]arcelle(?:s)?|n°|et|à)*([0-9]+[p]?)') - -def parse_parcels(parcel_str, insee_code, 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] -    m = PARCEL_YEAR_REGEXP.match(parcel_str) -    year = None -    if m: -        year = m.groups()[0] -        parcel_str = parcel_str[m.span()[1]:] -    for parcel in PARCEL_SECTION_REGEXP.findall(parcel_str): -        sector, nums = parcel[0], parcel[1] -        for num in PARCEL_NB_REGEXP.findall(nums): -            if len(unicode(num)) > 6: -                continue -            parcels.append({'year':year, 'town':town, 'section':sector, -                            'parcel_number':num, 'history_modifier':owner}) -        for parcel_ranges in PARCEL_NB_RANGE_REGEXP.findall(nums): -            lower_range, higher_range = parcel_ranges -            try: -                # the lower range itself has been already kept -                lower_range = int(lower_range) + 1 -                higher_range = int(higher_range) -            except ValueError: -                continue -            for num in xrange(lower_range, higher_range): -                parcels.append({'year':year, 'town':town, -                        'section':sector, 'parcel_number':unicode(num), -                        'history_modifier':owner}) -    return parcels -  _CACHED_DOC_TYPES = {}  def parse_doc_types(value): | 
