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) | 
