Exemplo n.º 1
0
    def _process(self):
        if self._processed:
            return
        ds = self.report.datasource
        # record is a DatasourceRow instance
        for datasourcerow in ds:
            if callable(self.group_by):
                group_name = self.group_by(datasourcerow._original)
            elif isinstance(self.group_by, basestring):
                try:
                    col = self.report.get_column_by_name(self.group_by)
                    group_name = col.get_value(datasourcerow._original,
                                               self.report.datasource).value
                except KeyError:
                    group_name = get_attr(datasourcerow._original,
                                          self.group_by)
            else:
                group_name = get_attr(datasourcerow._original, self.group_by)

            #datasourcerow._sort_func = self.report._order_columns
            orderedrow = DatasourceRow([
                (name, datasourcerow[name])
                for name in self.report.display_order()
            ])
            orderedrow._original = datasourcerow._original
            self._dict[group_name].append(orderedrow)

        self._processed = True
Exemplo n.º 2
0
    def register(self, report_class):
        model = get_attr(report_class, 'datasource.model', None)
        if model is None:
            logger.error("Unable to monitor {0}".format(report_class))

        elif model not in self.monitors:
            self.monitors.append(model)
            monitor_model(model)

        self.reports.append(_Entry(fqn(report_class), report_class))
Exemplo n.º 3
0
    def register(self, report_class):
        model = get_attr(report_class, 'datasource.model', None)
        if model is None:
            logger.error("Unable to monitor {0}".format(report_class))

        elif model not in self.monitors:
            self.monitors.append(model)
            monitor_model(model)

        self.reports.append(_Entry(fqn(report_class), report_class))
Exemplo n.º 4
0
    def items(self):
        self._process()

        # order internal group elements
        for group_name, rows in self._dict.items():
            rows.sort(key=lambda x: get_attr(x._original, self.internal_order))

        #returns groups ordered
        sorted_groups = zip(self._dict.keys(), self._dict.values())
        sorted_groups.sort(key=lambda x: smart_unicode(x[0]))

        return sorted_groups
Exemplo n.º 5
0
    def items(self):
        self._process()

        # order internal group elements
        for group_name, rows in self._dict.items():
            rows.sort(key=lambda x: get_attr(x._original, self.internal_order))

        #returns groups ordered
        sorted_groups = zip(self._dict.keys(), self._dict.values())
        sorted_groups.sort(key=lambda x: smart_unicode(x[0]))

        return sorted_groups
Exemplo n.º 6
0
    def _process(self):
        if self._processed:
            return
        ds = self.report.datasource
        # record is a DatasourceRow instance
        for datasourcerow in ds:
            if callable(self.group_by):
                group_name = self.group_by(datasourcerow._original)
            elif isinstance(self.group_by, basestring):
                try:
                    col = self.report.get_column_by_name(self.group_by)
                    group_name = col.get_value(datasourcerow._original, self.report.datasource).value
                except KeyError:
                    group_name = get_attr(datasourcerow._original, self.group_by)
            else:
                group_name = get_attr(datasourcerow._original, self.group_by)

            #datasourcerow._sort_func = self.report._order_columns
            orderedrow = DatasourceRow([(name, datasourcerow[name]) for name in self.report.display_order()])
            orderedrow._original = datasourcerow._original
            self._dict[group_name].append(orderedrow)

        self._processed = True
Exemplo n.º 7
0
 def _get_value_from_attr(self, obj, attr_name, datasource):
     try:
         notfound = object()
         attr = get_attr(obj, attr_name, notfound)
         if attr is notfound:
             attr = getattr(datasource, attr_name, None)
             if attr:
                 if callable(attr):
                     return attr(obj)
                 else:
                     return attr
         else:
             if callable(attr):
                 return attr()
             return attr
     except Exception as e:
         logger.exception(e)
         raise ValueError("Unable to get value from `%s`: `%s` `%s`" % (attr_name, type(e), e))
     raise ValueError(attr_name)
Exemplo n.º 8
0
 def _get_value_from_attr(self, obj, attr_name, datasource):
     try:
         notfound = object()
         attr = get_attr(obj, attr_name, notfound)
         if attr is notfound:
             attr = getattr(datasource, attr_name, None)
             if attr:
                 if callable(attr):
                     return attr(obj)
                 else:
                     return attr
         else:
             if callable(attr):
                 return attr()
             return attr
     except Exception as e:
         logger.exception(e)
         raise ValueError("Unable to get value from `%s`: `%s` `%s`" % (attr_name, type(e), e))
     raise ValueError(attr_name)