from flask_wtf import Form from wtforms import DateField, IntegerField, DecimalField, SubmitField, TextAreaField from wtforms.validators import Length from .checks import * class CreateServiceForm(Form): date = DateField('Date of Service', validators=[date_check]) odometer = IntegerField('Odometer (km)', validators=[odometer_check]) costs = DecimalField('Costs (€, overall)', places=2, validators=[costs_check]) description = TextAreaField('Description', validators=[Length(1, 4096)]) submit = SubmitField(label='Do it!') last_pitstop = None def set_pitstop(self, last_pitstop): self.last_pitstop = last_pitstop def preinit_with_data(self): if self.date.data: self.date.default = self.date.data else: self.date.default = date.today() if self.odometer.data: self.odometer.default = self.odometer.data else: self.odometer.default = self.last_pitstop.odometer if self.costs.data: self.costs.default = self.costs.data else: self.costs.default = 0 class DeleteServiceForm(Form): submit = SubmitField(label='Really delete this service!') class EditServiceForm(Form): date = DateField('Date of Service', validators=[date_check]) odometer = IntegerField('Odometer (km)', validators=[odometer_check]) costs = DecimalField('Costs (€, overall)', places=2, validators=[costs_check]) description = TextAreaField('Description', validators=[Length(1, 4096)]) submit = SubmitField(label='Do it!') last_pitstop = None same_odometer_allowed = True def set_pitstop(self, last_pitstop): self.last_pitstop = last_pitstop def preinit_with_data(self): if self.date.data: self.date.default = self.date.data else: self.date.default = date.today() if self.odometer.data: self.odometer.default = self.odometer.data else: self.odometer.default = self.last_pitstop.odometer if self.costs.data: self.costs.default = self.costs.data else: self.costs.default = 0