def index(self, order_by=None, reverse=None): """Report overview.""" if reverse is None: reverse = True if not order_by: order_by = u"time" sort_keys = { u"name": Client.name, u"user": Client.console_user, u"addr": Client.remote_ip, u"mani": Client.manifest, u"div": Client.div, u"time": Client.timestamp, } sort_key = sort_keys[order_by] error_clients=DBSession.query(Client).filter(Client.errors > 0).order_by(sort_key).all() warning_clients=DBSession.query(Client).filter(Client.errors == 0).filter(Client.warnings > 0).order_by(sort_key).all() activity_clients=DBSession.query(Client).filter(Client.activity != None).order_by(sort_key).all() if reverse: error_clients.reverse() warning_clients.reverse() activity_clients.reverse() return dict( page="reports", order_by=order_by, reverse=reverse, error_clients=error_clients, warning_clients=warning_clients, activity_clients=activity_clients )
def main(argv): try: dbpath = argv[1] dest_dir = argv[2] except IndexError: usage() return 1 try: engine = sqlalchemy.create_engine('sqlite:///%s' % dbpath) DBSession.configure(bind=engine) except BaseException as e: print >>sys.stderr, "Couldn't open sqlite database %s: %s" % (dbpath, e) if not os.path.exists(dest_dir): try: os.makedirs(dest_dir) except BaseException as e: print >>sys.stderr, "Couldn't create dump directory %s: %s" % (dest_dir, e) return 2 for client in DBSession.query(Client).all(): print "%d %s %s %s" % (client.id, client.name, client.mac, client.remote_ip) c = dict() for prop in dir(Client): attr = getattr(Client, prop) if isinstance(attr, sqlalchemy.orm.attributes.InstrumentedAttribute): c[prop] = getattr(client, prop) with open("%s/%s.pickle" % (dest_dir, client.mac), "wb") as f: pickle.dump(c, f, pickle.HIGHEST_PROTOCOL) return 0
def manifest_list(self, order_by=None, reverse=None): """List all manifests.""" if reverse is None: reverse = True if not order_by: order_by = u"mani" sort_keys = { u"mani": Client.manifest, } manifests=DBSession.query(Client.manifest).distinct() return dict( page="manifests", manifests=manifests, order_by=order_by, reverse=reverse, )
def division_list(self, order_by=None, reverse=None): """List all Divisions.""" if reverse is None: reverse = True if not order_by: order_by = u"div" sort_keys = { u"div": Client.div, } divisions=DBSession.query(Client.div).distinct() return dict( page="divisions", divisions=divisions, order_by=order_by, reverse=reverse, )
def manifest(self, manifest=None, order_by=None, reverse=None): """List all clients.""" if reverse is None: reverse = True if not order_by: order_by = u"time" sort_keys = { u"name": Client.name, u"div": Client.div, u"user": Client.console_user, u"addr": Client.remote_ip, u"time": Client.timestamp, } sort_key = sort_keys[order_by] clients=DBSession.query(Client).filter_by(manifest=manifest).order_by(sort_key).all() if reverse: clients.reverse() return dict( page="manifests", order_by=order_by, reverse=reverse, clients=clients, )
def by_mac(c, mac): return DBSession.query(c).filter_by(mac=mac).first()
def test_query_obj(self): """Model objects can be queried""" obj = DBSession.query(self.klass).one() for key, value in self.attrs.iteritems(): assert_equals(getattr(obj, key), value)
def by_manifest(c, manifest): return DBSession.query(c).filter_by(manifest=manifest).first()
def by_serial(c, serial): return DBSession.query(c).filter_by(serial=serial).first()