Пример #1
0
    def test_modify_post_from_db(self):
        """Tests that a Post Object can be modified and recommited."""
        self.add_post()
        post = Post.query.first()

        now = datetime.now()
        post.title = "Test Post"
        post.gfm_content = gfm("Test Content")
        post.created = now
        post.slug = slugify(post.title)

        tag = Tag("Test Tag")
        post.tags = [tag]
        
        cat = Category("Test Category")
        post.category = cat

        user = User("Test User")
        post.author = user

        self.add_post(post)
        post = Post.query.first()

        self.assertEquals(post.title, "Test Post")
        self.assertEquals(post.gfm_content, gfm("Test Content"))
        self.assertEquals(post.created, now)
        self.assertEquals(post.tags, [tag])
        self.assertEquals(post.slug, slugify(post.title))
        self.assertEquals(post.category, cat)
        self.assertEquals(post.author, user)

        self.remove_post(post)
Пример #2
0
def edit_profile():
  """
  Allow User to edit their profile info
  """
  form = EditForm(request.form)
  user = g.user
  if form.validate_on_submit():
    # Checking if someone is trying to change their email to another user's.
    otherUser = User.query.filter_by(netid=form.netid.data,
                                     email=form.email.data).first()

    # The user with the new netid and email either shouldn't exist or
    # should be the current user.
    if otherUser is not None and user != otherUser:
      flash(u'You seem to be trying to change your netid/email'
            ' to someone else\'s', 'error')
      return redirect(url_for('users.home'))

    user.name = form.name.data
    user.netid = form.netid.data
    user.email = form.email.data
    user.standing = form.standing.data
    user.major = form.major.data
    user.shirt_size = form.shirt_size.data
    user.description = gfm(form.description.data)
    
    db.session.add(user)
    db.session.commit()
    return redirect(url_for('users.home'))
  return render_template('users/edit.html', user=user, form=form)
Пример #3
0
def register():
  """
  Registration Form
  """
  form = RegisterForm(request.form)
  if form.validate_on_submit():
    # If netid and email are unique, create an user instance not yet
    # stored in the database
    user = User.query.filter_by(netid=form.netid.data,
                                email=form.email.data).first()
    if user:
      flash(u'NetID/Email already registred', 'error')
      return render_template("users/register.html", form=form)

    raw_signature = request.form['output']
    
    # Convert drawn signature to base64 encoded image.
    if raw_signature.find("data:image") == -1:
      PIL_image = s2i(
        raw_signature,
        input_image=os.path.abspath('acm_phoenix/static/packages/signpad2image'
                                    '/signpad2image/blanksig.png'),
        nosig_image=os.path.abspath('acm_phoenix/static/packages/signpad2image'
                                    '/signpad2image/nosig.png'))

      output =  StringIO.StringIO()
      PIL_image.save(output, format='PNG')
      sig_img = 'data:image/png;base64,' + base64.b64encode(output.getvalue())
      output.close()
    else:
      sig_img = raw_signature

    user = User(form.name.data, form.netid.data, form.email.data,
                form.standing.data, form.major.data,
                form.shirt_size.data, gfm(form.description.data), sig_img)
    user.member = True

    # Insert the record in our database and commit it
    db.session.add(user)
    db.session.commit()

    # Log the user in, as they now have an id
    session['user_id'] = user.id

    # flash will display a message to the user
    flash('Thanks for registering')
    
    # If user wants to pay membership now, redirect them to wepay.
    if form.reg_and_pay.data == True:
      response = wepay_membership_response(user)
      
      # Keep track of user's checkout_id for later lookup on wepay.
      user.wepay_checkout_id = response['checkout_id']
      db.session.add(user)
      db.session.commit()
      return redirect(response['checkout_uri'])
    else:
      # redirect user to the 'home' method of the user module.
      return redirect(url_for('users.home'))
  return render_template('users/register.html', form=form)
