diff options
author | 2022-05-12 15:08:19 +0100 | |
---|---|---|
committer | 2022-05-12 15:08:19 +0100 | |
commit | 8e7527ae1045f49cd326a394e0f07d95e64a5b6f (patch) | |
tree | d12c8d9edae8916a49da554f488a2a6ee6a75294 /victoria/admin | |
parent | d473ffe12f72109bc304ca341571a10cc4cf8f38 (diff) | |
download | victoria-flask.tar.gz victoria-flask.tar.bz2 victoria-flask.zip |
added routes to admin/routes.py and begun on admin formsflask
Diffstat (limited to '')
-rw-r--r-- | victoria/admin/__pycache__/__init__.cpython-310.pyc | bin | 0 -> 156 bytes | |||
-rw-r--r-- | victoria/admin/__pycache__/routes.cpython-310.pyc | bin | 0 -> 972 bytes | |||
-rw-r--r-- | victoria/admin/forms.py | 41 | ||||
-rw-r--r-- | victoria/admin/routes.py | 107 |
4 files changed, 131 insertions, 17 deletions
diff --git a/victoria/admin/__pycache__/__init__.cpython-310.pyc b/victoria/admin/__pycache__/__init__.cpython-310.pyc Binary files differnew file mode 100644 index 0000000..b58c293 --- /dev/null +++ b/victoria/admin/__pycache__/__init__.cpython-310.pyc diff --git a/victoria/admin/__pycache__/routes.cpython-310.pyc b/victoria/admin/__pycache__/routes.cpython-310.pyc Binary files differnew file mode 100644 index 0000000..d87b7c0 --- /dev/null +++ b/victoria/admin/__pycache__/routes.cpython-310.pyc diff --git a/victoria/admin/forms.py b/victoria/admin/forms.py index 5faad3b..f5c1648 100644 --- a/victoria/admin/forms.py +++ b/victoria/admin/forms.py @@ -1,8 +1,47 @@ from flask_wtf import FlaskForm from flask_wtf.file import FileAllowed, FileField -from wtforms import StringField, SubmitField, BooleanField +from wtforms import DateField, TextAreaField, StringField, SubmitField, BooleanField, PasswordField from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError from flask_login import current_user from victoria.models import Artist, Series, Work, Tag, License +class LoginForm(FlaskForm): + email = StringField('Email', + validators=[DataRequired(), Email()]) + submit = SubmitField('Send Login Code') + +class OTPForm(FlaskForm): + password = PasswordField('Password', validators=[DataRequired()]) + submit = SubmitField('Login') + +class UpdateArtistForm(FlaskForm): + username = StringField('Username', validators=[DataRequired(), Length(min=2, max=20)]) + email = StringField('Email', validators=[DataRequired(), Email()]) + name = StringField('Name', validators=[DataRequired(), Length(min=2, max=100)]) + picture = FileField('Update Picture', validators=[FileAllowed(['jpg', 'png', 'jpeg', 'gif'])]) + bio = TextAreaField('Bio') + submit = SubmitField('Update') + + def validate_username(self, username): + if username.data != current_user.username: + user = Artist.query.filter_by(username=username.data).first() + if user: + raise ValidationError('Username is taken, please choose a different one') + def validate_email(self, email): + if email.data != current_user.email: + user = Artist.query.filter_by(email=email.data).first() + if user: + raise ValidationError('Email is taken, please choose a different one') + +class WorkForm(FlaskForm): + title = StringField('Title', validators=[Length(min=2, max=120)]) + date = DateField('Date') + description = TextAreaField('Bio') + tags = StringField('Title', validators=[Length(min=2, max=120)]) + license = StringField('Title', validators=[Length(min=2, max=20)]) + +class MediaForm(FlaskForm): + media = FileField('Update Picture', validators=[FileAllowed(['jpg', 'png', 'jpeg', 'gif'])]) + alt_text = TextAreaField('Alt Text') + diff --git a/victoria/admin/routes.py b/victoria/admin/routes.py index e721075..55dbe1b 100644 --- a/victoria/admin/routes.py +++ b/victoria/admin/routes.py @@ -2,29 +2,104 @@ from flask import render_template, url_for, redirect, request, Blueprint from flask_login import login_user, current_user, logout_user, login_required from victoria import db from victoria.models import Artist, Work, Series, Tag, License -from victoria.admin.forms import -from victoria.admin.utils import send_otp_email +from victoria.admin.forms import LoginForm +#from victoria.admin.utils import send_otp_email admin = Blueprint('admin', __name__) @admin.route("/admin/login", methods=['GET', 'POST']) -@login_required -def admin_dashboard(): +def login(): + form = LoginForm() return render_template('admin.html', title='Admin Dashboard') -@admin.route("/admin", methods=['GET', 'POST']) -@admin.route("/admin/dashboard", methods=['GET', 'POST']) +@admin.route("/admin/login/<string:otp>") +def otp_login(otp): + return redirect(url_for('admin.dashboard')) + +@admin.route("/admin") +@admin.route("/admin/dashboard") @login_required -def admin_dashboard(): +def dashboard(): return render_template('admin.html', title='Admin Dashboard') - -@admin.route("/admin", methods=['GET', 'POST']) + +@admin.route("/admin/works") @login_required -def admin_dashboard(): - return render_template('admin.html', title='Admin Dashboard') - -@admin.route("/admin", methods=['GET', 'POST']) +def works(): + return render_template('admin/works.html', title='Works') + +@admin.route("/admin/work/new") @login_required -def admin_dashboard(): - return render_template('admin.html', title='Admin Dashboard') - +def new_work(): + return render_template('admin/new_work.html', title='New work') + +@admin.route("/admin/work/<int:work_id>") +@login_required +def edit_work(work_id): + return render_template('admin/work.html', title=work_title) + +@admin.route("/admin/work/<int:work_id>/delete", methods=['POST']) +@login_required +def delete_work(work_id): + flash('The work has been deleted.', 'success') + return redirect(url_for('admin.works')) + +@admin.route("/admin/series") +@login_required +def series(): + return render_template('admin/series.html', title='Series') + +@admin.route("/admin/series/new") +@login_required +def new_series(): + return render_template('admin/new_series.html', title='New Series') + +@admin.route("/admin/series/<int:series_id>") +@login_required +def edit_series(series_id): + return render_template('admin/edit_series.html', title=series_title) + +@admin.route("/admin/series/<int:series_id>/delete", methods=['POST']) +@login_required +def delete_series(series_id): + flash('The series has been deleted.', 'success') + return redirect(url_for('admin.series')) + +@admin.route("/admin/artist") +@login_required +def artist(): + return render_template('admin/edit_artist.html', title='Edit Artist Profile') + +@admin.route("/admin/tags") +@login_required +def tags(): + #list tags + return render_template('admin/list_tags.html', title='Tags') + +@admin.route("/admin/licenses") +@login_required +def licenses(): + return render_template('admin/licenses.html', title='Licences') + +@admin.route("/admin/license/new") +@login_required +def new_license(): + return render_template('admin/new_license.html', title='New License') + +@admin.route("/admin/license/<int:license_id>") +@login_required +def edit_license(license_id): + return render_template('admin/edit_license.html', title=license_title) + +@admin.route("/admin/license/<int:license_id>/delete", methods=['POST']) +@login_required +def delete_license(license_id): + flash('The license has been deleted.', 'success') + return redirect(url_for('admin.licenses')) + +@admin.route("/admin/settings") +@login_required +def settings(): + return render_template('admin/settings.html', title='Settings') + + + |