示例#1
0
 def default_value(self, request_user=None):
     from corehq.apps.userreports.expressions.getters import transform_from_datatype
     if self.pre_value is None:
         return {
             'operator': self.pre_operator or 'is',
             'operand': None,
         }
     elif isinstance(self.pre_value, list) and self.datatype != 'array':
         # We are assuming that `auto_value` is a list of items of type `datatype`. See
         # `transform_from_datatype()` for list of recognised data types.
         #
         # If `auto_value` is a list, and `datatype` == "array", we assume that the user meant the data type to
         # refer to `auto_value` itself (handled by the `else` clause below) and not the data type of the items
         # inside it. (i.e. We assume that `auto_value` is not an array of arrays.)
         return {
             'operator':
             self.pre_operator or 'in',
             'operand': [
                 transform_from_datatype(self.datatype)(v)
                 for v in self.pre_value
             ],
         }
     else:
         return {
             'operator': self.pre_operator or '=',
             'operand':
             transform_from_datatype(self.datatype)(self.pre_value),
         }
示例#2
0
 def value(self, **kwargs):
     selection = unicode(kwargs.get(self.name, ""))
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [transform_from_datatype(self.datatype)(c) for c in choices]
         return [Choice(tc, c) for (tc, c) in zip(typed_choices, choices)]
     return self.default_value()
示例#3
0
 def __call__(self, item, context=None):
     var_dict = self.get_variables(item, context)
     try:
         untransformed_value = eval_statements(self.statement, var_dict)
         return transform_from_datatype(self.datatype)(untransformed_value)
     except (InvalidExpression, SyntaxError, TypeError, ZeroDivisionError):
         return None
示例#4
0
 def __call__(self, item, context=None):
     var_dict = self.get_variables(item, context)
     try:
         untransformed_value = eval_statements(self.statement, var_dict)
         return transform_from_datatype(self.datatype)(untransformed_value)
     except (InvalidExpression, SyntaxError, TypeError, ZeroDivisionError):
         return None
示例#5
0
 def value(self, **kwargs):
     selection = unicode(kwargs.get(self.name, ""))
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [transform_from_datatype(self.datatype)(c) for c in choices]
         return self.choice_provider.get_sorted_choices_for_values(typed_choices)
     return self.default_value()
示例#6
0
 def value(self, **kwargs):
     selection = six.text_type(kwargs.get(self.name, ""))
     user = kwargs.get(REQUEST_USER_KEY, None)
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [transform_from_datatype(self.datatype)(c) for c in choices]
         return self.choice_provider.get_sorted_choices_for_values(typed_choices, user)
     return self.default_value(user)
示例#7
0
 def value(self, **kwargs):
     selection = unicode(kwargs.get(self.name, ""))
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [
             transform_from_datatype(self.datatype)(c) for c in choices
         ]
         return [Choice(tc, c) for (tc, c) in zip(typed_choices, choices)]
     return self.default_value()
示例#8
0
 def value(self, **kwargs):
     raw_value = kwargs[self.name]
     choice = transform_from_datatype(self.datatype)(raw_value) if raw_value != SHOW_ALL_CHOICE else raw_value
     choice_values = map(lambda c: c.value, self.choices)
     if choice not in choice_values:
         raise FilterValueException(
             _(u'Choice "{choice}" not found in choices: {choices}').format(choice=choice, choices=choice_values)
         )
     return next(choice_obj for choice_obj in self.choices if choice_obj.value == choice)
示例#9
0
 def value(self, **kwargs):
     from corehq.apps.userreports.expressions.getters import transform_from_datatype
     selection = kwargs.get(self.name, "")
     user = kwargs.get(REQUEST_USER_KEY, None)
     if selection:
         choices = selection if isinstance(selection, list) else [selection]
         typed_choices = [transform_from_datatype(self.datatype)(c) for c in choices]
         return self.choice_provider.get_sorted_choices_for_values(typed_choices, user)
     return self.default_value(user)
示例#10
0
 def value(self, **kwargs):
     raw_value = kwargs[self.name]
     choice = transform_from_datatype(self.datatype)(raw_value) if raw_value != SHOW_ALL_CHOICE else raw_value
     choice_values = [c.value for c in self.choices]
     if choice not in choice_values:
         raise FilterValueException(_(u'Choice "{choice}" not found in choices: {choices}')
                                    .format(choice=choice,
                                            choices=choice_values))
     return next(choice_obj for choice_obj in self.choices if choice_obj.value == choice)
示例#11
0
 def parsed_expression(self, context):
     from corehq.apps.userreports.expressions.factory import ExpressionFactory
     expression = ExpressionFactory.from_spec(self.expression, context)
     datatype_transform = transform_from_datatype(self.datatype)
     if self.transform:
         generic_transform = TransformFactory.get_transform(self.transform).get_transform_function()
         inner_getter = TransformedGetter(expression, generic_transform)
     else:
         inner_getter = expression
     return TransformedGetter(inner_getter, datatype_transform)
示例#12
0
 def value(self, **kwargs):
     selection = unicode(kwargs.get(self.name, ""))
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [
             transform_from_datatype(self.datatype)(c) for c in choices
         ]
         return self.choice_provider.get_sorted_choices_for_values(
             typed_choices)
     return self.default_value(kwargs.get("request_user", None))
