Пример #1
0
def process_user_form(user_id=None):
    """
    Create or edit a user.
    """
    form = UserForm()
    user_contr = UserController()

    if not form.validate():
        return render_template('/admin/create_user.html', form=form,
                               message=gettext('Some errors were found'))

    role_user = Role.query.filter(Role.name == "user").first()
    if user_id is not None:
        # Edit a user
        user_contr.update({'id': user_id},
                          {'nickname': form.nickname.data,
                           'email': form.email.data,
                           'password': form.password.data,
                           'refresh_rate': form.refresh_rate.data})
        user = user_contr.get(id=user_id)
        flash(gettext('User %(nick)s successfully updated',
                      nick=user.nickname), 'success')
    else:
        # Create a new user
        user = user_contr.create(nickname=form.nickname.data,
                                 email=form.email.data,
                                 password=form.password.data,
                                 roles=[role_user],
                                 refresh_rate=form.refresh_rate.data,
                                 activation_key="")
        flash(gettext('User %(nick)s successfully created',
                      nick=user.nickname), 'success')
    return redirect(url_for('admin.user_form', user_id=user.id))
Пример #2
0
def process_user_form(user_id=None):
    """
    Create or edit a user.
    """
    form = UserForm()
    user_contr = UserController()

    if not form.validate():
        return render_template('/admin/create_user.html', form=form,
                               message=gettext('Some errors were found'))

    if user_id is not None:
        # Edit a user
        user_contr.update({'id': user_id},
                          {'nickname': form.nickname.data,
                           'email': form.email.data,
                           'password': form.password.data,
                           'automatic_crawling': form.automatic_crawling.data})
        user = user_contr.get(id=user_id)
        flash(gettext('User %(nick)s successfully updated',
                      nick=user.nickname), 'success')
    else:
        # Create a new user (by the admin)
        user = user_contr.create(nickname=form.nickname.data,
                            email=form.email.data,
                            pwdhash=generate_password_hash(form.password.data),
                            automatic_crawling=form.automatic_crawling.data,
                            is_admin=False,
                            is_active=True)
        flash(gettext('User %(nick)s successfully created',
                      nick=user.nickname), 'success')
    return redirect(url_for('admin.user_form', user_id=user.id))
Пример #3
0
def process_user_form(user_id=None):
    """
    Create or edit a user.
    """
    form = UserForm()
    user_contr = UserController()

    if not form.validate():
        return render_template('/admin/create_user.html',
                               form=form,
                               message=gettext('Some errors were found'))

    if user_id is not None:
        # Edit a user
        user_contr.update({'id': user_id}, {
            'nickname': form.nickname.data,
            'password': form.password.data,
            'automatic_crawling': form.automatic_crawling.data
        })
        user = user_contr.get(id=user_id)
        flash(
            gettext('User %(nick)s successfully updated', nick=user.nickname),
            'success')
    else:
        # Create a new user (by the admin)
        user = user_contr.create(
            nickname=form.nickname.data,
            pwdhash=generate_password_hash(form.password.data),
            automatic_crawling=form.automatic_crawling.data,
            is_admin=False,
            is_active=True)
        flash(
            gettext('User %(nick)s successfully created', nick=user.nickname),
            'success')
    return redirect(url_for('admin.user_form', user_id=user.id))
Пример #4
0
def populate_db():
    db_create()
    ucontr = UserController()
    ccontr = CategoryController()
    fcontr = FeedController()
    acontr = ArticleController()
    ccontr = CategoryController()
    user1, user2 = [
        ucontr.create(login=name, email="*****@*****.**" % name, password=name)
        for name in ["user1", "user2"]
    ]

    article_total = 0
    for user in (user1, user2):
        for i in range(3):
            cat_id = None
            if i:
                cat_id = ccontr.create(user_id=user.id,
                                       name="category%d" % i).id
            feed = fcontr.create(link="feed%d" % i,
                                 user_id=user.id,
                                 category_id=cat_id,
                                 title="%s feed%d" % (user.login, i))
            for j in range(3):
                entry = "%s %s article%d" % (user.login, feed.title, j)
                article_total += 1
                acontr.create(entry_id=entry,
                              link='http://test.te/%d' % article_total,
                              feed_id=feed.id,
                              user_id=user.id,
                              category_id=cat_id,
                              title=entry,
                              content="content %d" % article_total)
Пример #5
0
def populate_db():
    db_create()
    ucontr = UserController()
    ccontr = CategoryController()
    fcontr = FeedController()
    acontr = ArticleController()
    ccontr = CategoryController()
    user1, user2 = [ucontr.create(login=name, email="*****@*****.**" % name,
                                  password=name)
                    for name in ["user1", "user2"]]

    article_total = 0
    for user in (user1, user2):
        for i in range(3):
            cat_id = None
            if i:
                cat_id = ccontr.create(user_id=user.id,
                                       name="category%d" % i).id
            feed = fcontr.create(link="feed%d" % i, user_id=user.id,
                                    category_id=cat_id,
                                    title="%s feed%d" % (user.login, i))
            for j in range(3):
                entry = "%s %s article%d" % (user.login, feed.title, j)
                article_total += 1
                acontr.create(entry_id=entry,
                        link='http://test.te/%d' % article_total,
                        feed_id=feed.id, user_id=user.id, category_id=cat_id,
                        title=entry, content="content %d" % article_total)
