Exemple #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),
         }
Exemple #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()
Exemple #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
Exemple #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
Exemple #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()
Exemple #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)
Exemple #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()
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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))
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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)
Exemple #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),
         }
Exemple #19
0
 def getter(self):
     transform = transform_from_datatype(self.datatype)
     getter = getter_from_property_reference(self)
     return TransformedGetter(getter, transform)
Exemple #20
0
 def __call__(self, item, context=None):
     transform = transform_from_datatype(self.datatype)
     return transform(safe_recursive_lookup(item, self.property_path))
Exemple #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)
Exemple #22
0
 def getter(self):
     transform = transform_from_datatype(self.datatype)
     getter = getter_from_property_reference(self)
     return TransformedGetter(getter, transform)
Exemple #23
0
 def __call__(self, item, context=None):
     transform = transform_from_datatype(self.datatype)
     return transform(safe_recursive_lookup(item, self.property_path))
Exemple #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)
Exemple #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, '')
Exemple #26
0
 def expression(self):
     transform = transform_from_datatype(self.datatype)
     getter = NestedDictGetter(self.property_path)
     return TransformedGetter(getter, transform)
Exemple #27
0
 def expression(self):
     transform = transform_from_datatype(self.datatype)
     getter = NestedDictGetter(self.property_path)
     return TransformedGetter(getter, transform)