def create_code_for_user(cls, user, next=None): if not user.is_active: return None code = None params = { 'length': getattr(settings, 'NOPASSWORD_CODE_LENGTH', 20), 'algorithm': getattr(settings, 'NOPASSWORD_HASH_ALGORITHM', 'sha256'), 'numeric': getattr(settings, 'NOPASSWORD_NUMERIC_CODES', False), } params.update( {k: getattr(cls, k) for k in params.keys() if hasattr(cls, k)}) while cls.code_is_used(code): code = cls.generate_code(**params) login_code = LoginCode(user=user, code=code) if next is not None: login_code.next = next login_code.save() return login_code
def test_str(self): code = LoginCode(user=self.user, code='foo', timestamp=datetime(2018, 7, 1)) self.assertEqual(str(code), 'test_user - 2018-07-01 00:00:00')