示例#1
0
def device(req, resp):
    gc.collect()
    if req.method == 'POST':
        yield from req.read_form_data()
        #TODO: field validation
        f = open("datastore/config.db", "r+b")
        db = btree.open(f)
        db[b"eci1_crc1"] = req.form.get("eci1_crc1")[0]
        db[b"eci1_crc2"] = req.form.get("eci1_crc2")[0]
        db[b"eci1_gain"] = req.form.get("eci1_gain")[0]
        db[b"eci1_ugain"] = req.form.get("eci1_ugain")[0]
        db[b"eci2_crc1"] = req.form.get("eci2_crc1")[0]
        db[b"eci2_crc2"] = req.form.get("eci2_crc2")[0]
        db[b"eci2_gain"] = req.form.get("eci2_gain")[0]
        db[b"eci2_ugain"] = req.form.get("eci2_ugain")[0]
        db.close()
        f.close()
        # TODO: Redirect not working?, memory problem?
        yield from resp.awrite("HTTP/1.0 308 Redirect \r\n")
        yield from resp.awrite("Location: http://192.168.4.1:8081/\r\n")
    else:
        f = open("datastore/config.db", "r+b")
        db = btree.open(f)
        # TODO: Check if passing db saves any *real* memory - is this a weird way to pass variables to template?
        yield from picoweb.start_response(resp)
        yield from app.render_template(resp, "hardware.html", (db, ))
        db.close()
        f.close()
示例#2
0
 def __init__(self):
     try:
         self.file = open("tiny.db", "r+b")
         self.db = btree.open(self.file)
     except OSError:
         self.file = open("tiny.db", "w+b")
         self.db = btree.open(self.file)
         self.db[b"key"] = ""
示例#3
0
def networks(req, resp):
    if req.method == 'POST':
        # Process form
        yield from req.read_form_data()
        ssid = req.form.get('ssid')[0]
        pwd = req.form.get('pwd')[0]

        f = open("network.db", "r+b")
        db = btree.open(f)

        if req.form.get('connect'):
            try:
                network = ujson.loads(db[ssid])
                network['pwd'] = pwd
            except KeyError:
                network = {
                    "ssid": ssid,
                    "pwd": pwd,
                    "strength": None,
                    "connected": False
                }
            db[ssid] = ujson.dumps(network)
            # TODO attempt to connect to network
            print('connect to network: %s / pwd:%s' % (ssid, pwd))
        elif req.form.get('forget'):
            del db[ssid]
            print('Forget network: %s ' % ssid)

        db.close()
        f.close()

    # Load networks from db
    # Open db (assumes it exists at this point)
    f = open("network.db", "r+b")
    db = btree.open(f)
    # Retrieve all network, convert to list of dicts
    networks = []
    for key in db:
        data = ujson.loads(db[key])
        networks.append(
            Network(key.decode("utf-8"), data['strength'], data['pwd'],
                    data['connected']))
    db.close()
    f.close()
    #TODO: sort network list
    # networks.sort(key=lambda n:(str(n['connected']), n['pwd'], n['strength'], n['ssid']), reverse=True)

    yield from picoweb.start_response(resp)
    yield from app.render_template(resp, "networks.html", (networks, ))
def c():
    M = b'todo'
    L = '.db'
    G = 'modulelist'
    import machine as N, btree
    try:
        C = K(G + L, 'r+b')
        E = O
    except D:
        C = K(G + L, 'w+b')
        E = F
    stubber = Stubber(path=read_path())
    if not E: stubber.clean()
    A = btree.open(C)
    if not E or I(list(A.keys())) == 0:
        for P in K(G + '.txt'):
            B = P.strip()
            if I(B) and B[0] != '#': A[B] = M
        A.flush()
    for B in A.keys():
        if A[B] != M: continue
        H = F
        try:
            H = stubber.create_one_stub(B.decode(a))
        except MemoryError:
            A.close()
            C.close()
            N.reset()
        if H: J = 'good, I guess'
        else: J = b'skipped'
        A[B] = J
        A.flush()
    A.close()
    C.close()
