+ items_dict = {}
+ execute = self.conn.execute
+ fields = dict(execute("SELECT id, name FROM fields WHERE name IN (%s)" \
+ % ','.join('%r' % (field,) for field in fields)).fetchall())
+ """
+ query = "SELECT id, field_id, value FROM data \
+ left join relation on relation.data_id=data.id \
+ where relation.struct_id=? and field_id in (%s)"
+ """
+ query = "SELECT id, field_id, value FROM data \
+ WHERE id IN (SELECT data_id FROM relation WHERE struct_id=?) \
+ AND field_id IN (%s)"
+ data = execute(query % ','.join('%r' % f for f in fields.keys()), \
+ (parent,)).fetchall()
+ for data_id, field_id, value in data:
+ if not items_dict.has_key(data_id):
+ items_dict[data_id] = {}
+ items_dict[data_id][fields[int(field_id)]] = value
+ return items_dict
+
+ def get_files_by_pattern(self, fields, key='cn', pattern='', \
+ search_from_start=False):
+ """Returns list of all files from DATA table."""
+
+ items_dict = {}
+ if key not in fields:
+ fields.append(str(key))
+ execute = self.conn.execute
+ fields = dict(execute("SELECT id, name FROM fields WHERE name IN (%s)" \
+ % ','.join('%r' % (field,) for field in fields)).fetchall())
+ key_id = 1
+ for k, val in fields.items():
+ if val == key:
+ key_id = k
+ break
+ if search_from_start:
+ s = '%s%%' % pattern.capitalize()