Skip to content

Commit ce318c9

Browse files
committed
实现了Json编辑器(JsonTextField)和密码生成Input(PasswordInputField)等组件,并且同时初步调整了组件目录结构,提高了代码的可读性。
1 parent 480756d commit ce318c9

18 files changed

+742
-379
lines changed

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "DjangoAsyncAdmin"
3-
version = "6.7.1"
3+
version = "6.7.2"
44
authors = [
55
{ name = "Sadam·Sadik", email = "1903249375@qq.com" },
66
]
@@ -17,7 +17,7 @@ classifiers = [
1717
"Homepage" = "https://haoke98.github.io/DjangoAsyncAdmin/"
1818
"Bug Tracker" = "https://github.com/Haoke98/DjangoAsyncAdmin/issues"
1919
"Documentation" = "https://haoke98.github.io/DjangoAsyncAdmin/"
20-
"Components Docs" = "https://haoke98.github.io/DjangoAsyncAdmin/"
20+
"Components Docs" = "https://haoke98.github.io/DjangoAsyncAdmin/components.html"
2121
"Demo" = "https://github.com/Haoke98/AllKeeper"
2222

2323
[build-system]

simplepro/components/fields.py renamed to simplepro/components/fields/__init__.py

Lines changed: 3 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,12 @@
1-
import uuid
21
from inspect import isfunction
32

4-
from django import forms
53
from django.conf import settings
6-
from django.core import exceptions
7-
from django.core.exceptions import ValidationError
84
from django.db import models
9-
from django.urls import reverse
105

116
from simplepro.components.widgets import *
12-
from simplepro.components import utils
13-
14-
15-
class RadioFormField(forms.fields.IntegerField):
16-
""" custom form field """
17-
18-
def __init__(self, *args, **kwargs):
19-
kwargs.update({
20-
'widget': RadioInput()
21-
})
22-
super(RadioFormField, self).__init__(*args, **kwargs)
23-
24-
25-
class RadioField(models.IntegerField):
26-
""" custom model field """
27-
28-
def __init__(self, *args, **kwargs):
29-
super(RadioField, self).__init__(*args, **kwargs)
30-
31-
def formfield(self, **kwargs):
32-
defaults = {
33-
'form_class': RadioFormField,
34-
}
35-
defaults.update(kwargs)
36-
r = super(RadioField, self).formfield(**defaults)
37-
38-
r.widget = RadioInput(choices=self.choices)
39-
return r
7+
from .radio_field import RadioField
8+
from .input_number_field import InputNumberField
9+
from .input_password_field import PasswordInputField
4010

4111

4212
class CheckboxFormField(forms.fields.CharField):
@@ -92,46 +62,6 @@ def formfield(self, **kwargs):
9262
return r
9363

9464

95-
class InputNumberFormField(forms.fields.IntegerField):
96-
""" custom form field """
97-
98-
def __init__(self, *args, **kwargs):
99-
kwargs.update({
100-
'widget': InputNumberInput(max_value=kwargs.get('max_value'), min_value=kwargs.get('min_value'))
101-
})
102-
super(InputNumberFormField, self).__init__(*args, **kwargs)
103-
104-
105-
class InputNumberField(models.IntegerField):
106-
"""
107-
InputNumberField
108-
document: https://simpleui.72wo.com/docs/simplepro/components.html
109-
"""
110-
max_value = None
111-
min_value = None
112-
113-
def __init__(self, *args, **kwargs):
114-
if 'max_value' in kwargs:
115-
max_value = kwargs.pop('max_value')
116-
self.max_value = max_value
117-
if 'min_value' in kwargs:
118-
min_value = kwargs.pop('min_value')
119-
self.min_value = min_value
120-
super(InputNumberField, self).__init__(*args, **kwargs)
121-
122-
def formfield(self, **kwargs):
123-
defaults = {
124-
'form_class': InputNumberFormField,
125-
'min_value': self.min_value,
126-
'max_value': self.max_value
127-
}
128-
defaults.update(kwargs)
129-
r = super(InputNumberField, self).formfield(**defaults)
130-
131-
r.widget = InputNumberInput(max_value=self.max_value, min_value=self.min_value)
132-
return r
133-
134-
13565
class SliderField(models.IntegerField):
13666
params = ['min_value', 'max_value', 'input_size', 'step', 'show_tooltip', 'vertical', 'height', 'width',
13767
'show_input']
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# _*_ codign:utf8 _*_
2+
"""====================================
3+
@Author:Sadam·Sadik
4+
@Email:1903249375@qq.com
5+
@Date:2023/11/15
6+
@Software: PyCharm
7+
@disc:
8+
======================================="""
9+
from django import forms
10+
from django.db import models
11+
from ..widgets import NumberInputWidget
12+
13+
14+
class InputNumberFormField(forms.fields.IntegerField):
15+
""" custom form field """
16+
17+
def __init__(self, *args, **kwargs):
18+
kwargs.update({
19+
'widget': NumberInputWidget(max_value=kwargs.get('max_value'), min_value=kwargs.get('min_value'))
20+
})
21+
super(InputNumberFormField, self).__init__(*args, **kwargs)
22+
23+
24+
class InputNumberField(models.IntegerField):
25+
"""
26+
InputNumberField
27+
document: https://simpleui.72wo.com/docs/simplepro/components.html
28+
"""
29+
max_value = None
30+
min_value = None
31+
32+
def __init__(self, *args, **kwargs):
33+
if 'max_value' in kwargs:
34+
max_value = kwargs.pop('max_value')
35+
self.max_value = max_value
36+
if 'min_value' in kwargs:
37+
min_value = kwargs.pop('min_value')
38+
self.min_value = min_value
39+
super(InputNumberField, self).__init__(*args, **kwargs)
40+
41+
def formfield(self, **kwargs):
42+
defaults = {
43+
'form_class': InputNumberFormField,
44+
'min_value': self.min_value,
45+
'max_value': self.max_value
46+
}
47+
defaults.update(kwargs)
48+
r = super(InputNumberField, self).formfield(**defaults)
49+
50+
r.widget = NumberInputWidget(max_value=self.max_value, min_value=self.min_value)
51+
return r
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# _*_ codign:utf8 _*_
2+
"""====================================
3+
@Author:Sadam·Sadik
4+
@Email:1903249375@qq.com
5+
@Date:2023/11/15
6+
@Software: PyCharm
7+
@disc:
8+
======================================="""
9+
from django import forms
10+
from django.db import models
11+
12+
from simplepro.components.widgets import PasswordInputWidget
13+
14+
15+
class PasswordFormField(forms.CharField):
16+
fields = ['input_type', 'max_length', 'min_length'
17+
, 'placeholder', 'clearable', 'show_password', 'disabled', 'size',
18+
'prefix_icon', 'suffix_icon', 'rows', 'autocomplete', 'readonly',
19+
'max_value', 'min_value', 'step', 'resize', 'autofocus', 'show_word_limit', 'slot', 'slot_text', 'style',
20+
'pattern', 'encrypt']
21+
22+
def __init__(self,
23+
encrypt: str = None,
24+
pattern: str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-$%&@+!",
25+
*args, **kwargs):
26+
kwargs.update({
27+
'widget': PasswordInputWidget(pattern=pattern, encrypt=encrypt, **kwargs)
28+
})
29+
for f in self.fields:
30+
if f in kwargs:
31+
kwargs.pop(f)
32+
super(PasswordFormField, self).__init__(*args, **kwargs)
33+
34+
35+
class PasswordInputField(models.CharField):
36+
""" custom model field """
37+
max_length = None
38+
min_length = None
39+
40+
def __init__(self,
41+
min_length=6,
42+
placeholder=None, clearable=True, show_password=False,
43+
show_word_limit=False, disabled=False, readonly=False,
44+
encrypt: str = None,
45+
pattern: str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_-$%&@+!",
46+
*args, **kwargs):
47+
self.items = {
48+
'max_length': kwargs.get('max_length'),
49+
'min_length': min_length,
50+
'placeholder': placeholder,
51+
'clearable': clearable,
52+
'show_password': show_password,
53+
'disabled': disabled,
54+
'readonly': readonly,
55+
'show_word_limit': show_word_limit,
56+
'encrypt': encrypt,
57+
'pattern': pattern
58+
}
59+
super(PasswordInputField, self).__init__(*args, **kwargs)
60+
61+
def formfield(self, **kwargs):
62+
defaults = {
63+
'form_class': PasswordFormField,
64+
}
65+
defaults.update(self.items)
66+
r = super(PasswordInputField, self).formfield(**defaults)
67+
return r
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# _*_ codign:utf8 _*_
2+
"""====================================
3+
@Author:Sadam·Sadik
4+
@Email:1903249375@qq.com
5+
@Date:2023/11/15
6+
@Software: PyCharm
7+
@disc:
8+
======================================="""
9+
from django import forms
10+
from django.db import models
11+
12+
from simplepro.components.widgets import RadioInput
13+
14+
15+
class RadioFormField(forms.fields.IntegerField):
16+
""" custom form field """
17+
18+
def __init__(self, *args, **kwargs):
19+
kwargs.update({
20+
'widget': RadioInput()
21+
})
22+
super(RadioFormField, self).__init__(*args, **kwargs)
23+
24+
25+
class RadioField(models.IntegerField):
26+
""" custom model field """
27+
28+
def __init__(self, *args, **kwargs):
29+
super(RadioField, self).__init__(*args, **kwargs)
30+
31+
def formfield(self, **kwargs):
32+
defaults = {
33+
'form_class': RadioFormField,
34+
}
35+
defaults.update(kwargs)
36+
r = super(RadioField, self).formfield(**defaults)
37+
38+
r.widget = RadioInput(choices=self.choices)
39+
return r

simplepro/components/forms.py

Lines changed: 0 additions & 35 deletions
This file was deleted.

0 commit comments

Comments
 (0)