Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
django-forms-as-jsonschema
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Monitor
Service Desk
Analyze
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
AlekSIS®
Libraries
django-forms-as-jsonschema
Compare revisions
05e59efa29ef950c0635628aec58dd21fe805f08 to 1ba1d2c867175c239b57128c0c7a83fd3dc5bb55
Compare revisions
Changes are shown as if the
source
revision was being merged into the
target
revision.
Learn more about comparing revisions.
Source
AlekSIS/libs/django-forms-as-jsonschema
Select target project
No results found
1ba1d2c867175c239b57128c0c7a83fd3dc5bb55
Select Git revision
Branches
11-create-model-for-instances-of-a-form
main
renovate/django-5.x
renovate/pytest-8.x
4 results
Swap
Target
AlekSIS/libs/django-forms-as-jsonschema
Select target project
AlekSIS/libs/django-forms-as-jsonschema
1 result
05e59efa29ef950c0635628aec58dd21fe805f08
Select Git revision
Branches
11-create-model-for-instances-of-a-form
main
renovate/django-5.x
renovate/pytest-8.x
4 results
Show changes
Only incoming changes from source
Include changes to target since source was created
Compare
Commits on Source
2
Allow Python 3.9
· 0e53b338
Julian
authored
Oct 19, 2022
0e53b338
Allow empty label and help text
· 1ba1d2c8
Julian
authored
Oct 19, 2022
1ba1d2c8
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
django_forms_as_jsonschema/jsonschema.py
+83
-80
83 additions, 80 deletions
django_forms_as_jsonschema/jsonschema.py
pyproject.toml
+1
-1
1 addition, 1 deletion
pyproject.toml
with
84 additions
and
81 deletions
django_forms_as_jsonschema/jsonschema.py
View file @
1ba1d2c8
...
...
@@ -69,41 +69,40 @@ class JSONSchema:
def
add_field
(
self
,
name
,
field
):
new_field
=
{
"
type
"
:
"
string
"
,
"
title
"
:
str
(
field
.
label
),
"
description
"
:
str
(
field
.
help_text
),
"
title
"
:
str
(
field
.
label
or
""
),
"
description
"
:
str
(
field
.
help_text
or
""
),
"
readOnly
"
:
field
.
disabled
}
# string, number, integer, boolean.
match
type
(
field
.
widget
):
case
forms
.
TextInput
:
if
type
(
field
.
widget
)
==
forms
.
TextInput
:
new_field
[
"
type
"
]
=
"
string
"
case
forms
.
NumberInput
:
elif
type
(
field
.
widget
)
==
forms
.
NumberInput
:
new_field
[
"
type
"
]
=
"
integer
"
if
type
(
field
)
==
forms
.
IntegerField
else
"
number
"
case
forms
.
EmailInput
:
elif
type
(
field
.
widget
)
==
forms
.
EmailInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
email
"
case
forms
.
URLInput
:
elif
type
(
field
.
widget
)
==
forms
.
URLInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
url
"
case
forms
.
PasswordInput
:
elif
type
(
field
.
widget
)
==
forms
.
PasswordInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
password
"
new_field
[
"
x-display
"
]
=
"
password
"
case
forms
.
HiddenInput
:
elif
type
(
field
.
widget
)
==
forms
.
HiddenInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
hidden
"
case
forms
.
MultipleHiddenInput
:
elif
type
(
field
.
widget
)
==
forms
.
MultipleHiddenInput
:
...
case
forms
.
FileInput
|
forms
.
ClearableFileInput
:
elif
type
(
field
.
widget
)
in
[
forms
.
FileInput
,
forms
.
ClearableFileInput
]
:
new_field
|=
{
"
type
"
:
"
string
"
,
"
contentMediaType
"
:
"
image/*
"
if
type
(
field
)
==
forms
.
ImageField
else
"
*
"
,
...
...
@@ -111,28 +110,29 @@ class JSONSchema:
}
# Fixme: differentiate between clearable and non-clearable
# case
forms.ClearableFileInput:
# elif type(field.widget) ==
forms.ClearableFileInput:
# ...
case
forms
.
Textarea
:
elif
type
(
field
.
widget
)
==
forms
.
Textarea
:
new_field
[
"
x-display
"
]
=
"
textarea
"
case
forms
.
DateInput
:
elif
type
(
field
.
widget
)
==
forms
.
DateInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
date
"
case
forms
.
DateTimeInput
:
elif
type
(
field
.
widget
)
==
forms
.
DateTimeInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
date-time
"
case
forms
.
TimeInput
:
elif
type
(
field
.
widget
)
==
forms
.
TimeInput
:
new_field
[
"
type
"
]
=
"
string
"
new_field
[
"
format
"
]
=
"
time
"
case
forms
.
CheckboxInput
:
elif
type
(
field
.
widget
)
==
forms
.
CheckboxInput
:
new_field
[
"
type
"
]
=
"
boolean
"
case
forms
.
Select
|
forms
.
SelectMultiple
|
forms
.
RadioSelect
|
forms
.
CheckboxSelectMultiple
,
forms
.
NullBooleanSelect
:
elif
type
(
field
.
widget
)
in
[
forms
.
Select
,
forms
.
SelectMultiple
,
forms
.
RadioSelect
,
forms
.
CheckboxSelectMultiple
,
forms
.
NullBooleanSelect
]:
one_of
=
[]
for
const
,
title
in
field
.
widget
.
choices
:
one_of
.
append
(
dict
(
const
=
str
(
const
),
title
=
str
(
title
)))
...
...
@@ -152,13 +152,16 @@ class JSONSchema:
elif
type
(
field
.
widget
)
==
forms
.
CheckboxSelectMultiple
:
new_field
[
"
x-display
"
]
=
"
checkbox
"
case
forms
.
SplitDateTimeWidget
:
elif
type
(
field
.
widget
)
==
forms
.
SplitDateTimeWidget
:
...
case
forms
.
SplitHiddenDateTimeWidget
:
elif
type
(
field
.
widget
)
==
forms
.
SplitHiddenDateTimeWidget
:
...
case
forms
.
SelectDateWidget
:
elif
type
(
field
.
widget
)
==
forms
.
SelectDateWidget
:
...
else
:
print
(
field
,
type
(
field
),
type
(
field
.
widget
))
self
.
schema
[
"
properties
"
][
name
]
=
new_field
This diff is collapsed.
Click to expand it.
pyproject.toml
View file @
1ba1d2c8
...
...
@@ -5,7 +5,7 @@ description = ""
authors
=
[
"Julian Leucker <leuckerj@gmail.com>"
]
[tool.poetry.dependencies]
python
=
"^3.
10
"
python
=
"^3.
9
"
Django
=
"^4.1"
[tool.poetry.dev-dependencies]
...
...
This diff is collapsed.
Click to expand it.