Example #1
0
def update_consumer(member):
    consumer_id = member.neoprofile.consumer_id
    # update changed attributes
    old_member = cache.get('neo_consumer_%s' % member.pk, None)
    wrapper = ConsumerWrapper()
    if old_member is not None:  # it should never be None
        for k in NEO_ATTR:
            # check where cached version and current version of member differ
            current = getattr(member, k, None)
            old = old_member.get(k, None)
            if current != old:
                # update attribute on Neo
                if old is None:
                    getattr(wrapper, "set_%s" % k)(current, mod_flag=modify_flag['INSERT'])
                elif current is None:
                    getattr(wrapper, "set_%s" % k)(old, mod_flag=modify_flag['DELETE'])
                else:
                    getattr(wrapper, "set_%s" % k)(current, mod_flag=modify_flag['UPDATE'])

        # check if address needs to change
        has_address = False
        had_address = False
        address_changed = False
        for k in ADDRESS_FIELDS:
            current = getattr(member, k, None)
            old = old_member.get(k, None)
            if current:
                has_address = True
            if old:
                had_address = True
            if current != old:
                address_changed = True
        # update address accordingly
        if address_changed:
            if not has_address:
                wrapper.set_address(old_member.address, old_member.city,
                                    old_member.province, old_member.zipcode, old_member.country,
                                    modify_flag['DELETE'])
            elif not had_address:
                wrapper.set_address(member.address, member.city,
                                    member.province, member.zipcode, member.country)
            else:
                wrapper.set_address(member.address, member.city,
                                    member.province, member.zipcode, member.country,
                                    mod_flag=modify_flag['UPDATE'])

    if not wrapper.is_empty:
        if not wrapper.profile_is_empty:
            wrapper.set_ids_for_profile(api.get_consumer_profile(consumer_id, username=member.neoprofile.login_alias,
                                                                 password=member.neoprofile.password))
        api.update_consumer(consumer_id, wrapper.consumer, username=member.neoprofile.login_alias, password=member.neoprofile.password)
Example #2
0
def update_consumer(member):
    consumer_id = NeoProfile.objects.get(user=member).consumer_id
    if not USE_MCAL:
        # update changed attributes
        old_member = cache.get('neo_consumer_%s' % member.pk, None)
        wrapper = ConsumerWrapper()
        if old_member is not None:  # it should never be None
            for k in NEO_ATTR:
                # check where cached version and current version of member differ
                current = getattr(member, k, None)
                old = old_member.get(k, None)
                if current != old:
                    # update attribute on Neo
                    if old is None:
                        getattr(wrapper, "set_%s" % k)(current, mod_flag=modify_flag['INSERT'])
                    elif current is None:
                        getattr(wrapper, "set_%s" % k)(old, mod_flag=modify_flag['DELETE'])
                    else:
                        getattr(wrapper, "set_%s" % k)(current, mod_flag=modify_flag['UPDATE'])

        # check if address needs to change
        has_address = False
        had_address = False
        address_changed = False
        for k in ADDRESS_FIELDS:
            current = getattr(member, k, None)
            old = old_member.get(k, None)
            if current:
                has_address = True
            if old:
                had_address = True
            if current != old:
                address_changed = True
        # update address accordingly
        if address_changed:
            if not has_address:
                wrapper.set_address(old_member.address, old_member.city,
                    old_member.province, old_member.zipcode, old_member.country,
                    modify_flag['DELETE'])
            elif not had_address:
                wrapper.set_address(member.address, member.city,
                    member.province, member.zipcode, member.country)
            else:
                wrapper.set_address(member.address, member.city,
                    member.province, member.zipcode, member.country,
                    mod_flag=modify_flag['UPDATE'])

        if not wrapper.is_empty:
            if not wrapper.profile_is_empty:
                wrapper.set_ids_for_profile(api.get_consumer_profile(consumer_id))
            api.update_consumer(consumer_id, wrapper.consumer)
    
    # check if password needs to be changed
    raw_password = getattr(member, 'raw_password', None)
    if raw_password:
        old_password = getattr(member, 'old_password', None)
        if old_password:
            api.change_password(member.username, raw_password, old_password=old_password)
        else:
            api.change_password(member.username, raw_password, token=member.forgot_password_token)
    return consumer_id