Пример #4
0
def edit_profile():
    """
  Allow User to edit their profile info
  """
    form = EditForm(request.form)
    user = g.user
    if form.validate_on_submit():
        # Checking if someone is trying to change their email to another user's.
        otherUser = User.query.filter_by(netid=form.netid.data,
                                         email=form.email.data).first()

        # The user with the new netid and email either shouldn't exist or
        # should be the current user.
        if otherUser is not None and user != otherUser:
            flash(
                u'You seem to be trying to change your netid/email'
                ' to someone else\'s', 'error')
            return redirect(url_for('users.home'))

        user.name = form.name.data
        user.netid = form.netid.data
        user.email = form.email.data
        user.standing = form.standing.data
        user.major = form.major.data
        user.shirt_size = form.shirt_size.data
        user.description = gfm(form.description.data)

        db.session.add(user)
        db.session.commit()
        return redirect(url_for('users.home'))
    return render_template('users/edit.html', user=user, form=form)
Пример #5
0
 def __init__(self, title='', gfm_content='', created=None, tags=[],
              slug=None, category=None, author=None):
     self.title = title
     self.gfm_content = gfm(gfm_content)
     self.created = created or datetime.now()
     self.tags = tags
     self.slug = slugify(title)
     self.category = category
     self.author = author
Пример #6
0
    def test_default_post_values(self):
        """Tests that the values for a default Post are as expected."""
        now = datetime.now()

        self.add_post()
        post = Post.query.first()
        later = datetime.now()

        self.assertEquals(post.title, '')
        self.assertEquals(post.gfm_content, gfm(''))
        self.assertEquals(post.slug, slugify(post.title))
        self.assertIsNone(post.author)
        self.assertIsNone(post.category)
        self.assertEquals(post.tags, [])
        self.assertGreaterEqual(post.created, now)
        self.assertLessEqual(post.created, later)
        self.remove_post(post)
Пример #7
0
    def test_create_post_with_ctor(self):
        """Tests the constructor for the Post Model."""
        now = datetime.now()
        tag = Tag("Test Tag")
        category = Category("Test Category")
        user = User("Test User")
        post = Post("Test Post", "## Test H2", now, [tag], None,
                    category, user)
        self.add_post(post)

        post = Post.query.first()

        self.assertEquals(post.title, "Test Post")
        self.assertEquals(post.gfm_content, gfm("## Test H2"))
        self.assertEquals(post.created, now)
        self.assertEquals(post.tags, [tag])
        self.assertEquals(post.slug, slugify(post.title))
        self.assertEquals(post.category, category)
        self.assertEquals(post.author, user)

        self.remove_post(post)
Пример #8
0
def register():
    """
  Registration Form
  """
    form = RegisterForm(request.form)
    if form.validate_on_submit():
        # If netid and email are unique, create an user instance not yet
        # stored in the database
        user = User.query.filter_by(netid=form.netid.data,
                                    email=form.email.data).first()
        if user:
            flash(u'NetID/Email already registred', 'error')
            return render_template("users/register.html", form=form)

        raw_signature = request.form['output']

        # Convert drawn signature to base64 encoded image.
        if raw_signature.find("data:image") == -1:
            PIL_image = s2i(raw_signature,
                            input_image=os.path.abspath(
                                'acm_phoenix/static/packages/signpad2image'
                                '/signpad2image/blanksig.png'),
                            nosig_image=os.path.abspath(
                                'acm_phoenix/static/packages/signpad2image'
                                '/signpad2image/nosig.png'))

            output = StringIO.StringIO()
            PIL_image.save(output, format='PNG')
            sig_img = 'data:image/png;base64,' + base64.b64encode(
                output.getvalue())
            output.close()
        else:
            sig_img = raw_signature

        user = User(form.name.data, form.netid.data, form.email.data,
                    form.standing.data, form.major.data, form.shirt_size.data,
                    gfm(form.description.data), sig_img)
        user.member = True

        # Insert the record in our database and commit it
        db.session.add(user)
        db.session.commit()

        # Log the user in, as they now have an id
        session['user_id'] = user.id

        # flash will display a message to the user
        flash('Thanks for registering')

        # If user wants to pay membership now, redirect them to wepay.
        if form.reg_and_pay.data == True:
            response = wepay_membership_response(user)

            # Keep track of user's checkout_id for later lookup on wepay.
            user.wepay_checkout_id = response['checkout_id']
            db.session.add(user)
            db.session.commit()
            return redirect(response['checkout_uri'])
        else:
            # redirect user to the 'home' method of the user module.
            return redirect(url_for('users.home'))
    return render_template('users/register.html', form=form)