mirror of
https://github.com/graphql-python/graphene-django.git
synced 2025-07-12 09:12:18 +03:00
Fix field description generation when help_text is None
This commit is contained in:
parent
cd8074b06a
commit
b725976c1d
|
@ -108,7 +108,7 @@ def convert_django_field_with_choices(
|
||||||
if choices and convert_choices_to_enum:
|
if choices and convert_choices_to_enum:
|
||||||
enum = convert_choice_field_to_enum(field)
|
enum = convert_choice_field_to_enum(field)
|
||||||
required = not (field.blank or field.null)
|
required = not (field.blank or field.null)
|
||||||
converted = enum(description=str(field.help_text), required=required)
|
converted = enum(description=get_django_field_description(field), required=required)
|
||||||
else:
|
else:
|
||||||
converted = convert_django_field(field, registry)
|
converted = convert_django_field(field, registry)
|
||||||
if registry is not None:
|
if registry is not None:
|
||||||
|
@ -116,6 +116,10 @@ def convert_django_field_with_choices(
|
||||||
return converted
|
return converted
|
||||||
|
|
||||||
|
|
||||||
|
def get_django_field_description(field):
|
||||||
|
return None if field.help_text is None else str(field.help_text)
|
||||||
|
|
||||||
|
|
||||||
@singledispatch
|
@singledispatch
|
||||||
def convert_django_field(field, registry=None):
|
def convert_django_field(field, registry=None):
|
||||||
raise Exception(
|
raise Exception(
|
||||||
|
@ -132,17 +136,17 @@ def convert_django_field(field, registry=None):
|
||||||
@convert_django_field.register(models.FileField)
|
@convert_django_field.register(models.FileField)
|
||||||
@convert_django_field.register(models.FilePathField)
|
@convert_django_field.register(models.FilePathField)
|
||||||
def convert_field_to_string(field, registry=None):
|
def convert_field_to_string(field, registry=None):
|
||||||
return String(description=str(field.help_text), required=not field.null)
|
return String(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.AutoField)
|
@convert_django_field.register(models.AutoField)
|
||||||
def convert_field_to_id(field, registry=None):
|
def convert_field_to_id(field, registry=None):
|
||||||
return ID(description=str(field.help_text), required=not field.null)
|
return ID(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.UUIDField)
|
@convert_django_field.register(models.UUIDField)
|
||||||
def convert_field_to_uuid(field, registry=None):
|
def convert_field_to_uuid(field, registry=None):
|
||||||
return UUID(description=str(field.help_text), required=not field.null)
|
return UUID(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.PositiveIntegerField)
|
@convert_django_field.register(models.PositiveIntegerField)
|
||||||
|
@ -151,35 +155,35 @@ def convert_field_to_uuid(field, registry=None):
|
||||||
@convert_django_field.register(models.BigIntegerField)
|
@convert_django_field.register(models.BigIntegerField)
|
||||||
@convert_django_field.register(models.IntegerField)
|
@convert_django_field.register(models.IntegerField)
|
||||||
def convert_field_to_int(field, registry=None):
|
def convert_field_to_int(field, registry=None):
|
||||||
return Int(description=str(field.help_text), required=not field.null)
|
return Int(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.NullBooleanField)
|
@convert_django_field.register(models.NullBooleanField)
|
||||||
@convert_django_field.register(models.BooleanField)
|
@convert_django_field.register(models.BooleanField)
|
||||||
def convert_field_to_boolean(field, registry=None):
|
def convert_field_to_boolean(field, registry=None):
|
||||||
return Boolean(description=str(field.help_text), required=not field.null)
|
return Boolean(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.DecimalField)
|
@convert_django_field.register(models.DecimalField)
|
||||||
@convert_django_field.register(models.FloatField)
|
@convert_django_field.register(models.FloatField)
|
||||||
@convert_django_field.register(models.DurationField)
|
@convert_django_field.register(models.DurationField)
|
||||||
def convert_field_to_float(field, registry=None):
|
def convert_field_to_float(field, registry=None):
|
||||||
return Float(description=str(field.help_text), required=not field.null)
|
return Float(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.DateTimeField)
|
@convert_django_field.register(models.DateTimeField)
|
||||||
def convert_datetime_to_string(field, registry=None):
|
def convert_datetime_to_string(field, registry=None):
|
||||||
return DateTime(description=str(field.help_text), required=not field.null)
|
return DateTime(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.DateField)
|
@convert_django_field.register(models.DateField)
|
||||||
def convert_date_to_string(field, registry=None):
|
def convert_date_to_string(field, registry=None):
|
||||||
return Date(description=str(field.help_text), required=not field.null)
|
return Date(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.TimeField)
|
@convert_django_field.register(models.TimeField)
|
||||||
def convert_time_to_string(field, registry=None):
|
def convert_time_to_string(field, registry=None):
|
||||||
return Time(description=str(field.help_text), required=not field.null)
|
return Time(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(models.OneToOneRel)
|
@convert_django_field.register(models.OneToOneRel)
|
||||||
|
@ -250,7 +254,7 @@ def convert_field_to_djangomodel(field, registry=None):
|
||||||
if not _type:
|
if not _type:
|
||||||
return
|
return
|
||||||
|
|
||||||
return Field(_type, description=str(field.help_text), required=not field.null)
|
return Field(_type, description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
return Dynamic(dynamic_type)
|
return Dynamic(dynamic_type)
|
||||||
|
|
||||||
|
@ -260,13 +264,13 @@ def convert_postgres_array_to_list(field, registry=None):
|
||||||
base_type = convert_django_field(field.base_field)
|
base_type = convert_django_field(field.base_field)
|
||||||
if not isinstance(base_type, (List, NonNull)):
|
if not isinstance(base_type, (List, NonNull)):
|
||||||
base_type = type(base_type)
|
base_type = type(base_type)
|
||||||
return List(base_type, description=str(field.help_text), required=not field.null)
|
return List(base_type, description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(HStoreField)
|
@convert_django_field.register(HStoreField)
|
||||||
@convert_django_field.register(JSONField)
|
@convert_django_field.register(JSONField)
|
||||||
def convert_postgres_field_to_string(field, registry=None):
|
def convert_postgres_field_to_string(field, registry=None):
|
||||||
return JSONString(description=str(field.help_text), required=not field.null)
|
return JSONString(description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
@convert_django_field.register(RangeField)
|
@convert_django_field.register(RangeField)
|
||||||
|
@ -274,7 +278,7 @@ def convert_postgres_range_to_string(field, registry=None):
|
||||||
inner_type = convert_django_field(field.base_field)
|
inner_type = convert_django_field(field.base_field)
|
||||||
if not isinstance(inner_type, (List, NonNull)):
|
if not isinstance(inner_type, (List, NonNull)):
|
||||||
inner_type = type(inner_type)
|
inner_type = type(inner_type)
|
||||||
return List(inner_type, description=str(field.help_text), required=not field.null)
|
return List(inner_type, description=get_django_field_description(field), required=not field.null)
|
||||||
|
|
||||||
|
|
||||||
# Register Django lazy()-wrapped values as GraphQL description/help_text.
|
# Register Django lazy()-wrapped values as GraphQL description/help_text.
|
||||||
|
|
|
@ -30,7 +30,7 @@ def get_filtering_args_from_filterset(filterset_class, type):
|
||||||
form_field = filter_field.field
|
form_field = filter_field.field
|
||||||
|
|
||||||
field_type = convert_form_field(form_field).Argument()
|
field_type = convert_form_field(form_field).Argument()
|
||||||
field_type.description = str(filter_field.label)
|
field_type.description = None if filter_field.label is None else str(filter_field.label)
|
||||||
args[name] = field_type
|
args[name] = field_type
|
||||||
|
|
||||||
return args
|
return args
|
||||||
|
|
|
@ -8,6 +8,10 @@ from graphene import ID, Boolean, Float, Int, List, String, UUID, Date, DateTime
|
||||||
from .forms import GlobalIDFormField, GlobalIDMultipleChoiceField
|
from .forms import GlobalIDFormField, GlobalIDMultipleChoiceField
|
||||||
|
|
||||||
|
|
||||||
|
def get_form_field_description(field):
|
||||||
|
return None if field.help_text is None else str(field.help_text)
|
||||||
|
|
||||||
|
|
||||||
@singledispatch
|
@singledispatch
|
||||||
def convert_form_field(field):
|
def convert_form_field(field):
|
||||||
raise ImproperlyConfigured(
|
raise ImproperlyConfigured(
|
||||||
|
@ -25,39 +29,39 @@ def convert_form_field(field):
|
||||||
@convert_form_field.register(forms.RegexField)
|
@convert_form_field.register(forms.RegexField)
|
||||||
@convert_form_field.register(forms.Field)
|
@convert_form_field.register(forms.Field)
|
||||||
def convert_form_field_to_string(field):
|
def convert_form_field_to_string(field):
|
||||||
return String(description=str(field.help_text), required=field.required)
|
return String(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.UUIDField)
|
@convert_form_field.register(forms.UUIDField)
|
||||||
def convert_form_field_to_uuid(field):
|
def convert_form_field_to_uuid(field):
|
||||||
return UUID(description=str(field.help_text), required=field.required)
|
return UUID(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.IntegerField)
|
@convert_form_field.register(forms.IntegerField)
|
||||||
@convert_form_field.register(forms.NumberInput)
|
@convert_form_field.register(forms.NumberInput)
|
||||||
def convert_form_field_to_int(field):
|
def convert_form_field_to_int(field):
|
||||||
return Int(description=str(field.help_text), required=field.required)
|
return Int(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.BooleanField)
|
@convert_form_field.register(forms.BooleanField)
|
||||||
def convert_form_field_to_boolean(field):
|
def convert_form_field_to_boolean(field):
|
||||||
return Boolean(description=str(field.help_text), required=field.required)
|
return Boolean(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.NullBooleanField)
|
@convert_form_field.register(forms.NullBooleanField)
|
||||||
def convert_form_field_to_nullboolean(field):
|
def convert_form_field_to_nullboolean(field):
|
||||||
return Boolean(description=str(field.help_text))
|
return Boolean(description=get_form_field_description(field))
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.DecimalField)
|
@convert_form_field.register(forms.DecimalField)
|
||||||
@convert_form_field.register(forms.FloatField)
|
@convert_form_field.register(forms.FloatField)
|
||||||
def convert_form_field_to_float(field):
|
def convert_form_field_to_float(field):
|
||||||
return Float(description=str(field.help_text), required=field.required)
|
return Float(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.MultipleChoiceField)
|
@convert_form_field.register(forms.MultipleChoiceField)
|
||||||
def convert_form_field_to_string_list(field):
|
def convert_form_field_to_string_list(field):
|
||||||
return List(String, description=str(field.help_text), required=field.required)
|
return List(String, description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.ModelMultipleChoiceField)
|
@convert_form_field.register(forms.ModelMultipleChoiceField)
|
||||||
|
@ -68,17 +72,17 @@ def convert_form_field_to_id_list(field):
|
||||||
|
|
||||||
@convert_form_field.register(forms.DateField)
|
@convert_form_field.register(forms.DateField)
|
||||||
def convert_form_field_to_date(field):
|
def convert_form_field_to_date(field):
|
||||||
return Date(description=str(field.help_text), required=field.required)
|
return Date(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.DateTimeField)
|
@convert_form_field.register(forms.DateTimeField)
|
||||||
def convert_form_field_to_datetime(field):
|
def convert_form_field_to_datetime(field):
|
||||||
return DateTime(description=str(field.help_text), required=field.required)
|
return DateTime(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.TimeField)
|
@convert_form_field.register(forms.TimeField)
|
||||||
def convert_form_field_to_time(field):
|
def convert_form_field_to_time(field):
|
||||||
return Time(description=str(field.help_text), required=field.required)
|
return Time(description=get_form_field_description(field), required=field.required)
|
||||||
|
|
||||||
|
|
||||||
@convert_form_field.register(forms.ModelChoiceField)
|
@convert_form_field.register(forms.ModelChoiceField)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user