64 lines
1.6 KiB
Python
64 lines
1.6 KiB
Python
from typing import Any
|
|
from flask_wtf import FlaskForm
|
|
from wtforms import (
|
|
StringField,
|
|
SubmitField,
|
|
HiddenField,
|
|
FloatField,
|
|
URLField,
|
|
TextAreaField,
|
|
)
|
|
|
|
from wtforms.validators import DataRequired
|
|
|
|
|
|
class NewWishlist(FlaskForm):
|
|
title = StringField("Title", validators=[DataRequired()])
|
|
description = TextAreaField("Description", validators=[DataRequired()])
|
|
submit = SubmitField("Create")
|
|
|
|
|
|
# Each submit needs a different page fot it to work on the same page.
|
|
class DeleteWishlist(FlaskForm):
|
|
wl_del_submit = SubmitField("Delete wishlist")
|
|
|
|
|
|
class EditWishlistInfo(FlaskForm):
|
|
title = StringField("Title")
|
|
description = TextAreaField("Description")
|
|
wl_edit_submit = SubmitField("Submit")
|
|
|
|
|
|
class ResetWishlistUrls(FlaskForm):
|
|
wl_reset_submit = SubmitField("Reset urls")
|
|
|
|
|
|
class NewItem(FlaskForm):
|
|
it_new_title = StringField("Title", validators=[DataRequired()])
|
|
description = StringField("Description", validators=[DataRequired()])
|
|
price = FloatField("Price", validators=[DataRequired()])
|
|
url = URLField("Url", validators=[DataRequired()])
|
|
image = URLField("Image url", validators=[DataRequired()])
|
|
it_new_submit = SubmitField("Submit")
|
|
|
|
|
|
class CheckItem(FlaskForm):
|
|
num = HiddenField()
|
|
|
|
|
|
class DeleteItem(FlaskForm):
|
|
index = HiddenField()
|
|
|
|
|
|
def parseHiddenIndex(field: HiddenField, array: list[Any]) -> int | None:
|
|
try:
|
|
if field.data == None or field.data == "":
|
|
raise ValueError()
|
|
|
|
index = int(field.data)
|
|
if index > len(array):
|
|
raise ValueError()
|
|
|
|
return index - 1
|
|
except ValueError:
|
|
return None
|