mirror of
https://github.com/StefBuwalda/cal_counter.git
synced 2025-10-29 19:00:00 +00:00
Introduces a new add_meal_v2 blueprint with barcode scanning, item search, and improved meal logging UI. Adds user timezone support: login form now captures timezone, User model and database schema updated, and timezone is set on login. Refactors templates and forms to support these changes, and removes the old login template.
74 lines
2.1 KiB
Python
74 lines
2.1 KiB
Python
from flask_wtf import FlaskForm
|
||
from wtforms import (
|
||
StringField,
|
||
PasswordField,
|
||
SubmitField,
|
||
FloatField,
|
||
HiddenField,
|
||
)
|
||
from wtforms.validators import DataRequired, InputRequired, Optional
|
||
|
||
|
||
class SelectDateForm(FlaskForm):
|
||
date = HiddenField(validators=[DataRequired()])
|
||
submit = SubmitField("+ Add Item")
|
||
|
||
|
||
class LoginForm(FlaskForm):
|
||
username = StringField("Username", validators=[DataRequired()])
|
||
password = PasswordField("Password", validators=[DataRequired()])
|
||
timezone = HiddenField("Timezone", validators=[DataRequired()])
|
||
submit = SubmitField("Log in")
|
||
|
||
|
||
class ChangePasswordForm(FlaskForm):
|
||
current_password = PasswordField(
|
||
"Current password", validators=[DataRequired()]
|
||
)
|
||
new_password = PasswordField("New password", validators=[DataRequired()])
|
||
confirm_password = PasswordField(
|
||
"Confirm new password", validators=[DataRequired()]
|
||
)
|
||
submit = SubmitField("Change password")
|
||
|
||
|
||
class FoodItemForm(FlaskForm):
|
||
barcode = StringField("Barcode", validators=[Optional()])
|
||
name = StringField("Product Name", validators=[DataRequired()])
|
||
energy = FloatField(
|
||
"Energy per 100g",
|
||
validators=[InputRequired()],
|
||
render_kw={"inputmode": "decimal"},
|
||
)
|
||
protein = FloatField(
|
||
"protein per 100g",
|
||
validators=[InputRequired()],
|
||
render_kw={"inputmode": "decimal"},
|
||
)
|
||
carbs = FloatField(
|
||
"carbs per 100g",
|
||
validators=[InputRequired()],
|
||
render_kw={"inputmode": "decimal"},
|
||
)
|
||
sugar = FloatField(
|
||
"sugar per 100g",
|
||
validators=[Optional()],
|
||
render_kw={"inputmode": "decimal"},
|
||
)
|
||
fat = FloatField(
|
||
"fat per 100g",
|
||
validators=[InputRequired()],
|
||
render_kw={"inputmode": "decimal"},
|
||
)
|
||
saturated_fat = FloatField(
|
||
"saturated_fat per 100g",
|
||
validators=[Optional()],
|
||
render_kw={"inputmode": "decimal"},
|
||
)
|
||
submit = SubmitField("Add Item")
|
||
|
||
|
||
class FoodLogForm(FlaskForm):
|
||
amount = FloatField("amount of food (g/ml)", validators=[DataRequired()])
|
||
submit = SubmitField("Log Item")
|