Skip to main content

An extension for graphene

Project description

Disclaimer

Проект находится на ранней стадии разработки

Как пользоваться?

Обязательные поля в инпутах

import graphene
from graphene_t2 import InputObjectType

class AddSomethingInput(InputObjectType):
    field1 = graphene.String(required=True)
    field2 = graphene.String(required=True)

class EditSomethingInput(AddSomethingInput):
    class T2Meta:
        required = {
            False: '__all__', # или список полей
            True: ['id'],
        }

    id = graphene.ID()

Примечания

  • нет поддержки graphene.Argument
  • порядок ключей (True, False) в параметре required важен. Изменения применяются в порядке их объявления

Документирование изменений (changes.py)

Автоматически изменяет описание полей. Может использоваться для генерации документации.

import graphene
from graphene_t2 import InputObjectType
from graphene_t2.features.changes import Alter, Deprecate

class SomeInputType(InputObjectType):
    class T2Meta:
        changes = [
            Deprecate('legacy_field1', '03/20', replaced_by='new_field1'),
            Deprecate('legacy_field2', '02/20', comment='Не используется'),
            Alter('new_field1', '03/20', required=True),
        ]

    legacy_field1 = graphene.String()
    legacy_field2 = graphene.String()
    new_field1 = graphene.String()

Сортировка (ordering.py)

В классе-нследнике ObjectType нужно объявить класс T2Meta. Внутри него можно создать две переменные:

  1. can_order_by - обязательный, список с названием полей, по которым можно производить сортировку;
  2. default_ordering - необязательный, сортировка по-умолчанию, строка или список строк с названием полей.

Примеры:

class Model1Type(DjangoObjectType):
       class T2Meta:
           can_order_by = ['id']


class Model2Type(DjangoObjectType):
       class T2Meta:
           can_order_by = ['id']
           default_ordering = 'id' # или '-id'


class Model3Type(DjangoObjectType):
       class T2Meta:
           can_order_by = ['id', 'name', 'date_created']
           default_ordering = '-date_created', 'name' # или ['-date_created', 'name']

Класс с объявлением методов нужно отнаследовать от graphene_t2.QueriesType, объявить вложенный класс T2Meta. Внутри объявить переменную enable_ordering_for.

Возможны два вида значения:

  1. __auto__ - включает возможность сортировки, для методов для которых это возможно сделать;
  2. список с названием полей

Ресолверы в качестве аргумента должны принимать **kwargs или sort_by.

from graphene_t2 import QueriesType


class Query1(QueriesType):
    class T2Meta:
        enable_ordering_for = '__auto__'

    items = graphene.List(Model1Type)

    def resolve_items(self, info, **kwargs):
        pass



class Query2(QueriesType):
    class T2Meta:
        enable_ordering_for = ['items']

    items = graphene.List(Model1Type)

    def resolve_items(self, info, sort_by):
        pass

Примечания

  • Нет поддержки случаев, когда название поля в модели отличается от названия в API;
  • Нет возможности сортировать по полям вложенных структур;

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

graphene-t2-0.4.0.tar.gz (6.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

graphene_t2-0.4.0-py3-none-any.whl (10.1 kB view details)

Uploaded Python 3

File details

Details for the file graphene-t2-0.4.0.tar.gz.

File metadata

  • Download URL: graphene-t2-0.4.0.tar.gz
  • Upload date:
  • Size: 6.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for graphene-t2-0.4.0.tar.gz
Algorithm Hash digest
SHA256 87eaae89499fa7528a90d26a5ec11e890dbb265fece93516ecc31c7edd1fdf83
MD5 de0e09b259c701ab2f596c687a613bb6
BLAKE2b-256 443874e0c87dea7ec7c2f18b53b6403c4125cc0ffc1d2dee14e553fb4d1d9a14

See more details on using hashes here.

File details

Details for the file graphene_t2-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: graphene_t2-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 10.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/47.1.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.6.9

File hashes

Hashes for graphene_t2-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 59a6ac9730c25f1c5afe03da675fb8ff7cd36ecee7a119166e7b3b87061e27b4
MD5 b019a670385f808d50b0b4c726c8025c
BLAKE2b-256 c3264eb55084e839de450fc72d854e91cea59f081d568cb82ce5e920444b6216

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page