From eb62628035cf79052a8816eb6ae1772e37c33188 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9rome=20Perrin?= <jerome@nexedi.com> Date: Thu, 2 Aug 2007 15:31:28 +0000 Subject: [PATCH] The vobject extension was missing git-svn-id: https://svn.erp5.org/repos/public/erp5/trunk@15422 20353a03-c40f-0410-a6d1-a30d3c3de9de --- .../ExtensionTemplateItem/VObject_export.py | 107 ++++++++++++++++++ bt5/erp5_mobile/bt/comment | 0 bt5/erp5_mobile/bt/revision | 2 +- bt5/erp5_mobile/bt/template_extension_id_list | 1 + 4 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 bt5/erp5_mobile/ExtensionTemplateItem/VObject_export.py create mode 100644 bt5/erp5_mobile/bt/comment diff --git a/bt5/erp5_mobile/ExtensionTemplateItem/VObject_export.py b/bt5/erp5_mobile/ExtensionTemplateItem/VObject_export.py new file mode 100644 index 0000000000..cfd9e3094f --- /dev/null +++ b/bt5/erp5_mobile/ExtensionTemplateItem/VObject_export.py @@ -0,0 +1,107 @@ +# vobject integration for ERP5 + +try: + import vobject +except ImportError: + raise ImportError('vobject is not properly installed, get it from '\ + ' http://vobject.skyhouseconsulting.com') + +def decode(string): + if not string: + return '' + return unicode(string, 'utf8', 'repr') + +def Person_viewPersonAsvCard(self, REQUEST=None): + """Returns a vCard representation of a Person object. + """ + vcard = vobject.vCard() + # name + vcard.add('n') + vcard.n.value = vobject.vcard.Name( family=decode(self.getFirstName()), + given=decode(self.getLastName()), + additional=decode(self.getMiddleName()), + prefix=decode(self.getPrefix()), + suffix=decode(self.getSuffix()) ) + # formatted name + vcard.add('fn') + vcard.fn.value = decode(self.getTitle()) + + # organisation + if self.getSubordination(): + vcard.add('org') + vcard.org.value = decode(self.getSubordinationTitle()) + + # default email + email = self.getDefaultEmailValue() + if email is not None: + vcard.add('email') + vcard.email.value = email.getUrlString() + vcard.email.type_param = 'PREF' + + # alt. emails + for addr in self.contentValues(filter=dict(portal_type=['Email'])): + if addr.getId() not in ('default_email', ): + c = vcard.add('email') + c.value = decode(addr.asText()) + c.type_param = 'INTERNET' + + # default address + address = self.getDefaultAddressValue() + if address is not None: + addr = vcard.add('adr') + addr.value = vobject.vcard.Address( + street=decode(address.getStreetAddress()), + city=decode(address.getCity()), + region=decode(address.getRegionTitle()), + code=decode(address.getZipCode())) + addr.type_param = 'PREF' + + # alt. addresses + for addr in self.contentValues(filter=dict(portal_type=['Address'])): + if addr.getId() not in ('default_address', ): + c = vcard.add('adr') + c.value = vobject.vcard.Address( + street=decode(addr.getStreetAddress()), + city=decode(addr.getCity()), + region=decode(addr.getRegionTitle()), + code=decode(addr.getZipCode())) + c.type_param = decode(addr.getTitle()) + + # default telephone + tel = self.getDefaultTelephoneValue() + if tel is not None: + vcard.add('tel') + vcard.tel.value = decode(tel.asText()) + vcard.tel.type_param = 'PREF' + + # default fax + default_fax = self.getDefaultFaxValue() + if default_fax is not None: + fax = vcard.add('tel') + fax.value = decode(default_fax.asText()) + fax.type_param = 'FAX' + + # alt. telephones + for tel in self.contentValues(filter=dict( + portal_type=['Telephone', 'Fax'])): + if tel.getId() not in ('default_telephone', 'default_fax'): + c = vcard.add('tel') + c.value = decode(tel.asText()) + + # default image + if getattr(self, 'getDefaultImage', None) is not None: + image = self.getDefaultImage() + if image is not None: + photo = vcard.add('photo') + photo.value = image.manage_FTPget() + photo.encoding_param = 'b' + + if REQUEST: + REQUEST.RESPONSE.setHeader('Content-type', 'text/x-vcard') + return vcard.serialize().encode('utf8') + +def PersonModule_importvCard(self): + """Import persons from a vCard file. + """ + return NotImplemented + diff --git a/bt5/erp5_mobile/bt/comment b/bt5/erp5_mobile/bt/comment new file mode 100644 index 0000000000..e69de29bb2 diff --git a/bt5/erp5_mobile/bt/revision b/bt5/erp5_mobile/bt/revision index 3f10ffe7a4..19c7bdba7b 100644 --- a/bt5/erp5_mobile/bt/revision +++ b/bt5/erp5_mobile/bt/revision @@ -1 +1 @@ -15 \ No newline at end of file +16 \ No newline at end of file diff --git a/bt5/erp5_mobile/bt/template_extension_id_list b/bt5/erp5_mobile/bt/template_extension_id_list index e69de29bb2..bb129ea596 100644 --- a/bt5/erp5_mobile/bt/template_extension_id_list +++ b/bt5/erp5_mobile/bt/template_extension_id_list @@ -0,0 +1 @@ +VObject_export \ No newline at end of file -- 2.30.9