from django.utils.encoding import force_text from graphene import (Field, ID, Boolean, Dynamic, Enum, Float, Int, List, NonNull, String, UUID) from graphene.types.datetime import DateTime, Time from graphene.types.json import JSONString from graphene.utils.str_converters import to_camel_case, to_const from graphene_django.compat import ArrayField, HStoreField, RangeField, JSONField from graphene_django.fields import DjangoListField from graphene_django.utils import import_single_dispatch from rest_framework.compat import get_related_model from .fields import DjangoFilterListField from .utils import is_required, get_model_fields from .base_types import Date, GenericForeignKeyType, GenericForeignKeyInputType singledispatch = import_single_dispatch() NAME_PATTERN = r'^[_a-zA-Z][_a-zA-Z0-9]*$' COMPILED_NAME_PATTERN = re.compile(NAME_PATTERN) def assert_valid_name(name): """ Helper to assert that provided names are valid. """ assert COMPILED_NAME_PATTERN.match( name), 'Names must match /{}/ but "{}" does not.'.format( NAME_PATTERN, name) def convert_choice_name(name): name = to_const(force_text(name)) try:
from graphene import ( Field, ID, Boolean, Dynamic, Enum, Float, Int, List, NonNull, String, UUID ) from graphene.types.json import JSONString from graphene.utils.str_converters import to_camel_case, to_const from graphene_django.compat import ArrayField, HStoreField, RangeField, JSONField from graphene_django.fields import DjangoListField from graphene_django.utils import import_single_dispatch from .base_types import ( GenericForeignKeyType, GenericForeignKeyInputType, CustomDateTime, CustomTime, CustomDate, Binary ) from .fields import DjangoFilterListField from .utils import is_required, get_model_fields, get_related_model singledispatch = import_single_dispatch() NAME_PATTERN = r'^[_a-zA-Z][_a-zA-Z0-9]*$' COMPILED_NAME_PATTERN = re.compile(NAME_PATTERN) def assert_valid_name(name): """ Helper to assert that provided names are valid. """ assert COMPILED_NAME_PATTERN.match(name), 'Names must match /{}/ but "{}" does not.'.format(NAME_PATTERN, name) def convert_choice_name(name): name = to_const(force_text(name)) try: assert_valid_name(name)