Files
ksef_app/app/forms/settings.py
Mateusz Gruszczyński 35571df778 push
2026-03-13 11:03:13 +01:00

73 lines
4.1 KiB
Python

from flask_wtf import FlaskForm
from flask_wtf.file import FileAllowed, FileField
from wtforms import BooleanField, IntegerField, PasswordField, RadioField, SelectField, StringField, SubmitField
from wtforms.validators import DataRequired, Email, Optional
class KSeFSettingsForm(FlaskForm):
source_mode = RadioField('Źródło ustawień', choices=[('user', 'Moje ustawienia'), ('global', 'Profil współdzielony firmy')], default='user')
environment = SelectField(
'Środowisko KSeF',
choices=[('prod', 'PROD'), ('test', 'TEST')],
validators=[Optional()],
)
auth_mode = SelectField('Tryb autoryzacji', choices=[('token', 'Token'), ('certificate', 'Certyfikat')])
token = PasswordField('Token', validators=[Optional()])
client_id = StringField('Client ID', validators=[Optional()])
certificate_file = FileField('Certyfikat', validators=[Optional(), FileAllowed(['pem', 'crt', 'cer', 'p12', 'pfx'], 'Dozwolone: pem, crt, cer, p12, pfx')])
submit = SubmitField('Zapisz KSeF')
class MailSettingsForm(FlaskForm):
source_mode = RadioField('Źródło SMTP', choices=[('global', 'Użyj ustawień globalnych'), ('user', 'Podaj indywidualne ustawienia')], default='global')
server = StringField('SMTP host', validators=[Optional()])
port = StringField('SMTP port', validators=[Optional()])
username = StringField('SMTP login', validators=[Optional()])
password = PasswordField('SMTP hasło', validators=[Optional()])
sender = StringField('Nadawca', validators=[Optional(), Email()])
security_mode = SelectField('Zabezpieczenie połączenia', choices=[('tls', 'TLS / STARTTLS'), ('ssl', 'SSL'), ('none', 'Brak')], validators=[Optional()], default='tls')
test_recipient = StringField('Adres testowy', validators=[Optional(), Email()])
submit = SubmitField('Zapisz SMTP')
test_submit = SubmitField('Wyślij test maila')
class NotificationSettingsForm(FlaskForm):
source_mode = RadioField('Źródło Pushover', choices=[('global', 'Użyj ustawień globalnych'), ('user', 'Podaj indywidualne ustawienia')], default='global')
pushover_user_key = StringField('Pushover user key', validators=[Optional()])
pushover_api_token = PasswordField('Pushover API token', validators=[Optional()])
min_amount = StringField('Powiadom od kwoty', validators=[Optional()])
quiet_hours = StringField('Cichy harmonogram, np. 22:00-07:00', validators=[Optional()])
enabled = BooleanField('Włącz powiadomienia')
submit = SubmitField('Zapisz powiadomienia')
test_submit = SubmitField('Wyślij test Pushover')
class AppearanceSettingsForm(FlaskForm):
theme_preference = SelectField('Motyw interfejsu', choices=[('light', 'Jasny'), ('dark', 'Ciemny')], validators=[DataRequired()])
submit = SubmitField('Zapisz wygląd')
class CompanyForm(FlaskForm):
name = StringField('Nazwa firmy', validators=[DataRequired()])
tax_id = StringField('NIP', validators=[Optional()])
sync_enabled = BooleanField('Włącz harmonogram pobierania')
sync_interval_minutes = IntegerField('Interwał sync (min)', validators=[Optional()])
bank_account = StringField('Numer rachunku bankowego', validators=[Optional()])
read_only_mode = BooleanField('Tryb tylko odczyt (R/O)')
submit = SubmitField('Zapisz firmę')
class UserForm(FlaskForm):
email = StringField('E-mail', validators=[DataRequired(), Email()])
name = StringField('Imię i nazwisko', validators=[DataRequired()])
password = PasswordField('Hasło', validators=[Optional()])
role = SelectField('Rola globalna', choices=[('admin', 'Admin'), ('operator', 'Operator'), ('readonly', 'Readonly')])
company_id = SelectField('Firma', coerce=int, validators=[Optional()])
access_level = SelectField('Dostęp do firmy', choices=[('full', 'Pełny'), ('readonly', 'Tylko odczyt')])
submit = SubmitField('Dodaj / przypisz użytkownika')
class NfzModuleSettingsForm(FlaskForm):
source_mode = RadioField('Źródło konfiguracji NFZ', choices=[('global', 'Użyj ustawień globalnych'), ('user', 'Ustaw indywidualnie')], default='global')
enabled = BooleanField('Włącz moduł faktur NFZ')
submit = SubmitField('Zapisz moduł NFZ')