def set_range(self, cursor, start, newstart, newend, sip, owner, date_changed, sig): ns = int(newstart) ne = int(newend) self.log.debug('set full %s => %s %s',start,newstart,newend) date_changed = utils.parse_datetime_iso(date_changed) assert ns <= ne assert isinstance(date_changed, datetime) cursor.execute('''update numbex_ranges set start = ?, end = ?, _s = ?, _e = ?, sip = ?, owner = ?, date_changed = ?, signature = ? where start = ?''', [newstart, newend, ns, ne, sip, owner, date_changed, sig, start]) return True
def insert_range(self, cursor, start, end, sip, owner, date_changed, sig, safe=True): ns = int(start) ne = int(end) date_changed = utils.parse_datetime_iso(date_changed) ovl = self.overlapping_ranges(start, end) if safe and ovl: raise ValueError("cannot insert range %s-%s: overlaps with %s"% (start, end, str(ovl))) self.log.debug('insert %s %s',start,end) assert ns <= ne assert isinstance(date_changed, datetime) cursor.execute('''insert into numbex_ranges (start, end, _s, _e, sip, owner, date_changed, signature) values (?, ?, ?, ?, ?, ?, ?, ?)''', [start, end, ns, ne, sip, owner, date_changed, sig]) return True
def parse_record(self, txtrec): '''returned data format: [rangestart, rangeend, sip, owner, date_modified, rsa_signature]''' d = {} #assert '\0' not in txtrec # dziki bug w git 1.6?!? txtrec = txtrec.replace('\0', '') for line in txtrec.splitlines(): pre, post = line.split(':', 1) pre = pre.lower().strip() d[pre] = post.strip() try: ret = [d[x] for x in ('range-start', 'range-end', 'sip-address', 'owner', 'date-modified', 'signature')] ret[4] = utils.parse_datetime_iso(ret[4]) return ret except KeyError: raise NumbexDBError('key not found: '+x)