mirror of
https://github.com/bookwyrm-social/bookwyrm.git
synced 2025-02-18 12:05:18 +00:00
36 lines
1.3 KiB
Python
36 lines
1.3 KiB
Python
""" Overrides django's default form class """
|
|
from collections import defaultdict
|
|
from django.forms import ModelForm
|
|
from django.forms.widgets import Textarea
|
|
|
|
|
|
class StyledForm(ModelForm):
|
|
"""add css classes to the forms"""
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
css_classes = defaultdict(lambda: "")
|
|
css_classes["text"] = "input"
|
|
css_classes["password"] = "input"
|
|
css_classes["email"] = "input"
|
|
css_classes["number"] = "input"
|
|
css_classes["checkbox"] = "checkbox"
|
|
css_classes["textarea"] = "textarea"
|
|
# pylint: disable=super-with-arguments
|
|
super().__init__(*args, **kwargs)
|
|
for visible in self.visible_fields():
|
|
if hasattr(visible.field.widget, "input_type"):
|
|
input_type = visible.field.widget.input_type
|
|
if isinstance(visible.field.widget, Textarea):
|
|
input_type = "textarea"
|
|
visible.field.widget.attrs["rows"] = 5
|
|
visible.field.widget.attrs["class"] = css_classes[input_type]
|
|
|
|
|
|
class CustomForm(StyledForm):
|
|
"""Check permissions on save"""
|
|
|
|
# pylint: disable=arguments-differ
|
|
def save(self, request, *args, **kwargs):
|
|
"""Save and check perms"""
|
|
self.instance.raise_not_editable(request.user)
|
|
return super().save(*args, **kwargs)
|