示例#13
0
 def value(self, **kwargs):
     from corehq.apps.userreports.reports.filters.values import CHOICE_DELIMITER
     from corehq.apps.userreports.expressions.getters import transform_from_datatype
     selection = six.text_type(kwargs.get(self.name, ""))
     user = kwargs.get(REQUEST_USER_KEY, None)
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [transform_from_datatype(self.datatype)(c) for c in choices]
         return self.choice_provider.get_sorted_choices_for_values(typed_choices, user)
     return self.default_value(user)
示例#14
0
 def parsed_expression(self, context):
     from corehq.apps.userreports.expressions.factory import ExpressionFactory
     expression = ExpressionFactory.from_spec(self.expression, context)
     datatype_transform = transform_from_datatype(self.datatype)
     if self.transform:
         generic_transform = TransformFactory.get_transform(self.transform).get_transform_function()
         inner_getter = TransformedGetter(expression, generic_transform)
     else:
         inner_getter = expression
     return TransformedGetter(inner_getter, datatype_transform)
示例#15
0
 def value(self, **kwargs):
     from corehq.apps.userreports.reports.filters.values import CHOICE_DELIMITER
     from corehq.apps.userreports.expressions.getters import transform_from_datatype
     selection = six.text_type(kwargs.get(self.name, ""))
     user = kwargs.get(REQUEST_USER_KEY, None)
     if selection:
         choices = selection.split(CHOICE_DELIMITER)
         typed_choices = [transform_from_datatype(self.datatype)(c) for c in choices]
         return self.choice_provider.get_sorted_choices_for_values(typed_choices, user)
     return self.default_value(user)
示例#16
0
 def value(self, **kwargs):
     from corehq.apps.userreports.expressions.getters import transform_from_datatype
     from corehq.apps.userreports.reports.filters.values import SHOW_ALL_CHOICE
     raw_value = kwargs[self.name]
     choice = transform_from_datatype(self.datatype)(raw_value) if raw_value != SHOW_ALL_CHOICE else raw_value
     choice_values = [c.value for c in self.choices]
     if choice not in choice_values:
         raise FilterValueException(_(u'Choice "{choice}" not found in choices: {choices}')
                                    .format(choice=choice,
                                            choices=choice_values))
     return next(choice_obj for choice_obj in self.choices if choice_obj.value == choice)
示例#17
0
 def value(self, **kwargs):
     from corehq.apps.userreports.expressions.getters import transform_from_datatype
     from corehq.apps.userreports.reports.filters.values import SHOW_ALL_CHOICE
     raw_value = kwargs[self.name]
     choice = transform_from_datatype(self.datatype)(raw_value) if raw_value != SHOW_ALL_CHOICE else raw_value
     choice_values = [c.value for c in self.choices]
     if choice not in choice_values:
         raise FilterValueException(_('Choice "{choice}" not found in choices: {choices}')
                                    .format(choice=choice,
                                            choices=choice_values))
     return next(choice_obj for choice_obj in self.choices if choice_obj.value == choice)
示例#18
0
 def default_value(self, request_user=None):
     if self.pre_value is None:
         return {
             'operator': self.pre_operator or 'is',
             'operand': None,
         }
     elif isinstance(self.pre_value, list) and self.datatype != 'array':
         # We are assuming that `auto_value` is a list of items of type `datatype`. See
         # `transform_from_datatype()` for list of recognised data types.
         #
         # If `auto_value` is a list, and `datatype` == "array", we assume that the user meant the data type to
         # refer to `auto_value` itself (handled by the `else` clause below) and not the data type of the items
         # inside it. (i.e. We assume that `auto_value` is not an array of arrays.)
         return {
             'operator': self.pre_operator or 'in',
             'operand': [transform_from_datatype(self.datatype)(v) for v in self.pre_value],
         }
     else:
         return {
             'operator': self.pre_operator or '=',
             'operand': transform_from_datatype(self.datatype)(self.pre_value),
         }
示例#19
0
 def getter(self):
     transform = transform_from_datatype(self.datatype)
     getter = getter_from_property_reference(self)
     return TransformedGetter(getter, transform)
示例#20
0
 def __call__(self, item, context=None):
     transform = transform_from_datatype(self.datatype)
     return transform(safe_recursive_lookup(item, self.property_path))
示例#21
0
 def __call__(self, item, context=None):
     raw_value = item.get(self._property_name_expression(item, context)) if isinstance(item, dict) else None
     return transform_from_datatype(self.datatype)(raw_value)
示例#22
0
 def getter(self):
     transform = transform_from_datatype(self.datatype)
     getter = getter_from_property_reference(self)
     return TransformedGetter(getter, transform)
示例#23
0
 def __call__(self, item, context=None):
     transform = transform_from_datatype(self.datatype)
     return transform(safe_recursive_lookup(item, self.property_path))
示例#24
0
 def __call__(self, item, context=None):
     raw_value = item.get(self._property_name_expression(
         item, context)) if isinstance(item, dict) else None
     return transform_from_datatype(self.datatype)(raw_value)
示例#25
0
 def value(self, **kwargs):
     choice = kwargs[self.name]
     if choice:
         typed_choice = transform_from_datatype(self.datatype)(choice)
         return Choice(typed_choice, choice)
     return Choice(SHOW_ALL_CHOICE, '')
示例#26
0
 def expression(self):
     transform = transform_from_datatype(self.datatype)
     getter = NestedDictGetter(self.property_path)
     return TransformedGetter(getter, transform)
示例#27
0
 def expression(self):
     transform = transform_from_datatype(self.datatype)
     getter = NestedDictGetter(self.property_path)
     return TransformedGetter(getter, transform)