def create_account(self, payload): return Account.objects.create( account_type=payload['account_type'], start_date=payload['start_date'], end_date=payload['end_date'], code=codes.generate() )
def create_giftcard(order_number, user, amount): source = core.paid_source_account() code = codes.generate() destination = Account.objects.create( code=code ) facade.transfer(source, destination, amount, user, "Create new account")
def save(self, *args, **kwargs): kwargs['commit'] = False account = super().save(*args, **kwargs) account.code = codes.generate() if hasattr(self, '_account_type'): account.account_type = self._account_type account.save() self.save_m2m() return account
def save(self, *args, **kwargs): kwargs['commit'] = False account = super(NewAccountForm, self).save(*args, **kwargs) account.code = codes.generate() if hasattr(self, '_account_type'): account.account_type = self._account_type account.save() self.save_m2m() return account
def register_user(self, form): """ Create a user instance and send a new registration email (if configured to). 注册的同时给用户生成唯一的数字码,可以用来用户的转账等 """ user = form.save() account_type = AccountType.objects.get(name='Web') Account.objects.create( account_type=account_type, code=codes.generate(size=5), primary_user=user, ) # Raise signal robustly (we don't want exceptions to crash the request # handling). user_registered.send_robust(sender=self, request=self.request, user=user) if getattr(settings, 'OSCAR_SEND_REGISTRATION_EMAIL', True): self.send_registration_email(user) # We have to authenticate before login try: user = authenticate(username=user.email, password=form.cleaned_data['password1']) except User.MultipleObjectsReturned: # Handle race condition where the registration request is made # multiple times in quick succession. This leads to both requests # passing the uniqueness check and creating users (as the first one # hasn't committed when the second one runs the check). We retain # the first one and deactivate the dupes. logger.warning( 'Multiple users with identical email address and password' 'were found. Marking all but one as not active.') # As this section explicitly deals with the form being submitted # twice, this is about the only place in Oscar where we don't # ignore capitalisation when looking up an email address. # We might otherwise accidentally mark unrelated users as inactive users = User.objects.filter(email=user.email) user = users[0] for u in users[1:]: u.is_active = False u.save() auth_login(self.request, user) return user
def _create_user_account(self, user): AccountType.objects.all() deferred_income = AccountType.objects.get(name=names.DEFERRED_INCOME) types = deferred_income.get_children() if types.count() != 1: # é preciso escolher qual dos tipos ou criar um raise exceptions.ImproperlyConfigured( "You need to define some 'deferred income' account types") # fora do if segue o jogo: account_type = types[0] dados_da_carteira = { "name": f"Créditos do: {user.username}", "description": "Conta com os créditos recebidos pela inserção de Ferramentas.", "account_type": types[0], "primary_user": user, "code": codes.generate() } user_account = Account.objects.create(**dados_da_carteira) return user_account
def save(self, commit=True): is_partner = self.cleaned_data.get('partner_check', False) user = super().save() account_type = models.AccountType.objects.get( name=names.DEFERRED_INCOME) user_account = models.Account.objects.create(primary_user=user, credit_limit=None) user_account.code = codes.generate() user_account.account_type = account_type user_account.save() if is_partner: partner = Partner.objects.create(name=user.email) partner.users.add(user) partner.save() dashboard_access_perm = Permission.objects.get( codename='dashboard_access', content_type__app_label='partner') user.user_permissions.add(dashboard_access_perm) return user
def test_create_codes_of_correct_length(self): for size in [4, 6, 8]: code = codes.generate(size=size) self.assertTrue(size, len(code))
def test_can_create_codes_using_custom_character_set(self): chars = string.ascii_uppercase code = codes.generate(chars=chars) for char in code: self.assertTrue(char in chars)
def test_create_codes_using_correct_default_character_set(self): code = codes.generate() chars = string.ascii_uppercase + string.digits for char in code: self.assertTrue(char in chars)