示例#5
0
    def get(cfg_name):
        """
        get: get config setting from btree ui.cfg file if one exists

        Args:
            cfg_name ([str, bytes]): name of setting to load

        Returns:
            (string): value of setting
        """
        name = cfg_name.encode() if isinstance(cfg_name, str) else cfg_name
        try:
            cfg_file = open("ui.cfg", "r+b")
        except OSError:
            cfg_file = open("ui.cfg", "w+b")

        cfg_db = btree.open(cfg_file)
        try:
            cfg_value = cfg_db[name]
        except KeyError:
            cfg_value = b''

        cfg_db.close()
        cfg_file.close()

        return cfg_value.decode('ascii')
示例#6
0
    def open(self, path):
        try:
            self._fd = open(path, "r+b")
        except OSError:
            self._fd = open(path, "w+b")

        self._db = btree.open(self._fd)
示例#7
0
    def _initialize(self):
        try:
            self._stream = open("{}/{}".format(DB_FOLDER, self._name), "r+b")
        except OSError:
            self._stream = open("{}/{}".format(DB_FOLDER, self._name), "w+b")

        self._db = btree.open(self._stream)
示例#8
0
文件: db.py 项目: hmcguire1/TetherDB
    def delete(self, document_id: int, drop_all: bool = False) -> str:
        '''
        This method can delete a single document with doc_id(int) param or can
        delete all documents in database with drop_all(bool) param.
        Returns str of how many documents deleted.
        '''
        document_id = str(document_id)

        if document_id and not drop_all:
            try:
                del self.db[document_id]
                self.db.flush()
                self.db_len -= 1
                documents_deleted = 1
            except KeyError:
                return 'document_id not found'

        elif drop_all and not document_id:
            documents_deleted = self.db_len
            self.db_len = 0
            self.db.close()
            load_db(self.db_filepath, write_mode='wb')
            self.db = btree.open(load_db(self.db_filepath, 'r+b'),
                                 pagesize=1024)

        return '{} documents deleted'.format(documents_deleted)
示例#9
0
 def connect(self):
     try:
         self.f = open("espdb", "r+b")
     except OSError:
         self.f = open("espdb", "w+b")
     self.db = btree.open(self.f)
     self.log.info("Database initiated with success")
示例#10
0
    def __init__(self, pulse_per_kwh):
        """Setup, including initialsing the database if it doesnt exist."""
        self._kwh_per_pulse = 1 / pulse_per_kwh
        self._persist_counter = 0
        self._debounce_time = time.ticks_ms()

        # Setup DB
        try:
            self._dbfile = open("db", "r+b")
            print("Opened DB")
        except OSError:
            self._dbfile = open("db", "w+b")
            print("Created DB")
        self._db = btree.open(self._dbfile)
        if b"kwh" not in self._db:
            self._db["kwh"] = str(0)
            self._db.flush()
            print("Initialised DB")
        self._kwh = float(self._db[b"kwh"])

        # Setup averages
        self.timestamp = "NaN"
        self._timer = Timer(-1)
        self._timer.init(
            period=MS_IN_MINUTE, mode=Timer.PERIODIC, callback=self.timer_handler
        )
        self._pulses_per_minute = 0
        self.kw_history = []
        self.joules = 0
示例#11
0
def webReplOff():
    import btree
    f = open("mydb", "w+b")
    db = btree.open(f)
    db[b"wr"] = b"0"
    db.flush()
    machine.reset()
示例#12
0
    def _initialize(self):
        try:
            self._stream = open("/".join((self.path, self.name)), "r+b")
        except OSError:
            self._stream = open("/".join((self.path, self.name)), "w+b")

        self._db = btree.open(self._stream)
示例#13
0
    def put(cfg_name, cfg_value):
        """
        put: put config setting into btree ui.cfg file

        Args:
            cfg_name ([str, bytes, bytearray]): name of setting to store
            cfg_value ([str, bytes, bytearray]): value of setting to store
        """
        if isinstance(cfg_name, str):
            name = cfg_name.encode()
        else:
            name = cfg_name

        if isinstance(cfg_value, str):
            value = cfg_value.encode()
        else:
            value = cfg_value

        try:
            cfg_file = open("ui.cfg", "r+b")
        except OSError:
            cfg_file = open("ui.cfg", "w+b")

        cfg_db = btree.open(cfg_file)
        cfg_db[name] = value
        cfg_db.close()
        cfg_file.close()
