You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
5.1 KiB
79 lines
5.1 KiB
from flask_wtf import FlaskForm
|
|
from flask_wtf.file import FileField, FileAllowed
|
|
from wtforms import StringField, SubmitField, URLField, IntegerField, SelectField
|
|
from wtforms.validators import DataRequired, Length, Email, EqualTo, ValidationError
|
|
import minibase.blueprints.company.utils as companyUtils
|
|
import minibase.blueprints.geography.utils as geoUtils
|
|
import minibase.blueprints.main.utils as mainUtils
|
|
import minibase.theme as theme
|
|
from wtforms_alchemy import ModelForm
|
|
from minibase.blueprints.company.models import Companies
|
|
from minibase.blueprints.sensor.models import nbiotDevice
|
|
from minibase.blueprints.user.models import Users
|
|
|
|
|
|
class companyForm(FlaskForm): # Defines the form class to be used for the user update
|
|
name = StringField('Name', validators=[DataRequired(), Length(min=3, max=100)])
|
|
website = URLField('Website', validators=[DataRequired(), Length(min=3, max=100)])
|
|
country_id = SelectField('Country', validators=[DataRequired()], render_kw={"hx-get": "/geography/get_cities", "hx-target": "#city_id"})
|
|
city_id = SelectField('City', validators=[DataRequired()], render_kw={"hx-get": "/geography/get_states", "hx-target": "#state_id"})
|
|
state_id = SelectField('State', validators=[])
|
|
post_code = IntegerField('Post', validators=[DataRequired()])
|
|
street = StringField('Street', validators=[DataRequired()])
|
|
street_no = IntegerField('No', validators=[DataRequired()])
|
|
industry_id = SelectField('Industry', validators=[DataRequired()])
|
|
legal_entity_id = SelectField('Legal Entity', validators=[DataRequired()])
|
|
type_id = SelectField('Type', validators=[DataRequired()])
|
|
relation_id = SelectField('Relation', validators=[DataRequired()])
|
|
status_id = SelectField('Status', validators=[DataRequired()])
|
|
comment = StringField('Comment', validators=[DataRequired(), Length(min=3, max=400)])
|
|
|
|
image_file = FileField('Update company Picture', validators=[FileAllowed(['jpg', 'png'])])
|
|
|
|
submit = SubmitField()
|
|
|
|
def populate_for_updating(self, company):
|
|
self.submit.label.text = "Update"
|
|
self.country_id.choices = [(row.id, row.name) for row in geoUtils.queryCountryNamesWithDefault(company.country_id)]
|
|
|
|
# This is for the htmx implementation. please be careful how of there is data we first take from the database an then from the from(containing th htmx call)
|
|
if self.country_id.data:
|
|
self.city_id.choices = [(row.id, row.name) for row in geoUtils.queryCityNamesWithCountryId(self.country_id.data)]
|
|
self.state_id.choices = [(row.id, row.name) for row in geoUtils.queryStateNamesWithCountryId(self.country_id.data)]
|
|
else:
|
|
self.city_id.choices = [(row.id, row.name) for row in geoUtils.queryCityNamesWithCountryIdWithDefault(company.city_id, company.country_id)]
|
|
self.state_id.choices = [(row.id, row.name) for row in geoUtils.queryStateNamesWithCountryIdWithDefault(company.state_id, company.country_id)]
|
|
|
|
self.industry_id.choices = [(row.id, row.name) for row in mainUtils.queryIndustryNamesWithDefault(company.industry_id)]
|
|
self.legal_entity_id.choices = [(row.id, row.name) for row in companyUtils.queryLegalEntityNamesWithDefault(company.legal_entity_id)]
|
|
self.type_id.choices = [(row.id, row.name) for row in companyUtils.queryTypeNamesWithDefault(company.type_id)]
|
|
self.relation_id.choices = [(row.id, row.name) for row in companyUtils.queryRelationNamesWithDefault(company.relation_id)]
|
|
self.status_id.choices = [(row.id, row.name) for row in companyUtils.queryStatusNamesWithDefault(company.status_id)]
|
|
|
|
def populate_for_adding(self, company):
|
|
self.submit.label.text = "Add"
|
|
del self.image_file
|
|
|
|
|
|
self.country_id.choices = [(row.id, row.name) for row in geoUtils.queryCountryNames()]
|
|
|
|
# This is for the htmx implementation. please be careful how of there is data we switch the funtion needed
|
|
if self.country_id.data:
|
|
self.city_id.choices = [(row.id, row.name) for row in geoUtils.queryCityNamesWithCountryId(self.country_id.data)]
|
|
self.state_id.choices = [(row.id, row.name) for row in geoUtils.queryStateNamesWithCountryId(self.country_id.data)]
|
|
else:
|
|
self.city_id.choices = []
|
|
self.state_id.choices = []
|
|
|
|
self.industry_id.choices = [(row.id, row.name) for row in mainUtils.queryIndustryNames()]
|
|
self.legal_entity_id.choices = [(row.id, row.name) for row in companyUtils.queryLegalEntityNames()]
|
|
self.type_id.choices = [(row.id, row.name) for row in companyUtils.queryTypeNames()]
|
|
self.relation_id.choices = [(row.id, row.name) for row in companyUtils.queryRelationNames()]
|
|
self.status_id.choices = [(row.id, row.name) for row in companyUtils.queryStatusNames()]
|
|
|
|
# Queries to be made in order to validate the form : If username exists
|
|
def validate_companyName(self, company_name):
|
|
company = companyUtils.queryByNameFirst(company_name)
|
|
if company:
|
|
raise ValidationError('That username is taken please choose another one')
|