#20 Multiple laws
* improves w-100 handling for ModalForms * adds documentation strings
This commit is contained in:
		
							parent
							
								
									8a2bbb1fc2
								
							
						
					
					
						commit
						89c75d471b
					
				@ -412,10 +412,13 @@ class RunCheckForm(BaseModalForm):
 | 
			
		||||
        super().__init__(*args, **kwargs)
 | 
			
		||||
        self.form_title = _("Run check")
 | 
			
		||||
        self.form_caption = _("I, {} {}, confirm that all necessary control steps have been performed by myself.").format(self.user.first_name, self.user.last_name)
 | 
			
		||||
        # Disable automatic w-100 setting for this type of modal form. Looks kinda strange
 | 
			
		||||
        self.fields["confirm"].widget.attrs["class"] = ""
 | 
			
		||||
 | 
			
		||||
    def is_valid(self):
 | 
			
		||||
    def is_valid(self) -> bool:
 | 
			
		||||
        """ Perform a validity check based on quality_check() logic
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
            result (bool)
 | 
			
		||||
        """
 | 
			
		||||
        super_result = super().is_valid()
 | 
			
		||||
        # Perform check
 | 
			
		||||
        msgs = self.instance.quality_check()
 | 
			
		||||
@ -427,6 +430,11 @@ class RunCheckForm(BaseModalForm):
 | 
			
		||||
        return super_result and (len(msgs) == 0)
 | 
			
		||||
 | 
			
		||||
    def save(self):
 | 
			
		||||
        """ Saving logic
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        with transaction.atomic():
 | 
			
		||||
            user_action = UserActionLogEntry.objects.create(
 | 
			
		||||
                user=self.user,
 | 
			
		||||
 | 
			
		||||
@ -101,6 +101,37 @@ class BaseForm(forms.Form):
 | 
			
		||||
        for field in disabled_fields:
 | 
			
		||||
            self.disable_form_field(field)
 | 
			
		||||
 | 
			
		||||
    def add_widget_html_class(self, field: str, cls: str):
 | 
			
		||||
        """ Adds a HTML class string to the widget of a field
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            field (str): The field's name
 | 
			
		||||
            cls (str): The new class string
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        set_class = self.fields[field].widget.attrs.get("class", "")
 | 
			
		||||
        if cls in set_class:
 | 
			
		||||
            return
 | 
			
		||||
        else:
 | 
			
		||||
            set_class += " " + cls
 | 
			
		||||
        self.fields[field].widget.attrs["class"] = set_class
 | 
			
		||||
 | 
			
		||||
    def remove_widget_html_class(self, field: str, cls: str):
 | 
			
		||||
        """ Removes a HTML class string from the widget of a field
 | 
			
		||||
 | 
			
		||||
        Args:
 | 
			
		||||
            field (str): The field's name
 | 
			
		||||
            cls (str): The new class string
 | 
			
		||||
 | 
			
		||||
        Returns:
 | 
			
		||||
 | 
			
		||||
        """
 | 
			
		||||
        set_class = self.fields[field].widget.attrs.get("class", "")
 | 
			
		||||
        set_class = set_class.replace(cls, "")
 | 
			
		||||
        self.fields[field].widget.attrs["class"] = set_class
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class RemoveForm(BaseForm):
 | 
			
		||||
    check = forms.BooleanField(
 | 
			
		||||
@ -153,17 +184,16 @@ class BaseModalForm(BaseForm, BSModalForm):
 | 
			
		||||
    """
 | 
			
		||||
    is_modal_form = True
 | 
			
		||||
    render_submit = True
 | 
			
		||||
    full_width_fields = False
 | 
			
		||||
    template = "modal/modal_form.html"
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
    def __init__(self, full_width_fields: bool = True, *args, **kwargs):
 | 
			
		||||
        self.full_width_fields = full_width_fields
 | 
			
		||||
        super().__init__(*args, **kwargs)
 | 
			
		||||
        # Automatically add bootstrap w-100 class for maximum width of form fields in modals
 | 
			
		||||
        for key, val in self.fields.items():
 | 
			
		||||
            val.widget.attrs.update(
 | 
			
		||||
                {
 | 
			
		||||
                    "class": "w-100"
 | 
			
		||||
                }
 | 
			
		||||
            )
 | 
			
		||||
        if self.full_width_fields:
 | 
			
		||||
            # Automatically add bootstrap w-100 class for maximum width of form fields in modals
 | 
			
		||||
            for key, val in self.fields.items():
 | 
			
		||||
                self.add_widget_html_class(key, "w-100")
 | 
			
		||||
 | 
			
		||||
    def process_request(self, request: HttpRequest, msg_success: str = _("Object removed"), msg_error: str = FORM_INVALID, redirect_url: str = None):
 | 
			
		||||
        """ Generic processing of request
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user