def test_add_promo_code(self): ''' This test can fail due to the new promo code not having propagated in CIDB. To solve, one can put time.sleep(2) before get_consumer_profile. ''' member = self.immutable_member api.add_promo_code(member.neoprofile.consumer_id, 'added_promo_code', username=member.username, password=member.neoprofile.password) #time.sleep(5) consumer = api.get_consumer_profile(member.neoprofile.consumer_id, username=member.username, password=member.neoprofile.password) self.assertEqual('added_promo_code', consumer.ConsumerProfile.PromoCode)
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)
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