@ -29,6 +29,7 @@ class BaseForm(forms.Form):
form_attrs = { } # Holds additional attributes, that can be used in the template
has_required_fields = False # Automatically set. Triggers hint rendering in templates
show_cancel_btn = True
label_input_ratio = ( 3 , 9 ) # used for col-sm-xy in the template. Must sum up to 12. Specify on inheriting forms
def __init__ ( self , * args , * * kwargs ) :
self . instance = kwargs . pop ( " instance " , None )
@ -42,12 +43,26 @@ class BaseForm(forms.Form):
break
self . check_for_recorded_instance ( )
self . __check_valid_label_input_ratio ( )
@abstractmethod
def save ( self ) :
# To be implemented in subclasses!
pass
def __check_valid_label_input_ratio ( self ) :
""" Checks whether the configured label-input ratio is valid
If not valid an AssertionError will be raised .
The valid sum of label - input ratio is defined by bootstrap ' s column layout system.
Returns :
"""
ratio = self . label_input_ratio [ 0 ] + self . label_input_ratio [ 1 ]
if ratio != 12 :
raise AssertionError ( f " Label-input ratio on form must sum up to 12! It ' s { self . label_input_ratio } " )
def disable_form_field ( self , field : str ) :
"""
Disables a form field for user editing