Esempio n. 1
0
    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)
Esempio n. 2
0
    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)