kpi-dashboard / forms.py
Admin
Initial HF deploy
04477e7
Raw
History Blame
4.28 kB
from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed, FileRequired
from wtforms import StringField, PasswordField, SelectField, TextAreaField, FloatField, DateField
from wtforms.validators import DataRequired, Length, Email, Optional
class LoginForm(FlaskForm):
username = StringField('Логин', validators=[DataRequired(), Length(1, 80)])
password = PasswordField('Пароль', validators=[DataRequired()])
class UserForm(FlaskForm):
username = StringField('Логин', validators=[DataRequired(), Length(1, 80)])
full_name = StringField('ФИО', validators=[DataRequired(), Length(1, 200)])
email = StringField('Email', validators=[Optional(), Email()])
password = PasswordField('Пароль', validators=[Optional(), Length(4, 100)])
role = SelectField('Роль', choices=[
('junior_expert', 'Младший эксперт'),
('employee', 'Эксперт'),
('senior_expert', 'Старший эксперт'),
('sm', 'Руководитель'),
('guest', 'Гость')
], default='employee')
senior_expert_id = SelectField('Старший эксперт', coerce=int, choices=[], default=0)
grade = SelectField('Грейд', choices=[
('', '---'),
('SE', 'SE'),
('JSE', 'JSE'),
('SSE', 'SSE'),
('SM', 'SM'),
('Lead', 'Lead')
], default='')
position = SelectField('Должность', choices=[
('', '---'),
('младший эксперт', 'Младший эксперт'),
('эксперт', 'Эксперт'),
('старший эксперт', 'Старший эксперт'),
('руководитель', 'Руководитель'),
], default='')
project_start_date = DateField('Дата начала работы', validators=[Optional()])
phone = StringField('Телефон', validators=[Optional(), Length(0, 30)])
telegram = StringField('Telegram', validators=[Optional(), Length(0, 100)])
emergency_contact = StringField('Контакт для связи (экстр.)', validators=[Optional(), Length(0, 200)])
emergency_contact_phone = StringField('Телефон экстр. контакта', validators=[Optional(), Length(0, 30)])
previous_review_rating = StringField('Предыдущая оценка (TellentReview)', validators=[Optional(), Length(0, 50)])
class ExcelUploadForm(FlaskForm):
file = FileField('Excel файл', validators=[
FileRequired(),
FileAllowed(['xlsx', 'xls'], 'Только Excel файлы (.xlsx, .xls)')
])
kpi_name = StringField('Название KPI', validators=[DataRequired(), Length(1, 200)])
description = TextAreaField('Описание', validators=[Optional()])
class PdfUploadForm(FlaskForm):
file = FileField('PDF файл', validators=[
FileRequired(),
FileAllowed(['pdf'], 'Только PDF файлы')
])
description = TextAreaField('Описание', validators=[Optional()])
class KpiTargetForm(FlaskForm):
target_value = FloatField('Целевое значение', validators=[Optional()])
unit = StringField('Единица измерения', validators=[Optional(), Length(0, 50)])
class TaskForm(FlaskForm):
title = StringField('Название', validators=[DataRequired(), Length(1, 300)])
description = TextAreaField('Описание', validators=[Optional()])
assigned_to = SelectField('Назначить', coerce=int, choices=[])
priority = SelectField('Приоритет', choices=[
('low', 'Низкий'),
('medium', 'Средний'),
('high', 'Высокий')
], default='medium')
due_date = DateField('Срок до', validators=[Optional()])
comment = TextAreaField('Комментарий', validators=[Optional()])
class TrainingForm(FlaskForm):
title = StringField('Название обучения', validators=[DataRequired(), Length(1, 300)])
description = TextAreaField('Описание', validators=[Optional()])
hours = FloatField('Часы', validators=[Optional()])
date = DateField('Дата', validators=[Optional()])
file = FileField('Файл (PDF, документ)')