summaryrefslogtreecommitdiffstats
path: root/victoria/admin
diff options
context:
space:
mode:
authorLibravatar cel <cel@blos.sm>2022-05-12 15:08:19 +0100
committerLibravatar cel <cel@blos.sm>2022-05-12 15:08:19 +0100
commit8e7527ae1045f49cd326a394e0f07d95e64a5b6f (patch)
treed12c8d9edae8916a49da554f488a2a6ee6a75294 /victoria/admin
parentd473ffe12f72109bc304ca341571a10cc4cf8f38 (diff)
downloadvictoria-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.pycbin0 -> 156 bytes
-rw-r--r--victoria/admin/__pycache__/routes.cpython-310.pycbin0 -> 972 bytes
-rw-r--r--victoria/admin/forms.py41
-rw-r--r--victoria/admin/routes.py107
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
new file mode 100644
index 0000000..b58c293
--- /dev/null
+++ b/victoria/admin/__pycache__/__init__.cpython-310.pyc
Binary files differ
diff --git a/victoria/admin/__pycache__/routes.cpython-310.pyc b/victoria/admin/__pycache__/routes.cpython-310.pyc
new file mode 100644
index 0000000..d87b7c0
--- /dev/null
+++ b/victoria/admin/__pycache__/routes.cpython-310.pyc
Binary files differ
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')
+
+
+