Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • 11-create-model-for-instances-of-a-form
  • main
  • renovate/django-5.x
  • renovate/pytest-8.x
4 results

Target

Select target project
  • AlekSIS/libs/django-forms-as-jsonschema
1 result
Select Git revision
  • 11-create-model-for-instances-of-a-form
  • main
  • renovate/django-5.x
  • renovate/pytest-8.x
4 results
Show changes

Commits on Source 2

......@@ -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
......@@ -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]
......