push
This commit is contained in:
120
app/forms/admin.py
Normal file
120
app/forms/admin.py
Normal file
@@ -0,0 +1,120 @@
|
||||
from flask_wtf import FlaskForm
|
||||
from wtforms import (
|
||||
BooleanField,
|
||||
HiddenField,
|
||||
IntegerField,
|
||||
PasswordField,
|
||||
SelectField,
|
||||
StringField,
|
||||
SubmitField,
|
||||
TextAreaField,
|
||||
)
|
||||
from wtforms.validators import DataRequired, Email, NumberRange, Optional
|
||||
|
||||
|
||||
class AdminUserForm(FlaskForm):
|
||||
email = StringField('E-mail', validators=[DataRequired(), Email()])
|
||||
name = StringField('Imię i nazwisko', validators=[DataRequired()])
|
||||
role = SelectField('Rola globalna', choices=[('admin', 'Admin'), ('operator', 'Operator'), ('readonly', 'Readonly')], validators=[DataRequired()])
|
||||
password = PasswordField('Hasło', validators=[Optional()])
|
||||
company_id = SelectField('Dodaj dostęp do firmy', coerce=int, validators=[Optional()])
|
||||
access_level = SelectField('Poziom dostępu do firmy', choices=[('full', 'Pełny'), ('readonly', 'Tylko odczyt')], validators=[Optional()])
|
||||
force_password_change = BooleanField('Wymuś zmianę hasła')
|
||||
is_blocked = BooleanField('Zablokowany')
|
||||
submit = SubmitField('Zapisz użytkownika')
|
||||
|
||||
|
||||
class AccessForm(FlaskForm):
|
||||
company_id = SelectField('Firma', coerce=int, validators=[DataRequired()])
|
||||
access_level = SelectField('Poziom dostępu', choices=[('full', 'Pełny'), ('readonly', 'Tylko odczyt')], validators=[DataRequired()])
|
||||
submit = SubmitField('Zapisz dostęp')
|
||||
|
||||
|
||||
class PasswordResetForm(FlaskForm):
|
||||
password = PasswordField('Nowe hasło', validators=[DataRequired()])
|
||||
force_password_change = BooleanField('Wymuś zmianę po logowaniu')
|
||||
submit = SubmitField('Resetuj hasło')
|
||||
|
||||
|
||||
class AdminCompanyForm(FlaskForm):
|
||||
name = StringField('Nazwa firmy', validators=[Optional()])
|
||||
tax_id = StringField('NIP', validators=[Optional()])
|
||||
regon = StringField('REGON', validators=[Optional()])
|
||||
address = StringField('Adres', validators=[Optional()])
|
||||
bank_account = StringField('Numer rachunku bankowego', validators=[Optional()])
|
||||
is_active = BooleanField('Aktywna')
|
||||
sync_enabled = BooleanField('Automatyczne pobieranie')
|
||||
sync_interval_minutes = StringField('Interwał sync (min)', validators=[Optional()])
|
||||
note = TextAreaField('Opis / notatka', validators=[Optional()])
|
||||
mock_mode = BooleanField('Włącz tryb mock dla tej firmy')
|
||||
submit = SubmitField('Zapisz firmę')
|
||||
fetch_submit = SubmitField('Pobierz dane z CEIDG')
|
||||
|
||||
def validate(self, extra_validators=None):
|
||||
if not super().validate(extra_validators=extra_validators):
|
||||
return False
|
||||
is_fetch = bool(self.fetch_submit.data and not self.submit.data)
|
||||
if is_fetch:
|
||||
if not (self.tax_id.data or '').strip():
|
||||
self.tax_id.errors.append('Podaj NIP, aby pobrać dane z CEIDG.')
|
||||
return False
|
||||
return True
|
||||
if not (self.name.data or '').strip():
|
||||
self.name.errors.append('To pole jest wymagane.')
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
class CeidgConfigForm(FlaskForm):
|
||||
environment = HiddenField(default='production')
|
||||
api_key = PasswordField('API KEY CEIDG', validators=[Optional()])
|
||||
submit = SubmitField('Zapisz konfigurację CEIDG')
|
||||
|
||||
|
||||
class LogCleanupForm(FlaskForm):
|
||||
days = IntegerField('Usuń logi starsze niż (dni)', validators=[DataRequired(), NumberRange(min=1, max=3650)])
|
||||
submit = SubmitField('Wyczyść logi')
|
||||
|
||||
|
||||
class DatabaseBackupForm(FlaskForm):
|
||||
submit = SubmitField('Wykonaj kopię bazy')
|
||||
|
||||
class GlobalMailSettingsForm(FlaskForm):
|
||||
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')
|
||||
submit = SubmitField('Zapisz SMTP globalne')
|
||||
|
||||
|
||||
class GlobalNotificationSettingsForm(FlaskForm):
|
||||
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', validators=[Optional()])
|
||||
enabled = BooleanField('Włącz globalne powiadomienia')
|
||||
submit = SubmitField('Zapisz Pushover globalnie')
|
||||
|
||||
|
||||
class GlobalNfzSettingsForm(FlaskForm):
|
||||
enabled = BooleanField('Włącz moduł NFZ globalnie')
|
||||
submit = SubmitField('Zapisz NFZ globalnie')
|
||||
|
||||
|
||||
class GlobalKsefDefaultsForm(FlaskForm):
|
||||
environment = SelectField('Domyślne środowisko KSeF', choices=[('prod', 'PROD'), ('test', 'TEST')], validators=[Optional()])
|
||||
auth_mode = SelectField('Domyślny tryb autoryzacji', choices=[('token', 'Token'), ('certificate', 'Certyfikat')])
|
||||
client_id = StringField('Domyślny Client ID', validators=[Optional()])
|
||||
submit = SubmitField('Zapisz domyślne parametry KSeF')
|
||||
|
||||
|
||||
class SharedCompanyKsefForm(FlaskForm):
|
||||
environment = SelectField('Środowisko współdzielonego profilu', 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_name = StringField('Nazwa certyfikatu', validators=[Optional()])
|
||||
certificate_data = PasswordField('Treść certyfikatu / base64', validators=[Optional()])
|
||||
submit = SubmitField('Zapisz współdzielony profil KSeF')
|
||||
Reference in New Issue
Block a user