示例#14
0
def network_db():
    try:
        f = open("network.db", "r+b")
    except OSError:
        f = open("network.db", "w+b")

        # Now open a database itself
        db = btree.open(f)

        # The keys you add will be sorted internally in the database
        db[b"blam"] = ujson.dumps({
            "strength": -84,
            "pwd": "",
            "connected": True
        })
        db[b"Telstra2EC8"] = ujson.dumps({
            "strength": -78,
            "pwd": "",
            "connected": False
        })
        db[b"Hal-North"] = ujson.dumps({
            "strength": -84,
            "pwd": "",
            "connected": False
        })
        db[b"myHiddenNetwork"] = ujson.dumps({
            "strength": -91,
            "pwd": "shhhh!",
            "connected": False
        })

        db.close()
        f.close()
def scan_networks():
    sta_if = network.WLAN(network.STA_IF)
    sta_if.active(True)
    nets = sta_if.scan()
    # Note: Networks may appear multiple times. raw list is reduced to single instance of each network
    networks = {}
    for n in nets:
        ssid = n[0].decode("utf-8")
        if ssid not in networks:
            networks[ssid] = {
                "ssid": ssid,
                "str":n[3],
                "pwd":''
            }
        elif n[3] > networks[ssid]['str']:
            networks[n[0].decode("utf-8")]['str'] = n[3]
    # Incorporate saved passwords
    f = open("datastore/network.db", "r+b")
    db = btree.open(f)
    for key in db:
        if key.decode("utf-8") in networks:
            networks[key.decode("utf-8")]['pwd'] = db[key].decode("utf-8")
    db.close()
    f.close()
    networks = list(networks.values())
    # TODO: include 'connected' in sort order)
    networks.sort(key=lambda n:(n['pwd'], n['str']), reverse=True)
    return networks
示例#16
0
def get(key):
    f = open(file, 'r+b')
    db = btree.open(f)
    try:
        return db[key].decode('utf-8')
    except KeyError:
        return None
    db.close()
示例#17
0
 def __init__(self):
     try:
         self.fichero = open(
             "juegodb",
             "r+b")  # si hay un fichero de base de datos existente lo abre
     except OSError:
         self.fichero = open("juegodb", "w+b")  # sino crea uno nuevo
     self.db = btree.open(self.fichero)
示例#18
0
 def __init__(self, dbfile="salatimes.db"):
     try:
         self.f = open(dbfile, "r+b")
     except OSError:
         print("Salat db '", dbfile,
               "' seems not to exist ? creating a new one")
         self.f = open(dbfile, "w+b")
     self.db = btree.open(self.f)
示例#19
0
文件: db.py 项目: hmcguire1/TetherDB
    def _db_init(self):
        '''
        This function intitializes the database file. If the specified
        database file does not exist it creates it. If file is not located
        in root directory, parent directories must already exist.
        '''
        try:
            if (self.db_filepath.split('/')[-1] not in listdir('/'.join(
                [file for file in self.db_filepath.split('/')[0:-1]]))):
                return btree.open(load_db(self.db_filepath, write_mode='w+b'),
                                  pagesize=1024)
            return btree.open(load_db(self.db_filepath, write_mode='r+b'),
                              pagesize=1024)

        except OSError:
            print('Please create db_filepath parent directories')
            return None
 def _db_action(self, action):
     with self._access(self._filename) as f:
         db = btree.open(f)  # Btree doesn't support `with`.
         try:
             return action(db)
         finally:
             # Note that closing the DB does a flush.
             db.close()
示例#21
0
 def open(self):
     if self.is_open():
         return
     try:
         self._file = open(DBNAME, 'r+b')
     except OSError:
         self._file = open(DBNAME, 'w+b')
     self._db = btree.open(self._file)
     self._db_exists = True
示例#22
0
def dumpfile():
    f = open(file, 'r+b')
    db = btree.open(f)
    with open('key_store.txt', 'wt') as text:
        for key in db:
            pair = "{}:{}\n".format(key.decode('utf-8'),
                                    db[key].decode('utf-8'))
            text.write(pair)
    db.close()
    print('key_store.txt created')
示例#23
0
    def __init__(self, name="octopus"):
        self.file = name + ".db"
        # simple test: root > todo sub directory

        try:
            f = open(self.file, "r+b")
        except OSError:
            f = open(self.file, "w+b")

        self.data = btree.open(f)
