Skip to content

Commit

Permalink
Fixed default query value in SQLAlchemyConnectionField. Fixed #133
Browse files Browse the repository at this point in the history
  • Loading branch information
syrusakbary committed Mar 30, 2016
1 parent 21ec116 commit 1f548f1
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 6 deletions.
13 changes: 8 additions & 5 deletions graphene/contrib/sqlalchemy/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,24 @@
from .utils import get_type_for_model, maybe_query, get_query


class DefaultQuery(object):
pass


class SQLAlchemyConnectionField(ConnectionField):

def __init__(self, *args, **kwargs):
kwargs['default'] = kwargs.pop('default', lambda: DefaultQuery)
return super(SQLAlchemyConnectionField, self).__init__(*args, **kwargs)

@property
def model(self):
return self.type._meta.model

def get_query(self, resolved_query, args, info):
return resolved_query if resolved_query is not None else get_query(self.model, info)

def from_list(self, connection_type, resolved, args, info):
query = self.get_query(resolved, args, info)
query = maybe_query(query)
if resolved is DefaultQuery:
resolved = get_query(self.model, info)
query = maybe_query(resolved)
return super(SQLAlchemyConnectionField, self).from_list(connection_type, query, args, info)


Expand Down
17 changes: 16 additions & 1 deletion graphene/contrib/sqlalchemy/tests/test_query.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import graphene
from graphene import relay
from graphene.contrib.sqlalchemy import SQLAlchemyObjectType, SQLAlchemyNode
from graphene.contrib.sqlalchemy import SQLAlchemyObjectType, SQLAlchemyNode, SQLAlchemyConnectionField
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker

Expand Down Expand Up @@ -115,6 +115,7 @@ class Query(graphene.ObjectType):
node = relay.NodeField()
reporter = graphene.Field(ReporterNode)
article = graphene.Field(ArticleNode)
all_articles = SQLAlchemyConnectionField(ArticleNode)

def resolve_reporter(self, *args, **kwargs):
return Reporter(id=1, first_name='ABA', last_name='X')
Expand All @@ -137,6 +138,13 @@ def resolve_article(self, *args, **kwargs):
lastName,
email
}
allArticles {
edges {
node {
headline
}
}
}
myArticle: node(id:"QXJ0aWNsZU5vZGU6MQ==") {
id
... on ReporterNode {
Expand All @@ -162,6 +170,13 @@ def resolve_article(self, *args, **kwargs):
}]
},
},
'allArticles': {
'edges': [{
'node': {
'headline': 'Hi!'
}
}]
},
'myArticle': {
'id': 'QXJ0aWNsZU5vZGU6MQ==',
'headline': 'Hi!'
Expand Down

0 comments on commit 1f548f1

Please sign in to comment.