# Copyright (C) 2020-2021 Soleta Networks # # This program is free software: you can redistribute it and/or modify it under # the terms of the GNU Affero General Public License as published by the # Free Software Foundation; either version 3 of the License, or # (at your option) any later version. from wtforms import ( Form, SubmitField, HiddenField, SelectField, BooleanField, IntegerField, StringField, RadioField, FormField, FieldList, DecimalField, TextAreaField ) from wtforms.validators import InputRequired from flask_wtf import FlaskForm from flask_babel import lazy_gettext as _l from flask_babel import _ class GenericForm(FlaskForm): ips = HiddenField() ids = HiddenField() server = HiddenField() submit = SubmitField(label=_l('Submit')) class WOLForm(FlaskForm): ips = HiddenField() wol_type = SelectField(label=_l('Type'), choices=[('broadcast', 'Broadcast'), ('unicast', 'Unicast')]) submit = SubmitField(label=_l('Submit')) class PartitionForm(FlaskForm): partition = IntegerField(label=_l('Partition'), render_kw={'readonly': True}, default=1) part_type = SelectField(label=_l('Type'), choices=[('LINUX', 'Linux'), ('NTFS', 'NTFS'), ('CACHE', 'CACHE'), ('EFI', 'EFI'), ('DATA', 'DATA'), ('LINUX-SWAP', 'LINUX-SWAP'), ('EXTENDED', 'EXTENDED'), ('FAT32', 'FAT32'), ('LINUX-LVM', 'LINUX-LVM'), ('LINUX-RAID', 'LINUX-RAID'), ('WIN-RECOV', 'WIN-RECOV'), ('HNTFS', 'HNTFS'), ('HFAT32', 'HFAT32'), ('HNTFS-WINRE', 'HNTFS-WINRE'), ('EMPTY', 'Empty')], default='EMPTY') fs = SelectField(label=_l('Filesystem'), choices=[('EXT4', 'EXT4'), ('NTFS', 'NTFS'), ('CACHE', 'CACHE'), ('LINUX-SWAP', 'LINUX-SWAP'), ('FAT32', 'FAT32'), ('EMPTY', 'Empty')], default='EMPTY') size = IntegerField(label=_l('Size (KB)')) class SelectClientForm(FlaskForm): ips = HiddenField() selected_client = SelectField(label=_l('Select one client as reference to ' 'define the partition scheme')) ok = SubmitField(label=_l('Ok')) class SetupForm(FlaskForm): ips = HiddenField() disk = HiddenField() disk_type = SelectField(label=_l('Type'), choices=[('MSDOS', 'MBR'), ('GPT', 'GPT')]) partitions = FieldList(FormField(PartitionForm), min_entries=1, max_entries=10) class HardwareForm(FlaskForm): ips = HiddenField() refresh = SubmitField(label=_l('Refresh')) class SoftwareForm(FlaskForm): ips = HiddenField() os = SelectField(label=_l('Partition'), choices=[]) view = SubmitField(label=_l('View')) update = SubmitField(label=_l('Update')) class SessionForm(FlaskForm): ips = HiddenField() os = RadioField(label=_l('Session'), choices=[]) class CacheImage(FlaskForm): selected = BooleanField() image_name = HiddenField() clients = HiddenField() class CacheForm(FlaskForm): ips = HiddenField() images = FieldList(FormField(CacheImage)) class ImageRestoreForm(FlaskForm): ips = HiddenField() partition = SelectField(label=_l('Partition'), choices=[]) image = SelectField(label=_l('Image'), choices=[]) method = SelectField(label=_l('Method'), choices=[('TIPTORRENT', 'TIPTORRENT')]) restore = SubmitField(label=_l('Restore')) class RepoForm(FlaskForm): server = HiddenField() repo_id = HiddenField() name = StringField(label=_l('Name')) ip = StringField(label=_l('IP')) submit = SubmitField(label=_l('Submit')) class FolderForm(FlaskForm): folder_id = HiddenField() server = HiddenField() room = HiddenField() center = HiddenField() name = StringField(label=_l('Name')) submit = SubmitField(label=_l('Submit')) class ClientDetailsForm(FlaskForm): server = HiddenField() name = StringField(label=_l('Name')) ip = StringField(label=_l('IP'), validators=[InputRequired()]) mac = StringField(label=_l('MAC'), validators=[InputRequired()]) serial_number = StringField(label=_l('Serial Number')) livedir = SelectField(label=_l('ogLive'), choices=[('ogLive', 'Default'),]) remote = BooleanField(label=_l('Remote')) maintenance = BooleanField(label=_l('Maintenance')) repo = SelectField(label=_l('Repository')) room = SelectField(label=_l('Room')) folder_id = HiddenField() boot = SelectField(label=_l('Boot Mode')) submit = SubmitField(label=_l('Submit')) class ImportClientsForm(FlaskForm): server = HiddenField() room = SelectField(label=_l('Room')) repo = SelectField(label=_l('Repository')) dhcpd_conf = TextAreaField(label=_l('dhcpd configuration')) import_btn = SubmitField(label=_l('Import')) class BootModeForm(FlaskForm): ips = HiddenField() boot = SelectField(label=_l('Boot mode')) ok = SubmitField(label=_l('Ok')) class OgliveForm(FlaskForm): ips = HiddenField() oglive = SelectField(label=_l('ogLive')) ok = SubmitField(label=_l('Ok')) class ImageCreateForm(FlaskForm): ip = HiddenField() os = SelectField(label=_l('Partition'), choices=[]) name = StringField(label=_l('Image name'), validators=[InputRequired()]) description = StringField(label=_l('Description')) repository = SelectField(label=_l('Repository'), choices=[], validators=[InputRequired()]) create = SubmitField(label=_l('Create')) class ImageUpdateForm(FlaskForm): ip = HiddenField() os = SelectField(label=_l('Partition'), choices=[]) image = SelectField(label=_l('Image'), choices=[]) backup = BooleanField(label=_l('Backup')) update = SubmitField(label=_l('Update')) class CenterForm(FlaskForm): server = SelectField(label=_l('Server'), validators=[InputRequired()]) center = HiddenField() name = StringField(label=_l('Center name'), validators=[InputRequired()]) comment = StringField(label=_l('Comment')) submit = SubmitField(label=_l('Submit')) class DeleteCenterForm(FlaskForm): server = HiddenField() center = HiddenField() submit = SubmitField(label=_l('Submit')) class RoomForm(FlaskForm): server = HiddenField() room = HiddenField() center = SelectField(label=_l('Center'), validators=[InputRequired()]) name = StringField(label=_l('Room name'), validators=[InputRequired()]) netmask = StringField(label=_l('Netmask'), validators=[InputRequired()]) gateway = StringField(label=_l('Gateway'), validators=[InputRequired()]) folder_id = HiddenField() submit = SubmitField(label=_l('Submit')) class DeleteRoomForm(FlaskForm): server = HiddenField() room = HiddenField() submit = SubmitField(label=_l('Submit')) class ImageDetailsForm(FlaskForm): name = StringField(label=_l('Name')) description = StringField(label=_l('Description')) size = DecimalField(label=_l('Size (MiB)')) datasize = DecimalField(label=_l('Datasize (MiB)')) modified = StringField(label=_l('Last update')) permissions = StringField(label=_l('Permissions')) software_id = StringField(label=_l('Software id')) class ServerForm(FlaskForm): name = StringField(label=_l('Name'), validators=[InputRequired()]) ip = StringField(label=_l('IP'), validators=[InputRequired()]) port = StringField(label=_l('Port'), validators=[InputRequired()]) api_token = StringField(label=_l('API token'), validators=[InputRequired()]) submit = SubmitField(label=_l('Submit')) class DeleteRepositoryForm(FlaskForm): repository = SelectField(label=_l('Repository'), validators=[InputRequired()]) submit = SubmitField(label=_l('Submit'))