Skip to content
Snippets Groups Projects
Commit 677c2168 authored by jan.bednarik's avatar jan.bednarik
Browse files

Simplify User type and split name to first and last name for User and Author types.

parent 760c7dfb
No related branches found
No related tags found
No related merge requests found
...@@ -67,11 +67,10 @@ class ReportConnection(relay.Connection): ...@@ -67,11 +67,10 @@ class ReportConnection(relay.Connection):
class User(graphene.ObjectType): class User(graphene.ObjectType):
name = graphene.String()
openid_uid = graphene.String() openid_uid = graphene.String()
first_name = graphene.String()
last_name = graphene.String()
email = graphene.String() email = graphene.String()
extra = JSONString()
reports = relay.ConnectionField(ReportConnection)
class Meta: class Meta:
interfaces = (relay.Node, ) interfaces = (relay.Node, )
...@@ -80,36 +79,24 @@ class User(graphene.ObjectType): ...@@ -80,36 +79,24 @@ class User(graphene.ObjectType):
def from_db(cls, user): def from_db(cls, user):
return cls( return cls(
id=user.id, id=user.id,
name=user.get_full_name(),
openid_uid=user.openid_uid, openid_uid=user.openid_uid,
first_name=user.first_name,
last_name=user.last_name,
email=user.email, email=user.email,
extra=user.extra,
) )
@classmethod @classmethod
def get_node(cls, info, id): def get_node(cls, info, id):
# TODO return only viewer
try: try:
return cls.from_db(models.User.objects.get(id=id)) return cls.from_db(models.User.objects.get(id=id))
except models.User.DoesNotExist: except models.User.DoesNotExist:
return None return None
def resolve_reports(self, info, **kwargs):
paginator = Paginator(**kwargs)
response = search.reports_by_author(self.id, paginator, **info.context)
total = response.hits.total
page_info = paginator.get_page_info(total)
edges = []
for i, report in enumerate(response):
cursor = paginator.get_edge_cursor(i + 1)
node = Report.from_es(report, author=self)
edges.append(ReportConnection.Edge(node=node, cursor=cursor))
return ReportConnection(page_info=page_info, edges=edges, total_count=total)
class Author(graphene.ObjectType): class Author(graphene.ObjectType):
name = graphene.String() first_name = graphene.String()
last_name = graphene.String()
openid_uid = graphene.String() openid_uid = graphene.String()
extra = JSONString() extra = JSONString()
# TODO # TODO
...@@ -122,7 +109,8 @@ class Author(graphene.ObjectType): ...@@ -122,7 +109,8 @@ class Author(graphene.ObjectType):
def from_db(cls, user): def from_db(cls, user):
return cls( return cls(
id=user.id, id=user.id,
name=user.get_full_name(), first_name=user.first_name,
last_name=user.last_name,
openid_uid=user.openid_uid, openid_uid=user.openid_uid,
extra=user.extra, extra=user.extra,
) )
......
...@@ -13,6 +13,6 @@ snapshots['test_login_shortcuts 1'] = b'{"data":{"loginShortcuts":[{"id":"TG9naW ...@@ -13,6 +13,6 @@ snapshots['test_login_shortcuts 1'] = b'{"data":{"loginShortcuts":[{"id":"TG9naW
snapshots['test_node__login_shortcut 1'] = b'{"data":{"node":{"id":"TG9naW5TaG9ydGN1dDoxMA==","name":"foo"}}}' snapshots['test_node__login_shortcut 1'] = b'{"data":{"node":{"id":"TG9naW5TaG9ydGN1dDoxMA==","name":"foo"}}}'
snapshots['test_node__author 1'] = b'{"data":{"node":{"id":"QXV0aG9yOjU=","name":"Winston Wolfe","openidUid":"TheWolf","extra":"{\\"x\\": 1}"}}}' snapshots['test_node__author 1'] = b'{"data":{"node":{"id":"QXV0aG9yOjU=","firstName":"Winston","lastName":"Wolfe","openidUid":"TheWolf","extra":"{\\"x\\": 1}"}}}'
snapshots['test_node__author__only_if_is_author 1'] = b'{"data":{"node":null}}' snapshots['test_node__author__only_if_is_author 1'] = b'{"data":{"node":null}}'
...@@ -64,7 +64,8 @@ def test_node__author(client, snapshot): ...@@ -64,7 +64,8 @@ def test_node__author(client, snapshot):
node (id:"{id}") {{ node (id:"{id}") {{
... on Author {{ ... on Author {{
id id
name firstName
lastName
openidUid openidUid
extra extra
}} }}
...@@ -76,10 +77,7 @@ def test_node__author(client, snapshot): ...@@ -76,10 +77,7 @@ def test_node__author(client, snapshot):
@pytest.mark.django_db @pytest.mark.django_db
def test_node__author__only_if_is_author(client, snapshot): def test_node__author__only_if_is_author(client, snapshot):
User.objects.create( User.objects.create(id=7, is_author=False)
id=7,
is_author=False,
)
res = client.post('/graphql', {'query': """ res = client.post('/graphql', {'query': """
query {{ query {{
node (id:"{id}") {{ node (id:"{id}") {{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment