def find_item(self, itemid): """See the documentation in folder.Folder""" sess = self.get_db().session() result = sess.readData(URL(path=self.item_path(itemid))) if not result: return None data, _ignore_etag = result try: itemid = CDContact.normalize_cdid(itemid) return CDContact(self, vco=vobject.readOne(data), itemid=itemid) except Exception, e: logging.error('Error (%s) parsing vCard object for %s', e, itemid) raise
def find_item (self, itemid): """See the documentation in folder.Folder""" sess = self.get_db().session() result = sess.readData(URL(path=self.item_path(itemid))) if not result: return None data, _ignore_etag = result try: itemid = CDContact.normalize_cdid(itemid) return CDContact(self, vco=vobject.readOne(data), itemid=itemid) except Exception, e: logging.error('Error (%s) parsing vCard object for %s', e, itemid) raise
def find_items(self, itemids): """See the documentation in folder.Folder""" sess = self.get_db().session() ids = [self.item_path(x) for x in itemids] results = sess.multiGet(URL(path=self.get_itemid()), ids, (davxml.getetag, carddavxml.address_data)) ret = [] for key, item in results.iteritems(): etag = item.getNodeProperties()[davxml.getetag] vcf = item.getNodeProperties()[carddavxml.address_data] try: key = CDContact.normalize_cdid(key) cd = CDContact(self, vco=vobject.readOne(vcf.text), itemid=key) except Exception, e: logging.error('Error (%s) parsing vCard object for %s', e, key) raise cd.set_etag(etag.text) ret.append(cd)
def find_items (self, itemids): """See the documentation in folder.Folder""" sess = self.get_db().session() ids = [self.item_path(x) for x in itemids] results = sess.multiGet(URL(path=self.get_itemid()), ids, (davxml.getetag, carddavxml.address_data)) ret = [] for key, item in results.iteritems(): etag = item.getNodeProperties()[davxml.getetag] vcf = item.getNodeProperties()[carddavxml.address_data] try: key = CDContact.normalize_cdid(key) cd = CDContact(self, vco=vobject.readOne(vcf.text), itemid=key) except Exception, e: logging.error('Error (%s) parsing vCard object for %s', e, key) raise cd.set_etag(etag.text) ret.append(cd)