Пример #6
0
 def test_password(self):
     passwd = 'test_password'
     ucontr = UserController()
     user = ucontr.create(login=passwd, password=passwd)
     self.assertNotEquals(passwd, user.password)
     self.assertTrue(ucontr.check_password(user, passwd))
     self.assertFalse(ucontr.check_password(user, passwd * 2))
     passwd *= 2
     ucontr.update({'id': user.id}, {'password': passwd})
     user = ucontr.get(id=user.id)
     self.assertNotEquals(passwd, user.password)
     self.assertTrue(ucontr.check_password(user, passwd))
     self.assertFalse(ucontr.check_password(user, passwd * 2))
Пример #7
0
def oauth_callback(provider):  # pragma: no cover
    if not current_user.is_anonymous:
        return redirect(url_for('home'))
    oauth = OAuthSignIn.get_provider(provider)
    social_id, username, email = oauth.callback()
    if social_id is None:
        flash('Authentication failed.')
        return redirect(url_for('home'))
    ucontr = UserController()
    try:
        user = ucontr.get(**{'%s_identity' % provider: social_id})
    except NotFound:
        user = None
    if not user:
        user = ucontr.create(**{'%s_identity' % provider: social_id,
                                'login': username, 'email': email})
    login_user_bundle(user)
    return redirect(url_for('home'))
Пример #8
0
def login():
    if current_user.is_authenticated:
        return redirect(url_for('home'))
    if request.args.get('code'):
        code = request.args.get('code')
        data = {
            'grant_type': 'authorization_code',
            'client_id': conf.OPENIDC_CLIENT_ID,
            'client_secret': conf.OPENIDC_CLIENT_SECRET,
            'redirect_uri': url_for('login', _external=True),
            'code': code
        }
        r = requests.post(conf.OPENIDC_TOKEN_ENDPOINT, data=data)
        tokens = r.json()
        if 'error' not in tokens:
            headers = {
                'Authorization': 'Bearer ' + tokens['access_token'],
            }
            r = requests.post(conf.OPENIDC_USERINFO_ENDPOINT, headers=headers)
            userinfo = r.json()

            ucontr = UserController()
            try:
                user = ucontr.get(**{'external_id': userinfo['sub']})
                ucontr.update({'id': user.id}, {
                    'nickname': userinfo['preferred_username'],
                    'email': userinfo['email'],
                })
            except NotFound:
                user = ucontr.create(nickname=userinfo['preferred_username'],
                                     email=userinfo['email'],
                                     external_id=userinfo['sub'],
                                     is_active=True,
                                     is_api=True)
            login_user_bundle(user)
            return redirect(url_for('home'))

    auth = URL(conf.OPENIDC_AUTHORIZATION_ENDPOINT)
    auth = auth.with_query(client_id=conf.OPENIDC_CLIENT_ID,
                           redirect_uri=url_for('login', _external=True),
                           response_type='code',
                           scope='openid profile email')
    return render_template('login.html', authorization=auth)
Пример #9
0
def process_user_form(user_id=None):
    """
    Create or edit a user.
    """
    form = UserForm()
    user_contr = UserController()

    if not form.validate():
        return render_template(
            "/admin/create_user.html",
            form=form,
            message=gettext("Some errors were found"),
        )

    if user_id is not None:
        # Edit a user
        user_contr.update(
            {"id": user_id},
            {
                "nickname": form.nickname.data,
                "password": form.password.data,
                "automatic_crawling": form.automatic_crawling.data,
            },
        )
        user = user_contr.get(id=user_id)
        flash(
            gettext("User %(nick)s successfully updated", nick=user.nickname),
            "success")
    else:
        # Create a new user (by the admin)
        user = user_contr.create(
            nickname=form.nickname.data,
            password=form.password.data,
            automatic_crawling=form.automatic_crawling.data,
            is_admin=False,
            is_active=True,
        )
        flash(
            gettext("User %(nick)s successfully created", nick=user.nickname),
            "success")
    return redirect(url_for("admin.user_form", user_id=user.id))
Пример #10
0
def oauth_callback(provider):  # pragma: no cover
    if not current_user.is_anonymous:
        return redirect(url_for('home'))
    oauth = OAuthSignIn.get_provider(provider)
    social_id, username, email = oauth.callback()
    if social_id is None:
        flash('Authentication failed.')
        return redirect(url_for('home'))
    ucontr = UserController()
    try:
        user = ucontr.get(**{'%s_identity' % provider: social_id})
    except NotFound:
        user = None
    if not user and not conf.OAUTH_ALLOW_SIGNUP:
        flash('Account creation is not allowed through OAuth.')
        return redirect(url_for('home'))
    elif not user:
        user = ucontr.create(**{'%s_identity' % provider: social_id,
                                'login': '******' % (provider, username),
                                'email': email})
    login_user_bundle(user)
    return redirect(url_for('home'))
Пример #11
0
def process_user_form(user_id=None):
    """
    Create or edit a user.
    """
    form = UserForm()
    user_contr = UserController()

    if not form.validate():
        return render_template('/admin/create_user.html',
                               form=form,
                               message=gettext('Some errors were found'))

    role_user = Role.query.filter(Role.name == "user").first()
    if user_id is not None:
        # Edit a user
        user_contr.update({'id': user_id}, {
            'nickname': form.nickname.data,
            'email': form.email.data,
            'password': form.password.data,
            'refresh_rate': form.refresh_rate.data
        })
        user = user_contr.get(id=user_id)
        flash(
            gettext('User %(nick)s successfully updated', nick=user.nickname),
            'success')
    else:
        # Create a new user
        user = user_contr.create(nickname=form.nickname.data,
                                 email=form.email.data,
                                 password=form.password.data,
                                 roles=[role_user],
                                 refresh_rate=form.refresh_rate.data,
                                 activation_key="")
        flash(
            gettext('User %(nick)s successfully created', nick=user.nickname),
            'success')
    return redirect(url_for('admin.user_form', user_id=user.id))