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