From: <luc...@us...> - 2003-07-13 09:00:10
|
Update of /cvsroot/zxsync/zXSync/plugins/zaurus In directory sc8-pr-cvs1:/tmp/cvs-serv28944 Modified Files: zauruscontacts.py Log Message: - Removed UID field from vCards (the id is still available via getId(), but not as a field). This avoids a lot of trouble when the ids of a plugin are not worth much (as is currently the case with iPod and Zaurus contacts ;-)) - Added check so no field is written more than once Index: zauruscontacts.py =================================================================== RCS file: /cvsroot/zxsync/zXSync/plugins/zaurus/zauruscontacts.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** zauruscontacts.py 23 Jun 2003 21:27:40 -0000 1.3 --- zauruscontacts.py 13 Jul 2003 09:00:03 -0000 1.4 *************** *** 86,90 **** supportedFields = \ [X_ZAURUS_BIRTHDAY, X_ZAURUS_CATEGORIES, X_ZAURUS_UNKNOWN, ! vcard.UID, vcard.N, vcard.FN, vcard.NICKNAME, vcard.BDAY, vcard.ADR, vcard.TEL, vcard.EMAIL, vcard.NOTE, vcard.ORG, vcard.TITLE, vcard.URL, vcard.X_URL_HOME, vcard.X_URL_WORK --- 86,90 ---- supportedFields = \ [X_ZAURUS_BIRTHDAY, X_ZAURUS_CATEGORIES, X_ZAURUS_UNKNOWN, ! vcard.N, vcard.FN, vcard.NICKNAME, vcard.BDAY, vcard.ADR, vcard.TEL, vcard.EMAIL, vcard.NOTE, vcard.ORG, vcard.TITLE, vcard.URL, vcard.X_URL_HOME, vcard.X_URL_WORK *************** *** 147,160 **** - def addField(xmlString, fieldName, value): - """ - Adds a field to an XML string (as attribute value). - If the value is None or "", nothing is added. - """ - if value == None or value == "": - return xmlString - return xmlString + fieldName + '="' + zaurusutils.zaurusEscape(value) + '" ' - - class ZaurusContactsError(PluginError): """ --- 147,150 ---- *************** *** 352,355 **** --- 342,355 ---- + def addField(self, xmlString, fieldName, value): + """ + Adds a field to an XML string (as attribute value). + If the value is None or "", nothing is added. + """ + if value == None or value == "" or fieldName in self.writtenFields: + return xmlString + return xmlString + fieldName + '="' + zaurusutils.zaurusEscape(value) + '" ' + + def writeAllEntries(self, entries): """ *************** *** 364,370 **** # break entryXML = '<Contact rid="' + str(currentRid) + '" rinfo="1" ' # UID field ! entryXML = addField(entryXML, UID, entry.getUID().getValue()) # N field --- 364,371 ---- # break entryXML = '<Contact rid="' + str(currentRid) + '" rinfo="1" ' + self.writtenFields = [] # UID field ! entryXML = self.addField(entryXML, UID, entry.getId()) # N field *************** *** 372,385 **** if nameField != None: nameValue = nameField.getValue() ! entryXML = addField(entryXML, LAST_NAME, nameValue[0][0]) ! entryXML = addField(entryXML, FIRST_NAME, nameValue[1][0]) ! entryXML = addField(entryXML, MIDDLE_NAME, nameValue[2][0]) ! entryXML = addField(entryXML, TITLE, nameValue[3][0]) ! entryXML = addField(entryXML, SUFFIX, nameValue[4][0]) # FN field formattedNameField = entry.getFormattedName() if formattedNameField != None: ! entryXML = addField(entryXML, FILE_AS, formattedNameField.getValue()) --- 373,386 ---- if nameField != None: nameValue = nameField.getValue() ! entryXML = self.addField(entryXML, LAST_NAME, nameValue[0][0]) ! entryXML = self.addField(entryXML, FIRST_NAME, nameValue[1][0]) ! entryXML = self.addField(entryXML, MIDDLE_NAME, nameValue[2][0]) ! entryXML = self.addField(entryXML, TITLE, nameValue[3][0]) ! entryXML = self.addField(entryXML, SUFFIX, nameValue[4][0]) # FN field formattedNameField = entry.getFormattedName() if formattedNameField != None: ! entryXML = self.addField(entryXML, FILE_AS, formattedNameField.getValue()) *************** *** 387,391 **** nicknameField = entry.getNickname() if nicknameField != None: ! entryXML = addField(entryXML, NICKNAME, nicknameField.getValue()[0]) --- 388,392 ---- nicknameField = entry.getNickname() if nicknameField != None: ! entryXML = self.addField(entryXML, NICKNAME, nicknameField.getValue()[0]) *************** *** 393,397 **** birthdayField = entry.getChildWithId(X_ZAURUS_BIRTHDAY) if birthdayField != None: ! entryXML = addField(entryXML, BIRTHDAY, birthdayField.getValue()) else: birthdayField = entry.getBirthday() --- 394,398 ---- birthdayField = entry.getChildWithId(X_ZAURUS_BIRTHDAY) if birthdayField != None: ! entryXML = self.addField(entryXML, BIRTHDAY, birthdayField.getValue()) else: birthdayField = entry.getBirthday() *************** *** 401,405 **** birthdayValue = time.strftime(DATE_FORMATS[0], birthdayTuple) # assume that gmtime should be stored on the Z ! entryXML = addField(entryXML, BIRTHDAY, birthdayValue) # ADR fields --- 402,406 ---- birthdayValue = time.strftime(DATE_FORMATS[0], birthdayTuple) # assume that gmtime should be stored on the Z ! entryXML = self.addField(entryXML, BIRTHDAY, birthdayValue) # ADR fields *************** *** 409,423 **** addressTypes = addressField.getTypes() if zxsync.vcard.WORK in addressTypes: ! entryXML = addField(entryXML, BUSINESS_STREET, addressValue[2][0]) ! entryXML = addField(entryXML, BUSINESS_CITY, addressValue[3][0]) ! entryXML = addField(entryXML, BUSINESS_STATE, addressValue[4][0]) ! entryXML = addField(entryXML, BUSINESS_ZIP, addressValue[5][0]) ! entryXML = addField(entryXML, BUSINESS_COUNTRY, addressValue[6][0]) if zxsync.vcard.HOME in addressTypes: ! entryXML = addField(entryXML, HOME_STREET, addressValue[2][0]) ! entryXML = addField(entryXML, HOME_CITY, addressValue[3][0]) ! entryXML = addField(entryXML, HOME_STATE, addressValue[4][0]) ! entryXML = addField(entryXML, HOME_ZIP, addressValue[5][0]) ! entryXML = addField(entryXML, HOME_COUNTRY, addressValue[6][0]) # TEL fields --- 410,424 ---- addressTypes = addressField.getTypes() if zxsync.vcard.WORK in addressTypes: ! entryXML = self.addField(entryXML, BUSINESS_STREET, addressValue[2][0]) ! entryXML = self.addField(entryXML, BUSINESS_CITY, addressValue[3][0]) ! entryXML = self.addField(entryXML, BUSINESS_STATE, addressValue[4][0]) ! entryXML = self.addField(entryXML, BUSINESS_ZIP, addressValue[5][0]) ! entryXML = self.addField(entryXML, BUSINESS_COUNTRY, addressValue[6][0]) if zxsync.vcard.HOME in addressTypes: ! entryXML = self.addField(entryXML, HOME_STREET, addressValue[2][0]) ! entryXML = self.addField(entryXML, HOME_CITY, addressValue[3][0]) ! entryXML = self.addField(entryXML, HOME_STATE, addressValue[4][0]) ! entryXML = self.addField(entryXML, HOME_ZIP, addressValue[5][0]) ! entryXML = self.addField(entryXML, HOME_COUNTRY, addressValue[6][0]) # TEL fields *************** *** 429,452 **** phoneAdded = 0 if zxsync.vcard.FAX in phoneTypes: ! entryXML = addField(entryXML, HOME_FAX, phoneValue) phoneAdded = 1 if zxsync.vcard.CELL in phoneTypes: ! entryXML = addField(entryXML, HOME_MOBILE, phoneValue) phoneAdded = 1 if (not (zxsync.vcard.PAGER) in phoneTypes) and (not phoneAdded): ! entryXML = addField(entryXML, HOME_PHONE, phoneValue) if zxsync.vcard.WORK in phoneTypes: phoneAdded = 0 if zxsync.vcard.FAX in phoneTypes: ! entryXML = addField(entryXML, BUSINESS_FAX, phoneValue) phoneAdded = 1 if zxsync.vcard.CELL in phoneTypes: ! entryXML = addField(entryXML, BUSINESS_MOBILE, phoneValue) phoneAdded = 1 if zxsync.vcard.PAGER in phoneTypes: ! entryXML = addField(entryXML, BUSINESS_PAGER, phoneValue) phoneAdded = 1 if not phoneAdded: ! entryXML = addField(entryXML, BUSINESS_PHONE, phoneValue) # EMAIL fields --- 430,453 ---- phoneAdded = 0 if zxsync.vcard.FAX in phoneTypes: ! entryXML = self.addField(entryXML, HOME_FAX, phoneValue) phoneAdded = 1 if zxsync.vcard.CELL in phoneTypes: ! entryXML = self.addField(entryXML, HOME_MOBILE, phoneValue) phoneAdded = 1 if (not (zxsync.vcard.PAGER) in phoneTypes) and (not phoneAdded): ! entryXML = self.addField(entryXML, HOME_PHONE, phoneValue) if zxsync.vcard.WORK in phoneTypes: phoneAdded = 0 if zxsync.vcard.FAX in phoneTypes: ! entryXML = self.addField(entryXML, BUSINESS_FAX, phoneValue) phoneAdded = 1 if zxsync.vcard.CELL in phoneTypes: ! entryXML = self.addField(entryXML, BUSINESS_MOBILE, phoneValue) phoneAdded = 1 if zxsync.vcard.PAGER in phoneTypes: ! entryXML = self.addField(entryXML, BUSINESS_PAGER, phoneValue) phoneAdded = 1 if not phoneAdded: ! entryXML = self.addField(entryXML, BUSINESS_PHONE, phoneValue) # EMAIL fields *************** *** 461,482 **** emails += emailValue if zxsync.vcard.PREF in emailTypes and not defaultAdded: ! entryXML = addField(entryXML, DEFAULT_EMAIL, emailValue) defaultAdded = 1 ! entryXML = addField(entryXML, EMAILS, emails) # NOTE fields noteFields = entry.getNotes() if len(noteFields) > 0: ! entryXML = addField(entryXML, NOTES, noteFields[0].getValue()) # ORG fields orgFields = entry.getOrganizations() if len(orgFields) > 0: ! entryXML = addField(entryXML, COMPANY, orgFields[0].getValue()[0]) # TITLE fields titleFields = entry.getTitles() if len(titleFields) > 0: ! entryXML = addField(entryXML, JOB_TITLE, titleFields[0].getValue()) # URL fields --- 462,483 ---- emails += emailValue if zxsync.vcard.PREF in emailTypes and not defaultAdded: ! entryXML = self.addField(entryXML, DEFAULT_EMAIL, emailValue) defaultAdded = 1 ! entryXML = self.addField(entryXML, EMAILS, emails) # NOTE fields noteFields = entry.getNotes() if len(noteFields) > 0: ! entryXML = self.addField(entryXML, NOTES, noteFields[0].getValue()) # ORG fields orgFields = entry.getOrganizations() if len(orgFields) > 0: ! entryXML = self.addField(entryXML, COMPANY, orgFields[0].getValue()[0]) # TITLE fields titleFields = entry.getTitles() if len(titleFields) > 0: ! entryXML = self.addField(entryXML, JOB_TITLE, titleFields[0].getValue()) # URL fields *************** *** 486,494 **** if len(homeURLFields) > 0: homeURL = homeURLFields[0].getValue() ! entryXML = addField(entryXML, HOME_WEB_PAGE, homeURL) workURLFields = entry.getWorkURLs() if len(workURLFields) > 0: workURL = workURLFields[0].getValue() ! entryXML = addField(entryXML, BUSINESS_WEB_PAGE, workURL) if homeURL == None: urlFields = entry.getURLs() --- 487,495 ---- if len(homeURLFields) > 0: homeURL = homeURLFields[0].getValue() ! entryXML = self.addField(entryXML, HOME_WEB_PAGE, homeURL) workURLFields = entry.getWorkURLs() if len(workURLFields) > 0: workURL = workURLFields[0].getValue() ! entryXML = self.addField(entryXML, BUSINESS_WEB_PAGE, workURL) if homeURL == None: urlFields = entry.getURLs() *************** *** 496,500 **** url = urlField.getValue() if url != workURL: ! entryXML = addField(entryXML, HOME_WEB_PAGE, url) break --- 497,501 ---- url = urlField.getValue() if url != workURL: ! entryXML = self.addField(entryXML, HOME_WEB_PAGE, url) break *************** *** 505,509 **** if fieldId != None: if fieldId.find(X_ZAURUS_UNKNOWN) == 0: ! entryXML = addField(entryXML, fieldId[len(X_ZAURUS_UNKNOWN):], field.getValue()) entriesXML += entryXML --- 506,510 ---- if fieldId != None: if fieldId.find(X_ZAURUS_UNKNOWN) == 0: ! entryXML = self.addField(entryXML, fieldId[len(X_ZAURUS_UNKNOWN):], field.getValue()) entriesXML += entryXML |