Skip to content
Snippets Groups Projects

Configure Renovate

Merged Tine Wittler requested to merge renovate/configure into main
Files
2
@@ -69,96 +69,99 @@ class JSONSchema:
@@ -69,96 +69,99 @@ class JSONSchema:
def add_field(self, name, field):
def add_field(self, name, field):
new_field = {
new_field = {
"type": "string",
"type": "string",
"title": str(field.label),
"title": str(field.label or ""),
"description": str(field.help_text),
"description": str(field.help_text or ""),
"readOnly": field.disabled
"readOnly": field.disabled
}
}
# string, number, integer, boolean.
# string, number, integer, boolean.
match type(field.widget):
if type(field.widget) == forms.TextInput:
case forms.TextInput:
new_field["type"] = "string"
 
 
elif type(field.widget) == forms.NumberInput:
 
new_field["type"] = "integer" if type(field) == forms.IntegerField else "number"
 
 
elif type(field.widget) == forms.EmailInput:
 
new_field["type"] = "string"
 
new_field["format"] = "email"
 
 
elif type(field.widget) == forms.URLInput:
 
new_field["type"] = "string"
 
new_field["format"] = "url"
 
 
elif type(field.widget) == forms.PasswordInput:
 
new_field["type"] = "string"
 
new_field["format"] = "password"
 
new_field["x-display"] = "password"
 
 
elif type(field.widget) == forms.HiddenInput:
 
new_field["type"] = "string"
 
new_field["format"] = "hidden"
 
 
elif type(field.widget) == forms.MultipleHiddenInput:
 
...
 
 
elif type(field.widget) in [forms.FileInput, forms.ClearableFileInput]:
 
new_field |= {
 
"type": "string",
 
"contentMediaType": "image/*" if type(field) == forms.ImageField else "*",
 
"writeOnly": True
 
}
 
 
# Fixme: differentiate between clearable and non-clearable
 
# elif type(field.widget) == forms.ClearableFileInput:
 
# ...
 
 
elif type(field.widget) == forms.Textarea:
 
new_field["x-display"] = "textarea"
 
 
elif type(field.widget) == forms.DateInput:
 
new_field["type"] = "string"
 
new_field["format"] = "date"
 
 
elif type(field.widget) == forms.DateTimeInput:
 
new_field["type"] = "string"
 
new_field["format"] = "date-time"
 
 
elif type(field.widget) == forms.TimeInput:
 
new_field["type"] = "string"
 
new_field["format"] = "time"
 
 
elif type(field.widget) == forms.CheckboxInput:
 
new_field["type"] = "boolean"
 
 
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)))
 
 
if field.widget.allow_multiple_selected:
 
new_field["type"] = "array"
 
new_field["items"] = {
 
"type": "string",
 
"oneOf": one_of
 
}
 
else:
new_field["type"] = "string"
new_field["type"] = "string"
 
new_field["oneOf"] = one_of
case forms.NumberInput:
if type(field.widget) == forms.RadioSelect:
new_field["type"] = "integer" if type(field) == forms.IntegerField else "number"
new_field["x-display"] = "radio"
 
elif type(field.widget) == forms.CheckboxSelectMultiple:
 
new_field["x-display"] = "checkbox"
case forms.EmailInput:
elif type(field.widget) == forms.SplitDateTimeWidget:
new_field["type"] = "string"
...
new_field["format"] = "email"
case forms.URLInput:
new_field["type"] = "string"
new_field["format"] = "url"
case forms.PasswordInput:
new_field["type"] = "string"
new_field["format"] = "password"
new_field["x-display"] = "password"
case forms.HiddenInput:
new_field["type"] = "string"
new_field["format"] = "hidden"
case forms.MultipleHiddenInput:
elif type(field.widget) == forms.SplitHiddenDateTimeWidget:
...
...
case forms.FileInput | forms.ClearableFileInput:
elif type(field.widget) == forms.SelectDateWidget:
new_field |= {
...
"type": "string",
"contentMediaType": "image/*" if type(field) == forms.ImageField else "*",
"writeOnly": True
}
# Fixme: differentiate between clearable and non-clearable
else:
# case forms.ClearableFileInput:
print(field, type(field), type(field.widget))
# ...
case forms.Textarea:
new_field["x-display"] = "textarea"
case forms.DateInput:
new_field["type"] = "string"
new_field["format"] = "date"
case forms.DateTimeInput:
new_field["type"] = "string"
new_field["format"] = "date-time"
case forms.TimeInput:
new_field["type"] = "string"
new_field["format"] = "time"
case forms.CheckboxInput:
new_field["type"] = "boolean"
case 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)))
if field.widget.allow_multiple_selected:
new_field["type"] = "array"
new_field["items"] = {
"type": "string",
"oneOf": one_of
}
else:
new_field["type"] = "string"
new_field["oneOf"] = one_of
if type(field.widget) == forms.RadioSelect:
new_field["x-display"] = "radio"
elif type(field.widget) == forms.CheckboxSelectMultiple:
new_field["x-display"] = "checkbox"
case forms.SplitDateTimeWidget:
...
case forms.SplitHiddenDateTimeWidget:
...
case forms.SelectDateWidget:
...
self.schema["properties"][name] = new_field
self.schema["properties"][name] = new_field
Loading