from flask import current_app from flask_wtf import FlaskForm from wtforms import (StringField, PasswordField, BooleanField, SubmitField, EmailField, IntegerField, DateField, SelectField, SelectMultipleField, FieldList, FormField, FloatField, TextAreaField) from wtforms.validators import DataRequired, Length, Email, NumberRange, Optional, ValidationError, InputRequired import pytz class LicenseTierForm(FlaskForm): name = StringField('Name', validators=[DataRequired(), Length(max=50)]) version = StringField('Version', validators=[DataRequired(), Length(max=50)]) start_date = DateField('Start Date', id='form-control datepicker', validators=[DataRequired()]) end_date = DateField('End Date', id='form-control datepicker', validators=[Optional()]) basic_fee_d = FloatField('Basic Fee ($)', validators=[InputRequired(), NumberRange(min=0)]) basic_fee_e = FloatField('Basic Fee (€)', validators=[InputRequired(), NumberRange(min=0)]) max_storage_mb = IntegerField('Max Storage (MiB)', validators=[DataRequired(), NumberRange(min=1)]) additional_storage_price_d = FloatField('Additional Storage Fee ($)', validators=[InputRequired(), NumberRange(min=0)]) additional_storage_price_e = FloatField('Additional Storage Fee (€)', validators=[InputRequired(), NumberRange(min=0)]) additional_storage_bucket = IntegerField('Additional Storage Bucket Size (MiB)', validators=[DataRequired(), NumberRange(min=1)]) included_embedding_mb = IntegerField('Included Embeddings (MiB)', validators=[DataRequired(), NumberRange(min=1)]) additional_embedding_price_d = FloatField('Additional Embedding Fee ($)', validators=[InputRequired(), NumberRange(min=0)]) additional_embedding_price_e = FloatField('Additional Embedding Fee (€)', validators=[InputRequired(), NumberRange(min=0)]) additional_embedding_bucket = IntegerField('Additional Embedding Bucket Size (MiB)', validators=[DataRequired(), NumberRange(min=1)]) included_interaction_tokens = IntegerField('Included Embedding Tokens', validators=[DataRequired(), NumberRange(min=1)]) additional_interaction_token_price_d = FloatField('Additional Interaction Token Fee ($)', validators=[InputRequired(), NumberRange(min=0)]) additional_interaction_token_price_e = FloatField('Additional Interaction Token Fee (€)', validators=[InputRequired(), NumberRange(min=0)]) additional_interaction_bucket = IntegerField('Additional Interaction Bucket Size', validators=[DataRequired(), NumberRange(min=1)]) standard_overage_embedding = FloatField('Standard Overage Embedding (%)', validators=[DataRequired(), NumberRange(min=0)], default=0) standard_overage_interaction = FloatField('Standard Overage Interaction (%)', validators=[DataRequired(), NumberRange(min=0)], default=0) class LicenseForm(FlaskForm): start_date = DateField('Start Date', id='form-control datepicker', validators=[DataRequired()]) end_date = DateField('End Date', id='form-control datepicker', validators=[DataRequired()]) currency = StringField('Currency', validators=[Optional(), Length(max=20)]) yearly_payment = BooleanField('Yearly Payment', default=False) basic_fee = FloatField('Basic Fee', validators=[InputRequired(), NumberRange(min=0)]) max_storage_mb = IntegerField('Max Storage (MiB)', validators=[DataRequired(), NumberRange(min=1)]) additional_storage_price = FloatField('Additional Storage Token Fee', validators=[InputRequired(), NumberRange(min=0)]) additional_storage_bucket = IntegerField('Additional Storage Bucket Size (MiB)', validators=[DataRequired(), NumberRange(min=1)]) included_embedding_mb = IntegerField('Included Embedding Tokens (MiB)', validators=[DataRequired(), NumberRange(min=1)]) additional_embedding_price = FloatField('Additional Embedding Token Fee', validators=[InputRequired(), NumberRange(min=0)]) additional_embedding_bucket = IntegerField('Additional Embedding Bucket Size (MiB)', validators=[DataRequired(), NumberRange(min=1)]) included_interaction_tokens = IntegerField('Included Interaction Tokens', validators=[DataRequired(), NumberRange(min=1)]) additional_interaction_token_price = FloatField('Additional Interaction Token Fee', validators=[InputRequired(), NumberRange(min=0)]) additional_interaction_bucket = IntegerField('Additional Interaction Bucket Size', validators=[DataRequired(), NumberRange(min=1)]) overage_embedding = FloatField('Overage Embedding (%)', validators=[DataRequired(), NumberRange(min=0)], default=0) overage_interaction = FloatField('Overage Interaction (%)', validators=[DataRequired(), NumberRange(min=0)], default=0)