Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
ParsePy
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
OpenEdx
ParsePy
Commits
30ab2e11
Commit
30ab2e11
authored
Jul 22, 2014
by
Roman Krejcik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fixed queries with User as query argument
eg Subscription.Query.get(user=User(objectId='foo'))
parent
efb00e40
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
19 additions
and
10 deletions
+19
-10
parse_rest/datatypes.py
+3
-3
parse_rest/tests.py
+11
-1
parse_rest/user.py
+5
-6
No files found.
parse_rest/datatypes.py
View file @
30ab2e11
...
...
@@ -45,19 +45,19 @@ class ParseType(object):
@staticmethod
def
convert_to_parse
(
python_object
,
as_pointer
=
False
):
is_object
=
isinstance
(
python_object
,
Object
)
is_object
=
isinstance
(
python_object
,
ParseResource
)
#User is derived from ParseResouce not Object, check against ParseResource
if
is_object
and
not
as_pointer
:
return
dict
([(
k
,
ParseType
.
convert_to_parse
(
v
,
as_pointer
=
True
))
for
k
,
v
in
python_object
.
_editable_attrs
.
items
()
])
python_type
=
Object
if
is_object
else
type
(
python_object
)
python_type
=
ParseResource
if
is_object
else
type
(
python_object
)
# classes that need to be cast to a different type before serialization
transformation_map
=
{
datetime
.
datetime
:
Date
,
Object
:
Pointer
ParseResource
:
Pointer
}
if
python_type
in
transformation_map
:
...
...
parse_rest/tests.py
View file @
30ab2e11
...
...
@@ -222,7 +222,7 @@ class TestQuery(unittest.TestCase):
ParseBatcher
()
.
batch_delete
(
GameScore
.
Query
.
all
())
ParseBatcher
()
.
batch_delete
(
Game
.
Query
.
all
())
cls
.
game
=
Game
(
title
=
"Candyland"
)
cls
.
game
=
Game
(
title
=
"Candyland"
,
creator
=
None
)
cls
.
game
.
save
()
cls
.
scores
=
[
GameScore
(
score
=
s
,
player_name
=
'John Doe'
,
game
=
cls
.
game
)
for
s
in
range
(
1
,
6
)]
...
...
@@ -415,6 +415,7 @@ class TestUser(unittest.TestCase):
def
setUp
(
self
):
self
.
username
=
TestUser
.
USERNAME
self
.
password
=
TestUser
.
PASSWORD
self
.
game
=
None
try
:
u
=
User
.
login
(
self
.
USERNAME
,
self
.
PASSWORD
)
...
...
@@ -425,6 +426,9 @@ class TestUser(unittest.TestCase):
def
tearDown
(
self
):
self
.
_destroy_user
()
if
self
.
game
:
self
.
game
.
delete
()
self
.
game
=
None
def
testCanSignUp
(
self
):
self
.
_destroy_user
()
...
...
@@ -463,6 +467,12 @@ class TestUser(unittest.TestCase):
self
.
assertNotEqual
(
user
.
updatedAt
,
original_updatedAt
,
'Failed to batch update user data: updatedAt not changed'
)
def
testUserAsQueryArg
(
self
):
user
=
self
.
_get_user
()
g
=
self
.
game
=
Game
(
title
=
'G1'
,
creator
=
user
)
g
.
save
()
self
.
assertEqual
(
1
,
len
(
Game
.
Query
.
filter
(
creator
=
user
)))
class
TestPush
(
unittest
.
TestCase
):
"""
...
...
parse_rest/user.py
View file @
30ab2e11
...
...
@@ -12,7 +12,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from
parse_rest.core
import
ResourceRequestLoginRequired
from
parse_rest.core
import
ResourceRequestLoginRequired
,
ParseError
from
parse_rest.connection
import
API_ROOT
from
parse_rest.datatypes
import
ParseResource
,
ParseType
from
parse_rest.query
import
QueryManager
...
...
@@ -60,8 +60,7 @@ class User(ParseResource):
url
=
self
.
_absolute_url
data
=
self
.
_to_native
()
response
=
self
.
__class__
.
PUT
(
url
,
extra_headers
=
session_header
,
batch
=
batch
,
**
data
)
response
=
User
.
PUT
(
url
,
extra_headers
=
session_header
,
batch
=
batch
,
**
data
)
def
call_back
(
response_dict
):
self
.
updatedAt
=
response_dict
[
'updatedAt'
]
...
...
@@ -74,7 +73,7 @@ class User(ParseResource):
@login_required
def
delete
(
self
):
session_header
=
{
'X-Parse-Session-Token'
:
self
.
sessionToken
}
return
self
.
DELETE
(
self
.
_absolute_url
,
extra_headers
=
session_header
)
return
User
.
DELETE
(
self
.
_absolute_url
,
extra_headers
=
session_header
)
@staticmethod
def
signup
(
username
,
password
,
**
kw
):
...
...
@@ -101,7 +100,7 @@ class User(ParseResource):
try
:
User
.
POST
(
url
,
email
=
email
)
return
True
except
:
except
ParseError
:
return
False
def
_to_native
(
self
):
...
...
@@ -113,7 +112,7 @@ class User(ParseResource):
return
'_User'
def
__repr__
(
self
):
return
'<User:
%
s (Id
%
s)>'
%
(
self
.
username
,
self
.
objectId
)
return
'<User:
%
s (Id
%
s)>'
%
(
getattr
(
self
,
'username'
,
None
)
,
self
.
objectId
)
User
.
Query
=
QueryManager
(
User
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment