Refs #447
authorpapagian <papagian@gmail.com>
Mon, 2 May 2011 14:22:11 +0000 (17:22 +0300)
committerpapagian <papagian@gmail.com>
Mon, 2 May 2011 14:22:11 +0000 (17:22 +0300)
pithos/backends/dummy.py

index 46cbbb9..c64e86b 100644 (file)
@@ -133,18 +133,19 @@ class BackEnd:
             limit = 10000\r
         return objects[start:start + limit]\r
     \r
-    def get_object_meta(self, account, container, name, keys='*'):\r
+    def get_object_meta(self, account, container, name, keys=None):\r
         dir = os.path.join(self.basepath, account, container)\r
         if not os.path.exists(dir):\r
             raise NameError('Container does not exist')\r
-        else:\r
-            os.chdir(dir)\r
-        location = self.__get_object_linkinfo('/'.join([account, container, name]))\r
-        location = '.'.join([location, 'meta'])\r
-        f = open(location, 'r')\r
-        data = json.load(f)\r
-        f.close()\r
-        return data\r
+        link = self.__get_object_linkinfo(os.path.join(account, container, name))\r
+        c = self.con.execute('select name, value from metadata where object_id = ''?''', (link,))\r
+        l = c.fetchall()\r
+        if keys:\r
+            l = [elem for elem in l if elem[0] in keys]\r
+        meta = {}\r
+        for e in l:\r
+            meta[e[0]] = e[1]\r
+        return meta\r
     \r
     def get_object_data(self, account, container, name, offset=0, length=-1):\r
         dir = os.path.join(self.basepath, account, container)\r
@@ -214,17 +215,11 @@ class BackEnd:
         self.__delete_data(location, account, container)\r
         return\r
     \r
-    def __store_metadata(self, location, account, container, meta):\r
-        dir = os.path.join(self.basepath, account, container)\r
-        if not os.path.exists(dir):\r
-            raise NameError('Container does not exist')\r
-        else:\r
-            os.chdir(dir)\r
-        location = '.'.join([location, 'meta'])\r
-        f = open(location, 'w')\r
-        data = json.dumps(meta)\r
-        f.write(data)\r
-        f.close()\r
+    def __store_metadata(self, ref, account, container, meta):\r
+        for k in meta.keys():\r
+            self.con.execute('insert or replace into metadata(object_id, name, value) values (?, ?, ?)', (ref, k, meta[k],))\r
+        self.con.commit()\r
+        return\r
     \r
     def __store_data(self, location, account, container, data):\r
         dir = os.path.join(self.basepath, account, container)\r