Comments (7)
Regarding graphene
, I think that the execution context should be added to get_node
. As a good practice, the execution context should be available in all resolvers for this very reason.
Regarding graphql-core
, in addition to root_value
, I provide a request_context
inside of ExecutionContext
which can be set to any value you want to use. In graphql-django-view
, I use it to store the current request
object from Django. But given your use-case, perhaps it would make more sense to pass it a dict
containing your session
and auth
objects.
You should be able to do this using graphene.core.Schema.execute()
by passing request_context
as a kwarg to that function.
I.e. somewhere:
schema.execute(query, request_context={
'session': Session(),
'auth': get_auth()
})
In a standard resolver, you would then access session by doing info.request_context['session']
def resolve_ship(self, args, info):
session = info.request_context['session']
ship_id = args.get('id')
ship = session.query(Ship).filter_by(id=ship_id).one()
return Ship(ship)
from graphene.
I can prepare a PR to make get_node work like other resolver functions (with the possibility of decorating it with resolve_only_args for the previous style of behavior).
That is:
class Foo(Node):
@classmethod
def get_node(cls, args, info):
# do the right thing
pass
or
class Foo(Node):
@classmethod
@resolve_only_args
def get_node(cls, id):
# do the right thing
pass
Would such a PR be accepted?
from graphene.
This is going to be a breaking change... but I think should be made. 0.5.0 here we come lol.
from graphene.
@inklesspen Yep, is a breaking change but will be accepted.
However a node could only be retrieved by the id arg (there are no other args in the base javascript implementation/ relay specification)
So, the syntax could be something like this:
@classmethod
def get_node(cls, id, info):
pass
from graphene.
ok, so it wouldn't support resolve_only_args
then.
I will try to prepare a PR in the next day or so.
from graphene.
Just a reminder the PR is ready.
from graphene.
Merged!
from graphene.
Related Issues (20)
- Enum equality comparison is inconsistent
- http://www.graphene-python.org Has EXPIRED HOT 3
- Upload file HOT 2
- Unexpected argument in Pycharm 2023.2.1 HOT 1
- Default_value option in Arguments inside Mutation is not working as expected HOT 2
- Exception: NonNull could not have a mounted String() as inner type. Try with NonNull(String).
- Returning non fatal errors alongside data HOT 1
- Conversion to snake_case fails on nested inputs
- Depth limit validator key error if fragment undefined
- Tests in `graphene/relay/tests/test_custom_global_id.py` fail due incompatibility with pytest 8.x HOT 2
- Enum.from_enum() fails with Django IntegerChoices
- Do you support GQL over websocket? HOT 1
- More documentation for DisableIntrospection?
- Subclass built-in scalars without creating new GraphQL type
- In 3.1.0, `resolve_type` method on Interfaces and Unions no longer supports returning the GraphQL Type as a string HOT 1
- release 3.4.0 HOT 3
- grphene.List not work correctly HOT 1
- When passing the empty string to Date Type, it occurs `IndexError: string index out of range` HOT 2
- Schema execution timing out after upgrade from 2.1.9 to 3.3
- pregenerate schema and cache it for serverless cold start? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from graphene.