def updateVCard(): mdict = registered_member_dicts.pop() setup.setVCard( mdict, mdict['jid_obj'], mdict['pass'], updateVCard)
def onUserPreferencesChanged(event): """ Update user's vcard when their prefs have changed. """ request = getRequest() if not IProductLayer.providedBy(request): return if not isinstance(event.context, UserDataPanel): return portal = getSite() mtool = getToolByName(portal, 'portal_membership') member = mtool.getAuthenticatedMember() member_id = member.getId() pass_storage = getUtility(IXMPPPasswordStorage) member_pass = pass_storage.get(member_id) if not member_pass: log.info('%s is not registered on the XMPP server.' % member_id) return xmpp_users = getUtility(IXMPPUsers) member_jid = xmpp_users.getUserJID(member_id) portal_url = getToolByName(portal, 'portal_url')() fullname = member.getProperty('fullname').decode('utf-8') portrait = mtool.getPersonalPortrait(member_id) if IOFSImage.providedBy(portrait): raw_image = portrait.data elif isinstance(portrait, FSImage): raw_image = portrait._data else: log.warn('Could not get the raw data for portrait image for user %s' \ % member_id) raw_image = None udict = { 'fullname': fullname, 'nickname': member_id, 'email': member.getProperty('email'), 'userid': member_jid.userhost(), 'jabberid': member_jid.userhost(), 'url': '%s/author/%s' % (portal_url, member_id), 'image_type': portrait.content_type, 'raw_image': raw_image } setup.setVCard(udict, member_jid, member_pass)
def updateVCard(): mdict = registered_member_dicts.pop() setup.setVCard(mdict, mdict['jid_obj'], mdict['pass'], updateVCard)