Exemplo n.º 1
0
 def showreport(self, **kw):
     fields = kw['hardware']
     items = Computer.select ()
     # force conversion to str, since there is a check with isinstance,
     # and we don't want to have field names be something other than
     # ASCII anyway
     fields = [(field.title(), str(field.strip())) for field in fields]
     grid = DataGrid (fields = fields)
     return dict(grid = grid, items = items)
Exemplo n.º 2
0
    def display(self, category, **kw):
        report_tables = []

        # get selected networks
        networks = kw.get('Networks', None)
        os_ids = kw.get('Operating Systems', None)

        # if none was selected, get all; there's probably a better way of handling
        # this, by conditionally adding where clauses to the reports selects
        if not networks:
            action = self._get_action_from_category(category)
            networks = [x[0] for x in self._get_network_items(action)]

        if not os_ids:
            os_ids = [x[0] for x in self._get_os_items()]

        # this may be needed
        # fields = self._get_mandatory_fields () + list(kw['Report Items'])
        fields = self._get_mandatory_fields () + kw['Report Items']

        if category == 'hardware':
            items = Computer.select (apply(Computer.c.netaddr.in_, networks))
            items = [item for item in items if str(item.os_id) in os_ids]
            count = 1
            for item in items:
                item.index = count
                item.os_name = item.opsys.name
                count += 1
            del count
            # force conversion to str, since there is a check with isinstance,
            # and we don't want to have field names be something other than
            # ASCII anyway
            fields = [(field.title(), str(field.strip())) for field in fields]
            grid = DataGrid (fields = fields)
            report_tables.append ((grid, items))

        if kw.has_key ('Statistics Items'):
            report_tables += self._get_statistics_tables (kw['Statistics Items'],
                                                          networks, os_ids)

        return dict(report_tables = report_tables)