mirror of
https://github.com/viewflow/viewflow.git
synced 2026-03-13 10:32:34 +08:00
Changes sync
This commit is contained in:
@@ -2,6 +2,12 @@
|
||||
Changelog
|
||||
=========
|
||||
|
||||
2.3.x GIT VERSION
|
||||
-----------------
|
||||
|
||||
- Add viewset get_form_class/get_create_form_class/get_update_form_class to allow per-request form customization for CRUD Views
|
||||
|
||||
|
||||
2.2.9 2025-01-08
|
||||
----------------
|
||||
|
||||
|
||||
@@ -5,19 +5,19 @@
|
||||
# 'COMM_LICENSE', which is part of this source code package.
|
||||
|
||||
from enum import Enum
|
||||
from typing import List, Set, Tuple
|
||||
from typing import List, Set, Tuple, Union
|
||||
from django.db.models import Choices
|
||||
from .base import State, StateDescriptor, Transition
|
||||
from .typing import StateValue
|
||||
|
||||
|
||||
def get_state_name(state_value):
|
||||
def get_state_name(state_value: StateValue) -> str:
|
||||
if isinstance(state_value, Enum):
|
||||
return str(state_value.value)
|
||||
return str(state_value)
|
||||
|
||||
|
||||
def get_state_label(state_value):
|
||||
def get_state_label(state_value: StateValue) -> str:
|
||||
if isinstance(state_value, Choices):
|
||||
return state_value.label
|
||||
elif isinstance(state_value, Enum):
|
||||
|
||||
@@ -65,16 +65,30 @@ class CreateModelView(
|
||||
if self.viewset is not None and hasattr(self.viewset, "get_queryset"):
|
||||
return self.viewset.get_queryset(self.request)
|
||||
return None
|
||||
|
||||
def get_form_widgets(self):
|
||||
if self.form_widgets is not None:
|
||||
return self.form_widgets
|
||||
elif self.viewset and hasattr(self.viewset, "get_create_form_widgets"):
|
||||
return self.viewset.get_create_form_widgets(self.request)
|
||||
elif self.viewset and hasattr(self.viewset, "get_form_widgets"):
|
||||
return self.viewset.get_form_widgets(self.request)
|
||||
return None
|
||||
|
||||
def get_form_class(self):
|
||||
if self.form_class is None:
|
||||
if self.form_class is not None:
|
||||
return self.form_class
|
||||
elif self.viewset and hasattr(self.viewset, "get_create_form_class"):
|
||||
return self.viewset.get_create_form_class(self.request)
|
||||
elif self.viewset and hasattr(self.viewset, "get_form_class"):
|
||||
return self.viewset.get_form_class(self.request)
|
||||
else:
|
||||
return modelform_factory(
|
||||
self.model,
|
||||
form=ModelForm,
|
||||
fields=self.fields,
|
||||
widgets=self.form_widgets,
|
||||
widgets=self.get_form_widgets(),
|
||||
)
|
||||
return self.form_class
|
||||
|
||||
def get_template_names(self):
|
||||
"""
|
||||
|
||||
@@ -75,16 +75,30 @@ class UpdateModelView(
|
||||
if self.viewset is not None and hasattr(self.viewset, "get_queryset"):
|
||||
return self.viewset.get_queryset(self.request)
|
||||
return None
|
||||
|
||||
def get_form_widgets(self):
|
||||
if self.form_widgets is not None:
|
||||
return self.form_widgets
|
||||
elif self.viewset and hasattr(self.viewset, "get_update_form_widgets"):
|
||||
return self.viewset.get_update_form_widgets(self.request)
|
||||
elif self.viewset and hasattr(self.viewset, "get_form_widgets"):
|
||||
return self.viewset.get_form_widgets(self.request)
|
||||
return None
|
||||
|
||||
def get_form_class(self):
|
||||
if self.form_class is None:
|
||||
if self.form_class is not None:
|
||||
return self.form_class
|
||||
elif self.viewset and hasattr(self.viewset, "get_update_form_class"):
|
||||
return self.viewset.get_update_form_class(self.request)
|
||||
elif self.viewset and hasattr(self.viewset, "get_form_class"):
|
||||
return self.viewset.get_form_class(self.request)
|
||||
else:
|
||||
return modelform_factory(
|
||||
self.model,
|
||||
form=ModelForm,
|
||||
fields=self.fields,
|
||||
widgets=self.form_widgets,
|
||||
widgets=self.get_form_widgets(),
|
||||
)
|
||||
return self.form_class
|
||||
|
||||
def get_object(self):
|
||||
pk = self.kwargs.get(self.pk_url_kwarg)
|
||||
|
||||
Reference in New Issue
Block a user