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)
Example #3
0
 def updateVCard():
     mdict = registered_member_dicts.pop()
     setup.setVCard(mdict, mdict['jid_obj'], mdict['pass'],
                    updateVCard)