Exemple #1
0
 def test_encode_auth_token(self):
     user = User(email='*****@*****.**',
                 password='******',
                 registered_on=datetime.datetime.utcnow())
     app.config.db.session.add(user)
     app.config.db.session.commit()
     auth_token = User.encode_auth_token(user.pk)
     self.assertTrue(isinstance(auth_token, bytes))
async def save_new_user(data, admin=None):
    user = await User.find_one({'email': data['email']})
    if not user:
        new_user = User(
            # public_id=str(uuid.uuid4()),
            email=data['email'],
            name=data.get('username', ''),
            registered_on=datetime.datetime.utcnow(),
            avatar=data.get('avatar', ''),
            introduction=data.get('introduction', ''))
        cnt = await User.count_documents()
        if cnt == 0:
            new_user.roles = ['admin']
        else:
            new_user.roles = ['viewer']
        new_user.password = data['password']
        try:
            await new_user.commit()
        except Exception as e:
            logger.exception(e)
            return response_message(EINVAL, 'Field validating for User failed')

        user_root = USERS_ROOT / data['email']
        try:
            await aiofiles.os.mkdir(user_root)
        except FileExistsError as e:
            return response_message(EEXIST)
        try:
            await aiofiles.os.mkdir(user_root / 'test_results')
        except FileExistsError as e:
            return response_message(EEXIST)

        if new_user.avatar == '':
            img = await render_identicon(hash(data['email']), 27)
            await async_wraps(img.save)(user_root / ('%s.png' % new_user.pk))
            new_user.avatar = '%s.png' % new_user.pk
        if new_user.name == '':
            new_user.name = new_user.email.split('@')[0]
        if not admin:
            organization = Organization(name='Personal')
            organization.owner = new_user
            organization.path = new_user.email
            organization.members = [new_user]
            organization.personal = True
            await organization.commit()
            new_user.organizations = [organization]
        await new_user.commit()

        return generate_token(new_user)
    else:
        return response_message(USER_ALREADY_EXIST)
def save_new_user(data, admin=None):
    user = User.objects(email=data['email']).first()
    if not user:
        new_user = User(
            # public_id=str(uuid.uuid4()),
            email=data['email'],
            name=data.get('username', ''),
            registered_on=datetime.datetime.utcnow(),
            roles=data.get('roles', ['admin']),
            avatar=data.get('avatar', ''),
            introduction=data.get('introduction', ''))
        new_user.password = data['password']
        try:
            new_user.save()
        except Exception as e:
            current_app.logger.exception(e)
            return response_message(EINVAL,
                                    'Field validating for User failed'), 401

        user_root = USERS_ROOT / data['email']
        try:
            os.mkdir(user_root)
        except FileExistsError as e:
            return response_message(EEXIST), 401
        try:
            os.mkdir(user_root / 'test_results')
        except FileExistsError as e:
            return response_message(EEXIST), 401

        if new_user.avatar == '':
            img = render_identicon(hash(data['email']), 27)
            img.save(user_root / ('%s.png' % new_user.id))
            new_user.avatar = '%s.png' % new_user.id
        if new_user.name == '':
            new_user.name = new_user.email.split('@')[0]
        if not admin:
            organization = Organization(name='Personal')
            organization.owner = new_user
            organization.path = new_user.email
            organization.members = [new_user]
            organization.personal = True
            organization.save()
            new_user.organizations = [organization]
        new_user.save()

        return generate_token(new_user)
    else:
        return response_message(USER_ALREADY_EXIST), 409