eventcally/forms/organization.py
2020-07-19 18:51:37 +02:00

38 lines
2.0 KiB
Python

from flask_babelex import lazy_gettext
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed
from wtforms import StringField, SubmitField, DecimalField, TextAreaField, FormField, SelectField
from wtforms.fields.html5 import EmailField, TelField
from wtforms.validators import DataRequired, Optional
import decimal
from models import Location
class OrganizationLocationForm(FlaskForm):
street = StringField(lazy_gettext('Street'), validators=[Optional()])
postalCode = StringField(lazy_gettext('Postal code'), validators=[DataRequired()])
city = StringField(lazy_gettext('City'), validators=[DataRequired()])
state = StringField(lazy_gettext('State'), validators=[Optional()])
latitude = DecimalField(lazy_gettext('Latitude'), places=16, validators=[Optional()])
longitude = DecimalField(lazy_gettext('Longitude'), places=16, validators=[Optional()])
class BaseOrganizationForm(FlaskForm):
name = StringField(lazy_gettext('Name'), validators=[DataRequired()])
url = StringField(lazy_gettext('Link URL'), validators=[Optional()])
email = EmailField(lazy_gettext('Email'), validators=[Optional()])
phone = TelField(lazy_gettext('Phone'), validators=[Optional()])
logo_file = FileField(lazy_gettext('Logo'), validators=[FileAllowed(['jpg', 'jpeg', 'png'], lazy_gettext('Images only!'))])
legal_name = TextAreaField(lazy_gettext('Legal name'), validators=[Optional()])
location = FormField(OrganizationLocationForm)
def populate_obj(self, obj):
for name, field in self._fields.items():
if name == 'location' and not obj.location:
obj.location = Location()
field.populate_obj(obj, name)
class CreateOrganizationForm(BaseOrganizationForm):
submit = SubmitField(lazy_gettext("Create organization"))
admin_unit_id = SelectField(lazy_gettext('Admin unit'), validators=[DataRequired()], coerce=int)
class UpdateOrganizationForm(BaseOrganizationForm):
submit = SubmitField(lazy_gettext("Update organization"))