from crispy_forms.helper import FormHelper from crispy_forms.layout import Column, HTML, Layout, Row, Submit from django import forms from django.utils.translation import gettext_lazy as _ from .models import RoutingTemplate class RoutingTemplateForm(forms.ModelForm): class Meta: model = RoutingTemplate fields = [ 'name', 'wireguard_instance', 'default_template', 'route_type', 'custom_routes', 'allow_peer_custom_routes', ] def __init__(self, *args, **kwargs): self.user = kwargs.pop('user', None) super().__init__(*args, **kwargs) self.fields['name'].label = _("Name") self.fields['wireguard_instance'].label = _("WireGuard Instance") self.fields['default_template'].label = _("Default Template") self.fields['route_type'].label = _("Route Type") self.fields['custom_routes'].label = _("Custom Routes") self.fields['allow_peer_custom_routes'].label = _("Allow Peer Custom Routes") back_label = _("Back") delete_label = _("Delete") self.helper = FormHelper() self.helper.form_method = 'post' if self.instance.pk: delete_html = f"{delete_label}" else: delete_html = '' self.helper.layout = Layout( Row( Column('name', css_class='form-group col-md-6 mb-0'), Column('wireguard_instance', css_class='form-group col-md-6 mb-0'), css_class='form-row' ), Row( Column('route_type', css_class='form-group col-md-12 mb-0'), css_class='form-row' ), Row( Column('custom_routes', css_class='form-group col-md-12 mb-0'), css_class='form-row' ), Row( Column('default_template', css_class='form-group col-md-6 mb-0'), Column('allow_peer_custom_routes', css_class='form-group col-md-6 mb-0'), css_class='form-row' ), Row( Column( Submit('submit', _('Save'), css_class='btn btn-success'), HTML(f' {back_label} '), HTML(delete_html), css_class='col-md-12'), css_class='form-row' ) )