Files
django-dav-events/dav_events/config.py

84 lines
3.0 KiB
Python

import logging
import re
logger = logging.getLogger(__name__)
# Form and Model Field Config
COMMON_CHAR_FIELD_LENGTH = 250
NUMBER_MAX_LENGTH = 12
TITLE_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
TRAINER_NAME_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
PHONE_NUMBER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
LOCATION_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
TRANSPORT_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
DEPARTURE_RIDE_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
MEETING_POINT_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
BASECAMP_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
ACCOMMODATION_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
MEALS_OTHER_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
ADDITIONAL_COSTS_MAX_LENGTH = COMMON_CHAR_FIELD_LENGTH
class FieldInitial(object):
_constraint_re = re.compile(r'^(?P<field>[a-z_]+)(?P<op>[=]+)(?P<value>.*)$')
def __init__(self, *args):
self._tuples = []
if len(args) == 1:
self._tuples = [(None, args[0])]
else:
constraint = None
for arg in args:
if constraint is None:
constraint = arg
else:
self._tuples.append((constraint, arg))
constraint = None
def get_value(self, session_data):
parameters = {
'mode': session_data.get('mode', None),
'sport': session_data.get('sport', None),
'level': session_data.get('level', None),
'overnight': str(bool(session_data.get('last_day', None))),
'country': session_data.get('country', None),
'terrain': session_data.get('terrain', None),
'transport': session_data.get('transport', None),
}
for tuple in self._tuples:
constraint, result = tuple
if not constraint:
return result
match = False
constraint_parts = constraint.split(',')
for sub_constraint in constraint_parts:
c = self._constraint_re.match(sub_constraint)
if c is not None:
c_field = c.group('field')
if c_field not in parameters:
logger.error('FieldInitial: Invalid field: \'%s\'', sub_constraint)
continue
c_op = c.group('op')
c_value = c.group('value')
if c_op == '==':
if parameters[c_field] == c_value:
match = True
continue
else:
match = False
break
else:
logger.error('FieldInitial: Invalid operator: \'%s\'', sub_constraint)
continue
else:
logger.error('FieldInitial: Invalid constraint: \'%s\'', constraint)
break
if match:
return result
return None