Example #1
0
def register():
    if current_user.is_authenticated:
        return redirect(url_for("index"))
    form = RegistrationForm()
    if form.validate_on_submit():
        if form.access_level.data == "599s1Z]76G4MVMX":
            user = User(access_level=1,
                        username=form.username.data,
                        password=form.password.data,
                        fullname=form.fullname.data,
                        email=form.email.data,
                        phone_number=form.phone.data)
            db.session.add(user)
            db.session.commit()
            flash("Congratulations, you are now a registered teacher!")
        else:
            user = User(access_level=0,
                        username=form.username.data,
                        password=form.password.data,
                        fullname=form.fullname.data,
                        email=form.email.data,
                        phone_number=form.phone.data)
            db.session.add(user)
            db.session.commit()
            flash("Congratulations, you are now a registered student!")
        return redirect(url_for("login"))
    return render_template("register.html", title="Register", form=form)
 def test_follows(self):
     u1 = User(email='*****@*****.**', password='******')
     u2 = User(email='*****@*****.**', password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     self.assertFalse(u1.is_following(u2))
     self.assertFalse(u1.is_followed_by(u2))
     timestamp_before = datetime.utcnow()
     u1.follow(u2)
     timestamp_after = datetime.utcnow()
     self.assertTrue(u1.is_following(u2))
     self.assertFalse(u1.is_followed_by(u2))
     self.assertTrue(u2.is_followed_by(u1))
     self.assertTrue(u1.followed.count() == 2)
     self.assertTrue(u2.followers.count() == 2)
     f = u1.followed.all()[-1]
     self.assertTrue(f.followed == u2)
     self.assertTrue(timestamp_before <= f.timestamp <= timestamp_after)
     f = u2.followers.all()[-1]
     self.assertTrue(f.follower == u1)
     u1.unfollow(u2)
     self.assertTrue(u1.followed.count() == 1)
     self.assertTrue(u2.followers.count() == 1)
     self.assertTrue(Follow.query.count() == 2)
     u2.follow(u1)
     db.session.delete(u2)
     db.session.commit()
     self.assertTrue(Follow.query.count() == 1)
 def test_invalid_confirmation_token(self):
     u1 = User(password='******')
     u2 = User(password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     token = u1.generate_confirmation_token()
     self.assertFalse(u2.confirm(token))
 def test_duplicate_email_change_token(self):
     u1 = User(email='*****@*****.**', password='******')
     u2 = User(email='*****@*****.**', password='******')
     db.session.add(u1)
     db.session.add(u2)
     db.session.commit()
     token = u2.generate_email_change_token('*****@*****.**')
     self.assertFalse(u2.change_email(token))
     self.assertTrue(u2.email == '*****@*****.**')
Example #5
0
 def test_follow_posts(self):
     # make four users
     u1 = User(nickname='john', email='*****@*****.**')
     u2 = User(nickname='susan', email='*****@*****.**')
     u3 = User(nickname='mary', email='*****@*****.**')
     u4 = User(nickname='david', email='*****@*****.**')
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(u3)
     db.session.add(u4)
     # make four posts
     utcnow = datetime.utcnow()
     p1 = Post(body="post from john",
               author=u1,
               timestamp=utcnow + timedelta(seconds=1))
     p2 = Post(body="post from susan",
               author=u2,
               timestamp=utcnow + timedelta(seconds=2))
     p3 = Post(body="post from mary",
               author=u3,
               timestamp=utcnow + timedelta(seconds=3))
     p4 = Post(body="post from david",
               author=u4,
               timestamp=utcnow + timedelta(seconds=4))
     db.session.add(p1)
     db.session.add(p2)
     db.session.add(p3)
     db.session.add(p4)
     db.session.commit()
     # setup the followers
     u1.follow(u1)  # john follows himself
     u1.follow(u2)  # john follows susan
     u1.follow(u4)  # john follows david
     u2.follow(u2)  # susan follows herself
     u2.follow(u3)  # susan follows mary
     u3.follow(u3)  # mary follows herself
     u3.follow(u4)  # mary follows david
     u4.follow(u4)  # david follows himself
     db.session.add(u1)
     db.session.add(u2)
     db.session.add(u3)
     db.session.add(u4)
     db.session.commit()
     # check the followed posts of each user
     f1 = u1.followed_posts().all()
     f2 = u2.followed_posts().all()
     f3 = u3.followed_posts().all()
     f4 = u4.followed_posts().all()
     assert len(f1) == 3
     assert len(f2) == 2
     assert len(f3) == 2
     assert len(f4) == 1
     assert f1 == [p4, p2, p1]
     assert f2 == [p3, p2]
     assert f3 == [p4, p3]
     assert f4 == [p4]
Example #6
0
 def test_make_unique_nickname(self):
     u = User(nickname='john', email='*****@*****.**')
     db.session.add(u)
     db.session.commit()
     nickname = User.make_unique_nickname('john')
     assert nickname != 'john'
     u = User(nickname=nickname, email='*****@*****.**')
     db.session.add(u)
     db.session.commit()
     nickname2 = User.make_unique_nickname('john')
     assert nickname2 != 'john'
     assert nickname2 != nickname
Example #7
0
def profile(username):
    user1 = User(session.get('username'))
    user2 = User(username)
    posts = user2.recent_posts(5)

    similar = []
    common = {}
    if user1.username == user2.username:
        similar = user1.similar_users(3)
    else:
        common = user1.commonality_of_user(user2)

    return render_template('profile.html', username=username, posts=posts, similar=similar, common=common)
Example #8
0
File: base.py Project: xue000/Blog
    def setUp(self):
        app = create_app('testing')
        self.context = app.test_request_context()
        self.context.push()
        self.client = app.test_client()
        self.runner = app.test_cli_runner()

        db.create_all()
        Role.init_role()

        admin_user = User(email='*****@*****.**',
                          name='Admin',
                          username='******')
        admin_user.set_password('123')
        admin_user.set_role()
        normal_user = User(email='*****@*****.**',
                           name='Normal User',
                           username='******')
        normal_user.set_password('123')
        unconfirmed_user = User(
            email='*****@*****.**',
            name='Unconfirmed',
            username='******',
        )
        unconfirmed_user.set_password('123')
        locked_user = User(email='*****@*****.**',
                           name='Locked User',
                           username='******',
                           locked=True)
        locked_user.set_password('123')
        locked_user.lock()

        blocked_user = User(email='*****@*****.**',
                            name='Blocked User',
                            username='******',
                            active=False)
        blocked_user.set_password('123')

        category = Category(name='test category')
        post = Post(title='test post', body='Test post', category=category)
        comment = Comment(body='test comment body',
                          post=post,
                          author=normal_user)
        db.session.add_all([
            admin_user, normal_user, unconfirmed_user, locked_user,
            blocked_user
        ])
        db.session.commit()
Example #9
0
def signupc(request):
    un = request.POST.get('username1')
    em = request.POST.get('email')
    pw1 = request.POST.get('password1')
    pw2 = request.POST.get('password2')
    print(pw2)
    print(pw1)
    filterResult = User.objects.filter(username=un)
    if len(filterResult) > 0:
        return render_to_response('CreativeWriting.html', {"errors2": "Username already exists!"})
    else:
        errors = []
        if (pw2 != pw1):
            errors.append("The password entered twice is inconsistent!")
            return render_to_response('CreativeWriting.html', {'errors2': errors})
            # 将表单写入数据库
        user = User()
        user.username = un
        user.password = pw1
        user.email = em
        user.save()
        # 返回注册成功页面
        return render_to_response('CreativeWriting.html', {"errors": "registration success!"})

    return render_to_response('CreativeWriting.html')
Example #10
0
def add_user():
    username = request.json.get('username')
    email = request.json.get('email')
    password = request.json.get('password')
    profile_image = request.json.get('profile_image')
    confirmed = request.json.get('confirmed')

    if request.json is None:
        return custom_error('Missing Arguments', 404)
    if username is None and password is None:
        return custom_error("Missing Arguments", 404)
    if email is None:
        return custom_error("Missing Arguments", 404)

    if User.query.filter_by(username=username).first() is not None:
        return custom_error('User already exists', 404)

    try:
        user = User(
            username=username,
            email=email,
            password=bcrypt.generate_password_hash(password).decode('utf-8'),
            profile_image=profile_image,
            confirmed=confirmed)
        db.session.add(user)
        db.session.commit()
    except:
        return custom_error('An error occured while writing to database.', 404)
    return jsonify({
        'username': user.username,
        'email': user.email
    }), 201, {
        'Location': url_for('api.get_user', user_id=user.id, _external=True)
    }
Example #11
0
def register(request):
    if request.method == "POST":
        uf = UserForm(request.POST)
        if uf.is_valid():
            #获取表单信息
            username = uf.cleaned_data['username']
            email = uf.cleaned_data['email']
            password1 = uf.cleaned_data['password1']
            password2 = uf.cleaned_data['password2']
            filterResult = User.objects.filter(username=username)
            if len(filterResult) > 0:
                return render_to_response('register.html', {"errors": "用户名已存在"})
            else:
                errors = []
                if (password2 != password1):
                    errors.append("两次输入的密码不一致!")
                    return render_to_response('register.html', {'errors': errors})
            #将表单写入数据库
            user = User()
            user.username = username
            user.password = password1
            user.email = email
            user.save()
            #返回注册成功页面
            return render_to_response('success.html',{'username':username,'operation':"注册"})
    else:
        uf = UserForm()
    return render_to_response('register.html',{'uf':uf})
Example #12
0
  def test_user(self):
    """ User creation and authentication
    Create new user
    Add to database
    Login and out"""
    # Make a new user
    u = User(username, password, email)
    with self.app.app_context():
      # Add to db
      db.session.add(u)
      db.session.commit()
      # Test queries
      self.assertIsNotNone(User.query.filter_by(username=username).first())
      self.assertIsNotNone(User.query.filter_by(email=email).first())
    # Test password secturity
    self.assertNotEqual(u.password, password)
    self.assertTrue(u.check_password(password))

    # Try an incorrect log in
    rv = self.login(username, 'not_correct')
    self.assertIn(b'Invalid username or password', rv.data)
    # Try correct login
    rv = self.login(username, password)
    # Test if log in was succsessful
    self.assertEqual(rv.status_code, 200)
    self.assertIn(b"logged in", rv.data)

    # Try logout
    rv = self.logout()
    self.assertIn(b'You were logged out', rv.data)
Example #13
0
    def test_delete_post(self):
        user1 = User(
            username="******",
            email="*****@*****.**",
            password=
            "******")
        db.session.add(user1)
        db.session.commit()
        post1 = Post(title="test blog", content="testdata", user_id=user1.id)
        db.session.add(post1)
        db.session.commit()
        self.assertEqual(user1.posts, [post1])  # check user has post
        # random key for this session only
        app.config['SECRET_KEY'] = '64529050a317171fa534714b75b55b03'
        with app.test_client() as c:
            response = c.post('/login',
                              data=dict(email='*****@*****.**',
                                        password='******',
                                        remember=True,
                                        form=""),
                              follow_redirects=True)
            self.assertEqual(response.status_code, 200)
            self.assertEqual(request.path, '/blog')
            self.assertEqual(current_user.username,
                             'test')  # check current user
            post_before = Post.query.all()
            # print("before deletion:",post_before)  checking if post is available

            #deleting
            del_response = c.post('/blog/1/delete', follow_redirects=True)
            self.assertEqual(request.path, '/blog')

            post_after = Post.query.all()
            # print("after deletion:",post_after)  checking if post is deleted
            self.assertEqual(post_after, [])
Example #14
0
def adduser():
    """
    Ask user for name, email address, and password (twice).
    Check to make sure the user is not already stored in the database.
    Make sure both passwords entered by user match.
    Finally, create the user object and add it to our database.
    """
    name = raw_input("Name: ")
    email = raw_input("Email: ")
    if session.query(User).filter_by(email=email).first():
        print "User with that email address already exists"
        return
    password = raw_input("Password: "******"Re-enter password: "******"Password: "******"Re-enter password: "******"""
        generate_password_hash function: 
        1) Function is used to hash our password
        2) Hashing - process that converts our plain text password
                     into a string of characters
        3) Passwords use only One-Way-Hashes: process works in one direction
    """
    session.add(user)
    session.commit()
Example #15
0
 def create_admin_user(self):
     new_user = User(name='Superman',
                     email='*****@*****.**',
                     password=bcrypt.generate_password_hash('allpowerful'),
                     role='admin')
     db.session.add(new_user)
     db.session.commit()
Example #16
0
def forge():
    name = 'erfei'
    movies = [
        {
            'title': '大赢家',
            'year': '2020'
        },
        {
            'title': '海贼王-顶上战争',
            'year': '2019'
        },
        {
            'title': '囧妈',
            'year': '2020'
        },
        {
            'title': '速度与激情8',
            'year': '2019'
        },
        {
            'title': '战狼',
            'year': '2019'
        },
    ]
    user = User(name=name)
    db.session.add(user)
    for m in movies:
        movie = Movies(title=m['title'], year=m['year'])
        db.session.add(movie)
    db.session.commit()
    click.echo('导入数据库')
Example #17
0
def signup(request):
        if request.method=='POST':
            name=request.POST['email']
            password=request.POST['pass']
            user = User(username=name,password=password)
            user.save()
            return HttpResponseRedirect(reverse('blog:blogindex'))
 def test_invalid_reset_token(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_reset_token()
     self.assertFalse(User.reset_password(token + 'a', 'horse'))
     self.assertTrue(u.verify_password('cat'))
 def test_valid_email_change_token(self):
     u = User(email='*****@*****.**', password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_email_change_token('*****@*****.**')
     self.assertTrue(u.change_email(token))
     self.assertTrue(u.email == '*****@*****.**')
 def test_valid_reset_token(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_reset_token()
     self.assertTrue(User.reset_password(token, 'dog'))
     self.assertTrue(u.verify_password('dog'))
 def test_expired_confirmation_token(self):
     u = User(password='******')
     db.session.add(u)
     db.session.commit()
     token = u.generate_confirmation_token(1)
     time.sleep(2)
     self.assertFalse(u.confirm(token))
Example #22
0
def newsletter():
    form = NewsLetterForm()
    if form.validate_on_submit():
        user = User(username=form.username.data, email=form.email.data)
        flash('Your email has been received. You will be recieving weekly blog newsletters. Thank you.', 'success')
        return redirect(url_for('main.home'))
    return render_template('newsletter.html', form=form, title='Subscribe To Newsletters')
Example #23
0
def init_db():
    db.create_all()

    user1 = User(username="******")
    user1.set_password("test")

    user2 = User(username="******")
    user2.set_password("password2")

    post1 = Post(title="Post by user 1", contents="Contens from user 1", user=user1)
    post2 = Post(title="Post by user 2", contents="Contens from user 2", user=user2)

    db.session.add(user1, user2)
    db.session.add(post1, post2)

    db.session.commit()
Example #24
0
def admin_user():
    email = raw_input('输入管理员邮箱:')
    inp = 1
    while inp == 1:
        pwd1 = raw_input('输入管理员密码:')
        pwd2 = raw_input('确认管理员密码:')
        if pwd1 == pwd2:
            inp = 0
        else:
            print '两次输入的不一样,请重新输入'
            continue
    print '--------------------------------'
    print '输入的管理员邮箱为:%s' % email
    print '输入的管理员密码为:%s' % pwd1
    print '--------------------------------'
    if raw_input('确定(Y)').lower() == 'y':
        pwd = User.make_random_passwd(email=email)
        user = User(email=pwd['email'],
                    role=1,
                    nicename=email,
                    passwd=pwd['pwdmd5'],
                    is_locked=0,
                    salt=pwd['salt'])
        user.register_date = datetime.now(),
        db.session.add(user)
        db.session.commit()
        print '保存设置...[确定]'
    else:
        exit()
Example #25
0
def register(request):
    if request.method == "POST":
        uf = UserForm(request.POST)
        if uf.is_valid():
            #获取表单信息
            username = uf.cleaned_data['username']
            password = uf.cleaned_data['password']
            email = uf.cleaned_data['email']
            #将表单写入数据库
            user = User()
            user.username = username
            user.password = password
            user.email = email
            user.save()
            # print 'register info:',user.username,user.password,user.email

            #返回注册成功页面
            return render_to_response('success.html', {
                'username': username,
                'action': '注册'
            },
                                      context_instance=RequestContext(request))
    else:
        uf = UserForm()
    return render_to_response('register.html', {'uf': uf})
Example #26
0
 def test_user_check(self):
     pwd = User.make_random_passwd(email='*****@*****.**')
     user = User(email=pwd['email'], passwd=pwd['pwdmd5'], salt=pwd['salt'])
     db.session.add(user)
     db.session.commit()
     is_true = User.user_check('*****@*****.**', pwd['pwd'])
     assert is_true == True
Example #27
0
 def create_user(self):
     hashed_password = bcrypt.generate_password_hash(
         self.password.data).decode('utf-8')
     user = User(username=self.username.data,
                 email=self.email.data,
                 password=hashed_password)
     user.save_to_db()
Example #28
0
def sign_up():
    """SIGN-UP page which allows users to register."""
    if current_user.is_authenticated:
        flash("You have alredy logged in.")
        return redirect(url_for("app.home"))
    else:
        form = SignUpForm()
        if form.validate_on_submit():
            user = User.query.filter_by(username=form.username.data).first()
            if user is None:
                user = User(username=form.username.data)
                user.set_password(form.password.data)
                db.session.add(user)
                db.session.commit()
                login_user(user)
                flash("Sucessfully registered.")
                flash("Sucessfully logged in.")
                return redirect(url_for("app.home"))

            flash("A user already exists with that email address.")

        return render_template(
            "sign-up.html",
            form=form,
            page_title="SIGN-UP",
            page_color="black",
        )
Example #29
0
 def setUp(self):
     self.new_user = User(firstname='wahala', password='******')
     self.new_comment = Comment(id=12345,
                                post_id='2',
                                user_id='2',
                                post_comment='what food do you eat food?',
                                user=self.new_user)
 def test_user_role(self):
     u = User(email='*****@*****.**', password='******')
     self.assertTrue(u.can(Permission.FOLLOW))
     self.assertTrue(u.can(Permission.COMMENT))
     self.assertTrue(u.can(Permission.WRITE))
     self.assertFalse(u.can(Permission.MODERATE))
     self.assertFalse(u.can(Permission.ADMIN))