from flask_wtf import FlaskForm from wtforms import DateField, IntegerField, DecimalField, SubmitField, TextAreaField from wtforms.validators import Length from .checks import * class CreateServiceForm(FlaskForm): date = DateField('Date of Pitstop') odometer = IntegerField('Odometer (km)', validators=[odometer_date_check]) costs = DecimalField('Costs (€, overall)', places=2, validators=[costs_check]) description = TextAreaField('Description', validators=[Length(1, 4096)]) submit = SubmitField(label='Do it!') pitstops = [] def set_pitstops(self, pitstops): self.pitstops = pitstops 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 elif len(self.pitstops) > 0: self.odometer.default = self.pitstops[-1].odometer else: self.odometer.default = 0 if self.costs.data: self.costs.default = self.costs.data else: self.costs.default = 0 if self.description.data: self.description.default = self.description.data class DeleteServiceForm(FlaskForm): submit = SubmitField(label='Really delete this service!') class EditServiceForm(FlaskForm): 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 if self.description.data: self.description.default = self.description.data