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
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