diff options
Diffstat (limited to 'archaeological_operations/utils.py')
-rw-r--r-- | archaeological_operations/utils.py | 67 |
1 files changed, 41 insertions, 26 deletions
diff --git a/archaeological_operations/utils.py b/archaeological_operations/utils.py index dcae8a3a8..60b1585ef 100644 --- a/archaeological_operations/utils.py +++ b/archaeological_operations/utils.py @@ -35,7 +35,8 @@ from archaeological_files.models import PermitType, File, FileType from archaeological_operations.models import Operation, OperationType, Period, \ AdministrativeAct, ActType, OperationSource, Parcel -DEFAULT_PERSON = User.objects.order_by('pk').all()[0] +def get_default_person(): + return User.objects.order_by('pk').all()[0] def _get_parse_string(trunc_number=None): def parse_string(value): @@ -56,25 +57,40 @@ def parse_multivalue(value): return re.sub('([0-9])([a-z])', r'\1 \2', s1) ope_types = {} -for k in settings.ISHTAR_OPE_TYPES.keys(): - ot, created = OperationType.objects.get_or_create( +def _init_ope_types(): + for k in settings.ISHTAR_OPE_TYPES.keys(): + ot, created = OperationType.objects.get_or_create( txt_idx=settings.ISHTAR_OPE_TYPES[k][0], defaults={'label':settings.ISHTAR_OPE_TYPES[k][1], 'preventive':k[0]==u'préventive'}) - ope_types[k] = ot + ope_types[k] = ot def parse_operationtype(value, preventive, owner): value = (preventive.strip(), value.strip()) + if not ope_types: + _init_ope_types() if value not in ope_types: return None return ope_types[value] periods = {} -for k in settings.ISHTAR_PERIODS.keys(): - periods[k] = Period.objects.get(txt_idx=settings.ISHTAR_PERIODS[k]) -periods_keys = periods.keys() -periods_keys.sort(key=len) -periods_keys.reverse() +periods_keys = [] +def _init_period(): + for k in settings.ISHTAR_PERIODS.keys(): + periods[k] = Period.objects.get(txt_idx=settings.ISHTAR_PERIODS[k]) + periods_keys = periods.keys() + periods_keys.sort(key=len) + periods_keys.reverse() + for k in settings.ISHTAR_PERIODS.keys(): + period = Period.objects.get(txt_idx=settings.ISHTAR_PERIODS[k]) + slug = slugify(period.label) + period_names[slug] = period + for k in REPLACED_PERIOD_DCT.keys(): + if k in slug: + period_names[slug.replace(k, REPLACED_PERIOD_DCT[k])] = period + period_names_keys = period_names.keys() + period_names_keys.sort(key=len) + period_names_keys.reverse() def parse_period(value): value = parse_string(value) @@ -82,6 +98,8 @@ def parse_period(value): while value.endswith('-'): value = value[:-1] value = value[3:] if value.startswith('EUR') else value + if not periods: + _init_period() if not value: return [periods[u'']] period, old_val = [], u'' @@ -99,18 +117,11 @@ _REPLACED_PERIOD += [(y, x) for x, y in _REPLACED_PERIOD] REPLACED_PERIOD_DCT = dict(_REPLACED_PERIOD) period_names = {} -for k in settings.ISHTAR_PERIODS.keys(): - period = Period.objects.get(txt_idx=settings.ISHTAR_PERIODS[k]) - slug = slugify(period.label) - period_names[slug] = period - for k in REPLACED_PERIOD_DCT.keys(): - if k in slug: - period_names[slug.replace(k, REPLACED_PERIOD_DCT[k])] = period -period_names_keys = period_names.keys() -period_names_keys.sort(key=len) -period_names_keys.reverse() +period_names_keys = {} def parse_period_name(value): + if not period_names: + _init_period() value = parse_string(value) if not value: return [period_names[u'']] @@ -126,15 +137,19 @@ def parse_period_name(value): return period _CACHED_PERMIT_TYPES = {} -for k in settings.ISHTAR_PERMIT_TYPES: - txt_idx, label = settings.ISHTAR_PERMIT_TYPES[k] - permit_type, created = PermitType.objects.get_or_create(txt_idx=txt_idx, - defaults={'label':label, - 'available':True}) - _CACHED_PERMIT_TYPES[k] = permit_type + +def _init_permit_type(): + for k in settings.ISHTAR_PERMIT_TYPES: + txt_idx, label = settings.ISHTAR_PERMIT_TYPES[k] + permit_type, created = PermitType.objects.get_or_create(txt_idx=txt_idx, + defaults={'label':label, + 'available':True}) + _CACHED_PERMIT_TYPES[k] = permit_type def parse_permittype(value): value = parse_string(value).lower() + if not _CACHED_PERMIT_TYPES: + _init_permit_type() if value not in _CACHED_PERMIT_TYPES: if not "" in _CACHED_PERMIT_TYPES: return @@ -266,7 +281,7 @@ def parse_name_surname(value): if q.count(): return q.all()[0] else: - defaults = {'history_modifier':DEFAULT_PERSON, + defaults = {'history_modifier':get_default_user(), 'title':''} defaults.update(values) p = Person.objects.create(**defaults) |