def main (argv=None): print 'Command line: ', sys.argv print confn_src if os.path.exists(user_dir): logging.debug('Clearing user directory: %s', user_dir) shutil.rmtree(user_dir) else: logging.debug('Creating user directory: %s', user_dir) os.makedirs(user_dir) shutil.copyfile(state_src, state_dest) shutil.copyfile(confn_src, confn_dest) global config config = Config(asynk_base_dir=asynk_base_dir, user_dir=user_dir) data = None with open(sys.argv[1], "r") as f: data = f.read() print print data vco = vobject.readOne(data) print vco print vco.prettyPrint() con = CDContact(None, vco=vobject.readOne(data), debug_vcf=True) print unicode(con) print "Display Name: ", con.get_disp_name() print "VCO: ", con.init_vco_from_props().serialize()
def main(argv=None): print 'Command line: ', sys.argv print confn_src if os.path.exists(user_dir): logging.debug('Clearing user directory: %s', user_dir) shutil.rmtree(user_dir) else: logging.debug('Creating user directory: %s', user_dir) os.makedirs(user_dir) shutil.copyfile(state_src, state_dest) shutil.copyfile(confn_src, confn_dest) global config config = Config(asynk_base_dir=asynk_base_dir, user_dir=user_dir) data = None with open(sys.argv[1], "r") as f: data = f.read() print print data vco = vobject.readOne(data) print vco print vco.prettyPrint() con = CDContact(None, vco=vobject.readOne(data), debug_vcf=True) print unicode(con) print "Display Name: ", con.get_disp_name() print "VCO: ", con.init_vco_from_props().serialize()
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 batch_create(self, src_sl, src_dbid, items): """See the documentation in folder.Folder""" my_dbid = self.get_dbid() c = self.get_config() pname = src_sl.get_pname() src_sync_tag = c.make_sync_label(src_sl.get_pname(), src_dbid) dst_sync_tag = c.make_sync_label(src_sl.get_pname(), my_dbid) success = True for item in items: ## CardDAV does not support a multiput operation. So we will have ## to PUT the damn items one at a time. What kind of a standard is ## this, anyway? con_itemid = item.get_itemid_from_synctags(pname, 'cd') cd = CDContact(self, con=item, con_itemid=con_itemid) cd.update_sync_tags(src_sync_tag, item.get_itemid(), save=True) self.add_contact(cd) item.update_sync_tags(dst_sync_tag, cd.get_itemid()) logging.info('Successfully created CardDAV entry for %30s (%s)', cd.get_disp_name(), cd.get_itemid()) return True
def find_items (self, itemids): """See the documentation in folder.Folder""" sess = self.get_db().session() results = sess.multiGet(URL(path=self.get_itemid()), itemids, (davxml.getetag, carddavxml.address_data)) ret = [] for key, item in results.iteritems(): etag = item.getNodeProperties()[davxml.getetag] vcf = item.getNodeProperties()[carddavxml.address_data] vco = vobject.readOne(vcf.text) cd = CDContact(self, vco=vco, itemid=key) cd.set_etag(etag.text) ret.append(cd) return ret
def find_items(self, itemids): """See the documentation in folder.Folder""" sess = self.get_db().session() results = sess.multiGet(URL(path=self.get_itemid()), itemids, (davxml.getetag, carddavxml.address_data)) ret = [] for key, item in results.iteritems(): etag = item.getNodeProperties()[davxml.getetag] vcf = item.getNodeProperties()[carddavxml.address_data] vco = vobject.readOne(vcf.text) cd = CDContact(self, vco=vco, itemid=key) cd.set_etag(etag.text) ret.append(cd) return ret
def find_items(self, itemids): """See the documentation in folder.Folder""" sess = self.get_db().session() results = sess.multiGet(URL(path=self.get_itemid()), itemids, (davxml.getetag, carddavxml.address_data)) ret = [] for key, item in results.iteritems(): etag = item.getNodeProperties()[davxml.getetag] vcf = item.getNodeProperties()[carddavxml.address_data] try: 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() results = sess.multiGet(URL(path=self.get_itemid()), itemids, (davxml.getetag, carddavxml.address_data)) ret = [] for key, item in results.iteritems(): etag = item.getNodeProperties()[davxml.getetag] vcf = item.getNodeProperties()[carddavxml.address_data] try: 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_item(self, itemid): """See the documentation in folder.Folder""" sess = self.get_db().session() result = sess.readData(URL(path=itemid)) if not result: return None data, _ignore_etag = result cd = CDContact(self, vco=vobject.readOne(data), itemid=itemid) return cd
def batch_create (self, src_sl, src_dbid, items): """See the documentation in folder.Folder""" my_dbid = self.get_dbid() c = self.get_config() src_sync_tag = c.make_sync_label(src_sl.get_pname(), src_dbid) dst_sync_tag = c.make_sync_label(src_sl.get_pname(), my_dbid) success = True for item in items: ## CardDAV does not support a multiput operation. So we will have ## to PUT the damn items one at a time. What kind of a standard is ## this, anyway? cd = CDContact(self, con=item) cd.update_sync_tags(src_sync_tag, item.get_itemid(), save=True) self.add_contact(cd) item.update_sync_tags(dst_sync_tag, cd.get_itemid()) logging.info('Successfully created CardDAV entry for %30s (%s)', cd.get_disp_name(), cd.get_itemid()) return True
def batch_update (self, src_sl, src_dbid, items): """See the documentation in folder.Folder""" my_dbid = self.get_dbid() c = self.get_config() pname = src_sl.get_pname() src_sync_tag = c.make_sync_label(pname, src_dbid) dst_sync_tag = c.make_sync_label(pname, my_dbid) cons = self.get_contacts() ## FIXME: We will try to overwrite using the etags we had fetched just ## a fe moments back. It could still fail; and the error handling ## needs to be robust ... but it is not success = True for item in items: tag, href = item.get_sync_tags(dst_sync_tag)[0] ## FIXME: Some times we might find it expedient to force a ## "update" without the contact being present int he remote. If ## that happens the next line will throw an KeyError. You are ## warned. con_old = cons[href] con_itemid = item.get_itemid_from_synctags(pname, 'cd') con_new = CDContact(self, con=item, con_itemid=con_itemid) con_new.set_uid(con_old.get_uid()) con_new.update_sync_tags(src_sync_tag, item.get_itemid()) try: con_new.save(etag=con_old.get_etag()) logging.info('Successfully updated CardDAV entry for %30s (%s)', con_new.get_disp_name(), con_new.get_itemid()) except HTTPError, e: logging.error('Error (%s). Could not update CardDAV entry %s', e, con_new.get_disp_name()) success = False
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 create_contact (cd): c = CDContact(cd.get_def_folder()) c.set_firstname('Chalini') c.set_lastname('Tarantula') c.set_prefix('Dr.') c.set_suffix('Jr.') c.set_gender('Female') c.add_email_home('*****@*****.**') c.save() print c
def batch_update(self, src_sl, src_dbid, items): """See the documentation in folder.Folder""" my_dbid = self.get_dbid() c = self.get_config() pname = src_sl.get_pname() src_sync_tag = c.make_sync_label(pname, src_dbid) dst_sync_tag = c.make_sync_label(pname, my_dbid) cons = self.get_contacts() ## FIXME: We will try to overwrite using the etags we had fetched just ## a fe moments back. It could still fail; and the error handling ## needs to be robust ... but it is not success = True for item in items: tag, href = item.get_sync_tags(dst_sync_tag)[0] ## FIXME: Some times we might find it expedient to force a ## "update" without the contact being present int he remote. If ## that happens the next line will throw an KeyError. You are ## warned. con_old = cons[href] con_itemid = item.get_itemid_from_synctags(pname, 'cd') con_new = CDContact(self, con=item, con_itemid=con_itemid) con_new.set_uid(con_old.get_uid()) con_new.update_sync_tags(src_sync_tag, item.get_itemid()) try: con_new.save(etag=con_old.get_etag()) logging.info( 'Successfully updated CardDAV entry for %30s (%s)', con_new.get_disp_name(), con_new.get_itemid()) except HTTPError, e: logging.error('Error (%s). Could not update CardDAV entry %s', e, con_new.get_disp_name()) success = False
def create_contact (cd): c = CDContact(cd.get_def_folder()) c.set_firstname('Nalini') c.set_lastname('Bharatula') c.set_prefix('Dr.') c.set_suffix('Jr.') c.set_gender('Female') c.add_email_home('*****@*****.**') c.save() print c
def create_contact(cd): c = CDContact(cd.get_def_folder()) c.set_firstname('Chalini') c.set_lastname('Tarantula') c.set_prefix('Dr.') c.set_suffix('Jr.') c.set_gender('Female') c.add_email_home('*****@*****.**') c.save() print c