示例#24
0
def write_to_db(dbname, key, data):
    try:
        fp = open(dbname, 'r+b')
    except OSError:
        fp = open(dbname, 'w+b')

    db = btree.open(fp)
    db[key] = data
    db.flush()
    db.close()
    fp.close()
    def reopen(self):
        if self.db != None:
            self.save()
            self.close()

        try:
            self.f = open(self.dbfile, "r+b")
        except OSError:
            print("Salat db '", self.dbfile,
                  "' seems not to exist ? creating a new one")
            self.f = open(self.dbfile, "w+b")
        self.db = btree.open(self.f)
示例#26
0
def network_db():
    try:
        f = open("datastore/network.db", "r+b")
    except OSError:
        f = open("datastore/network.db", "w+b")
        db = btree.open(f)
        db[b"network1"] = b"didit"
        db[b"network2"] = b""
        db[b"network3"] = b""
        db[b"HiddenNetwork"] = b"shhhh!"
        db.close()
        f.close()
示例#27
0
def write(key, value):
    try:
        f = open('system.db', 'r+b')
    except OSError:
        f = open('system.db', 'w+b')
    db = btree.open(f)
    db[key] = value
    db.flush()
    assert key in db
    assert db[key] == value
    db.close()
    f.close()
示例#28
0
def index(req, resp):
    gc.collect()
    f = open("datastore/logger.db", "r+b")
    db = btree.open(f)
    logger = db['service'].decode('utf-8')
    db.close()
    f.close()
    # TODO: Load dynamic content from datastore
    yield from picoweb.start_response(resp)
    yield from app.render_template(
        resp, "index.html",
        ("[connected ssid here]", logger, "[version no. here]"))
示例#29
0
def init():
    try:
        f = open(file, 'r+b')
    except OSError:
        f = open(file, 'w+b')
    db = btree.open(f, pagesize=512)
    db[b'ssid_name'] = input('Enter WiFi SSID - ')
    db[b'ssid_pass'] = input('Enter WiFi password - ')
    db[b'ntp_host'] = 'time.cloudflare.com'
    db.flush()
    #print("%s, %s, and %s added to %s file" % (db[b'ssid_name'].decode('utf-8'), db[b'ssid_pass'].decode('utf-8'), db[b'mqtt_broker'].decode('utf-8'), file))
    db.close()
示例#30
0
def dump():
    try:
        f = open("iotdb.db", "r+b")
    except OSError:
        print("Failed to open db.")
        sys.exit(0)

    db = btree.open(f)

    for key in db:
        print("Key  : ", key)
        print("Value: ", db[key])
示例#31
0
try:
    import btree
except ImportError:
    print("SKIP")
    import sys
    sys.exit()

db = btree.open(None)
db[b"foo3"] = b"bar3"
db[b"foo1"] = b"bar1"
db[b"foo2"] = b"bar2"
db[b"bar1"] = b"foo1"

print(db[b"foo2"])
try:
    print(db[b"foo"])
except KeyError:
    print("KeyError")
print(db.get(b"foo"))
print(db.get(b"foo", b"dflt"))

del db[b"foo2"]
try:
    del db[b"foo"]
except KeyError:
    print("KeyError")

for k, v in db.items():
    print((k, v))

print("---")
示例#32
0
try:
    import btree
    import uio
except ImportError:
    print("SKIP")
    import sys
    sys.exit()

#f = open("_test.db", "w+b")
f = uio.BytesIO()
db = btree.open(f)

db[b"foo3"] = b"bar3"
db[b"foo1"] = b"bar1"
db[b"foo2"] = b"bar2"
db[b"bar1"] = b"foo1"

print(db[b"foo2"])
try:
    print(db[b"foo"])
except KeyError:
    print("KeyError")
print(db.get(b"foo"))
print(db.get(b"foo", b"dflt"))

del db[b"foo2"]
try:
    del db[b"foo"]
except KeyError:
    print("KeyError")
示例#33
0
try:
    import btree
    import uio
    import uerrno
except ImportError:
    print("SKIP")
    import sys
    sys.exit()

#f = open("_test.db", "w+b")
f = uio.BytesIO()
db = btree.open(f, pagesize=512)

db[b"foo3"] = b"bar3"
db[b"foo1"] = b"bar1"
db[b"foo2"] = b"bar2"
db[b"bar1"] = b"foo1"

dbstr = str(db)
print(dbstr[:7], dbstr[-1:])

print(db[b"foo2"])
try:
    print(db[b"foo"])
except KeyError:
    print("KeyError")
print(db.get(b"foo"))
print(db.get(b"foo", b"dflt"))

del db[b"foo2"]
try: