def load(self, id): """ Takes a SHA-1 id """ cursor = self.db.cursor() sql = """SELECT uri, location, status, created, updated FROM urldammit_uris WHERE id = %s""" cursor.execute(sql, (id,)) row = cursor.fetchone() if not row: return None data = {} data["uri"] = None if isinstance(row[0], unicode): data["uri"] = row[0].encode("utf8") data["location"] = None if isinstance(row[1], unicode): data["location"] = row[1].encode("utf8") data["status"] = int(row[2]) data["created"] = row[3] data["updated"] = row[4] data["tags"] = None sql = "SELECT tag FROM urldammit_tags WHERE id = %s" cursor.execute(sql, (id,)) rows = cursor.fetchall() for row in rows: if data["tags"] == None: data["tags"] = [] data["tags"].append(row[0].encode("utf8")) data["pairs"] = None sql = "SELECT pair_key, pair_value FROM urldammit_pairs WHERE id = %s" cursor.execute(sql, (id,)) rows = cursor.fetchall() for row in rows: if data["pairs"] == None: data["pairs"] = dict() data["pairs"][row[0].encode("utf8")] = row[1].encode("utf8") return URI.load(data)
def load(self, id): record = self.db.get(id, None) if not record: return None data = {} data['meta'] = {} for k, v in record.items(): k = k.encode('utf-8') if k == 'tags': try: data[k] = [tag.encode('utf-8') for tag in v] except: data[k] = None elif k == 'pairs': data[k] = contract_dict(v) elif k == '_rev': data['meta']['_rev'] = v elif isinstance(v, unicode): data[k] = v.encode('utf-8') else: data[k] = v return URI.load(data)