diff --git a/auth.py b/auth.py index c76b6f8..ec62b7a 100644 --- a/auth.py +++ b/auth.py @@ -34,8 +34,8 @@ def login(): flash('Please check your login details and try again.') return redirect(url_for('auth.login')) - login_user(user, remember=form.remember.data) - return redirect(url_for('auth.index')) + login_user(user, remember=form.remember_me.data) + return redirect(url_for('main.index')) return render_template('pages/auth/login.html', form=form) diff --git a/forms.py b/forms.py index e87149f..4478136 100644 --- a/forms.py +++ b/forms.py @@ -1,4 +1,4 @@ -from wtforms import Form, BooleanField, StringField, PasswordField, validators +from wtforms import Form, BooleanField, StringField, PasswordField, TextAreaField, validators from validators import NoProfanity @@ -22,11 +22,11 @@ class LoginForm(Form): class EditProfileForm(Form): name = RegistrationForm.name - about_me = StringField('About Me', [validators.Optional(), NoProfanity()]) + about_me = StringField('About Me', [validators.Optional(), NoProfanity()], description='Tell us about yourself',) class NewPostForm(Form): - text = StringField('Text', [validators.Length(min=15, max=1000), NoProfanity()]) + text = TextAreaField('Text', [validators.Length(min=15, max=1000), NoProfanity()], description='Express yourself.') class NewCommentForm(Form): diff --git a/route_forms.py b/route_forms.py index 1dc5778..23afa7d 100644 --- a/route_forms.py +++ b/route_forms.py @@ -28,21 +28,6 @@ def edit_profile_post(username): return redirect(url_for('main.edit_user', username=username)) -@blueprint.route('/feed/new', methods=['POST']) -@login_required -def new_post(): - form = NewPostForm(request.form) - - if form.validate(): - post = Post(author=current_user.id, text=form.text.data) - db.session.add(post) - db.session.commit() - - return redirect(url_for('main.view_post', post_id=post.id)) - else: - redirect(url_for('main.feed')) - - @blueprint.route('/feed//comment', methods=['POST']) @login_required def add_comment(post_id: int): diff --git a/routes.py b/routes.py index b238d35..1fae06f 100644 --- a/routes.py +++ b/routes.py @@ -1,7 +1,9 @@ -from flask import Blueprint, redirect, render_template, url_for +from flask import Blueprint, redirect, render_template, url_for, request from flask_login import current_user, login_required from models import User, Post, Comment +from forms import NewPostForm +from database import db blueprint = Blueprint('main', __name__) @@ -28,11 +30,20 @@ def browse(): return render_template('pages/browse.html', users=users) -@blueprint.route('/feed') +@blueprint.route('/feed', methods=['GET', 'POST']) def feed(): posts = Post.query.all() authors = [User.query.get_or_404(post.author) for post in posts] - return render_template('pages/feed.html', posts_and_authors=zip(posts, authors)) + form = NewPostForm(request.form) + + if request.method == 'POST' and form.validate(): + post = Post(author=current_user.id, text=form.text.data) + db.session.add(post) + db.session.commit() + + return redirect(url_for('main.view_post', post_id=post.id)) + + return render_template('pages/feed.html', posts_and_authors=zip(posts, authors), form=form) @blueprint.route('/feed/') diff --git a/static/styles.css b/static/styles.css index b1e9fc4..5dc4646 100644 --- a/static/styles.css +++ b/static/styles.css @@ -216,20 +216,24 @@ nav .links li:not(:last-child)::after, footer .links li:not(:last-child)::after filter: drop-shadow(5px 7px 6px rgba(0, 0, 0, 0.2)); } -.profile-form { +.form { margin: 0 auto; width: 80%; } -.profile-form textarea { +.form textarea { margin: 0.5em auto; height: 10em; width: 100%; + resize: vertical; } -.profile-form button { +.form.post-form { + border: none; +} +.form button { margin: 0.3em auto; text-align: center; } -.profile-form label { +.form label { margin: 0.5em 0; } diff --git a/static/styles.css.map b/static/styles.css.map index 381f5ad..9cc537c 100644 --- a/static/styles.css.map +++ b/static/styles.css.map @@ -1 +1 @@ -{"version":3,"sourceRoot":"","sources":["styles.scss"],"names":[],"mappings":"AAAA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EAOE;;AALA;EAEE;;;AASJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAKJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AAMR;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAIA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;;AAMF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;;AAKF;EACE;EACA;EACA;EACA;;;AAMR;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAIJ;EAEE;EACA;EACA;;;AAMR;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EAKE;EACA;EACA;EAEA;EACA;EACA;;AAVA;EACE;;;AAaN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGF;EACE","file":"styles.css"} \ No newline at end of file +{"version":3,"sourceRoot":"","sources":["styles.scss"],"names":[],"mappings":"AAAA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EAOE;;AALA;EAEE;;;AASJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;;;AAKJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAIJ;EACE;;;AAGF;EACE;;;AAGF;EACE;;;AAIA;EACE;EACA;;AAEA;EACE;;AAEA;EACE;;;AAMR;EACE;EACA;;;AAGF;EACE;EACA;EACA;EACA;;;AAGF;EACE;;;AAIA;EACE;EACA;;;AAIJ;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;;;AAIJ;EACE;;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;;;AAMF;EACE;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EAGA;EACA;EACA;EACA;;AAKF;EACE;EACA;EACA;EACA;;;AAMR;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGF;EACE;;AAGF;EACE;EACA;;AAGF;EACE;;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAEA;EACE;EACA;;AAIJ;EAEE;EACA;EACA;;;AAMR;EACE;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;;;AAKN;EACE;EACA;;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EAME;EACA;EACA;EAEA;EACA;EACA;;AAXA;EACE;;;AAcN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EAEA;EACA;EACA;EACA;;;AAGF;EACE","file":"styles.css"} \ No newline at end of file diff --git a/static/styles.scss b/static/styles.scss index 7628592..0823544 100644 --- a/static/styles.scss +++ b/static/styles.scss @@ -256,7 +256,7 @@ nav, footer { } } -.profile-form { +.form { margin: 0 auto; width: 80%; @@ -264,6 +264,11 @@ nav, footer { margin: 0.5em auto; height: 10em; width: 100%; + resize: vertical; + } + + &.post-form { + border: none; } button { @@ -374,6 +379,7 @@ form { &[type="submit"] { width: 100%; } + //background: #ecf0f1; border: #ccc 1px solid; border-bottom: #ccc 2px solid; diff --git a/templates/macros.html b/templates/macros.html index f0212f9..c48b27f 100644 --- a/templates/macros.html +++ b/templates/macros.html @@ -1,6 +1,8 @@ -{% macro render_field(field) %} - {{ field.label }} - {{ field(**kwargs)|safe }} +{% macro render_field(field, show_label=True) %} + {% if show_label %} + {{ field.label }} + {% endif %} + {{ field(placeholder=field.description, **kwargs)|safe }} {% if field.errors %}