From 2f920f3b6f39c47f6eed03486545250cc3314613 Mon Sep 17 00:00:00 2001 From: finn Date: Sun, 4 Aug 2024 09:40:09 -0700 Subject: [PATCH] mgt c8 finish --- backend/Dockerfile | 0 backend/app/forms.py | 3 ++- backend/app/routes.py | 47 ++++++++++++++++++++++++++++++--- backend/app/templates/user.html | 22 ++++++++++++--- backend/config.py | 4 +-- backend/dbdb.sh | 0 6 files changed, 66 insertions(+), 10 deletions(-) mode change 100755 => 100644 backend/Dockerfile mode change 100644 => 100755 backend/dbdb.sh diff --git a/backend/Dockerfile b/backend/Dockerfile old mode 100755 new mode 100644 diff --git a/backend/app/forms.py b/backend/app/forms.py index 21dadf7..4825c86 100644 --- a/backend/app/forms.py +++ b/backend/app/forms.py @@ -43,6 +43,7 @@ class EditProfileForm(FlaskForm): if user is not None: raise ValidationError('Please use a different username.') - +class EmptyForm(FlaskForm): + submit = SubmitField('Submit') diff --git a/backend/app/routes.py b/backend/app/routes.py index e3723b1..921db5a 100644 --- a/backend/app/routes.py +++ b/backend/app/routes.py @@ -5,7 +5,7 @@ from datetime import datetime, timezone import sqlalchemy as sa from app import app, db -from app.forms import LoginForm, RegistrationForm, EditProfileForm +from app.forms import LoginForm, RegistrationForm, EditProfileForm, EmptyForm from app.models import User @app.before_request @@ -18,7 +18,7 @@ def before_request(): @app.route('/index') @login_required def index(): - app.logger.info("AAAAAAAAAAAAAAAAAAAAA") + app.logger.info('@@@@@@@@@@@@@@@@@ INFO LOG TEST INDEX') user = {'username': 'Finnaa'} posts = [ @@ -75,12 +75,12 @@ def register(): @login_required def user(username): user = db.first_or_404(sa.select(User).where(User.username == username)) - #app.logger.info('PROFILE DEBUG ###############################') posts = [ {'author': user, 'body': 'Test1'}, {'author': user, 'body': 'Test2?'} ] - return render_template('user.html', user=user, posts=posts) + form = EmptyForm() + return render_template('user.html', user=user, posts=posts, form=form) @app.route('/edit_profile', methods=['GET', 'POST']) @login_required @@ -97,3 +97,42 @@ def edit_profile(): form.about_me.data = current_user.about_me return render_template('edit_profile.html', title='Edit Profile', form=form) +@app.route('/follow/', methods=['POST']) +@login_required +def follow(username): + form = EmptyForm() + if form.validate_on_submit(): + user = db.session.scalar(sa.select(User).where(User.username == username)) + if user is None: + flash(f'User {username} not found.') + return redirect(url_for('index')) + if user == current_user: + flash('You cannot follow yourself.') + return redirect(url_for('user', username=username)) + current_user.follow(user) + db.session.commit() + flash(f'You are now following {username}.') + return redirect(url_for('user', username=username)) + else: + return redirect(url_for('index')) + +@app.route('/unfollow/', methods=['POST']) +@login_required +def unfollow(username): + form = EmptyForm() + if form.validate_on_submit(): + user = db.session.scalar(sa.select(User).where(User.username == username)) + if user is None: + flash(f'User {username} not found.') + return redirect(url_for('index')) + if user == current_user: + flash('You cannot unfollow yourself.') + return redirect(url_for('user', username=username)) + current_user.unfollow(user) + db.session.commit() + flash(f'You have unfollowed {username}.') + return redirect(url_for('user', username=username)) + else: + return redirect(url_for('index')) + + diff --git a/backend/app/templates/user.html b/backend/app/templates/user.html index fbfe27e..8c3d26f 100644 --- a/backend/app/templates/user.html +++ b/backend/app/templates/user.html @@ -10,12 +10,28 @@

Udebug: {{ user }}

{% if user.about_me %}

{{ user.about_me }}

{% endif %} {% if user.last_seen %}

Last activity:{{ user.last_seen }}

{% endif %} + {% if user == current_user %} +

Edit Profile

+ {% elif not current_user.is_following(user) %} +

+

+ {{ form.hidden_tag() }} + {{ form.submit(value='Follow') }} +
+

+ {% else %} +

+

+ {{ form.hidden_tag() }} + {{ form.submit(value='Unfollow') }} +
+

+ {% endif %} + + - {% if user == current_user %} -

Edit Profile

- {% endif %}
{% for post in posts %} {% include '_post.html' %} diff --git a/backend/config.py b/backend/config.py index e1efeb1..d05ad60 100644 --- a/backend/config.py +++ b/backend/config.py @@ -5,8 +5,8 @@ basedir = os.path.abspath(os.path.dirname(__file__)) class Config: SECRET_KEY = os.environ.get('FLASK_SECRET_KEY') or 'flasksk' - SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'zapp.db') - #SQLALCHEMY_DATABASE_URI = 'mariadb+mariadbconnector://flasku:' + os.environ.get('MYSQL_PASSWORD') + '@db:3306/flask' + #SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'zapp.db') + SQLALCHEMY_DATABASE_URI = 'mariadb+mariadbconnector://flasku:' + os.environ.get('MYSQL_PASSWORD') + '@db:3306/flask' #MAIL_SERVER = 'pmb' MAIL_SERVER = '' diff --git a/backend/dbdb.sh b/backend/dbdb.sh old mode 100644 new mode 100755