Exemple #1
0
 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
     )
Exemple #2
0
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
Exemple #3
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,
     )
Exemple #4
0
 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,
     )
Exemple #5
0
 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,
     )
Exemple #6
0
 def by_mac(c, mac):
     return DBSession.query(c).filter_by(mac=mac).first()
Exemple #7
0
 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)
Exemple #8
0
 def by_manifest(c, manifest):
     return DBSession.query(c).filter_by(manifest=manifest).first()
Exemple #9
0
 def by_serial(c, serial):
     return DBSession.query(c).filter_by(serial=serial).first()