Skip to content

Commit f4a5909

Browse files
committed
For #28817: FIXED failing tests in older sites due to new features
1 parent 9041d9d commit f4a5909

File tree

3 files changed

+92
-63
lines changed

3 files changed

+92
-63
lines changed

shotgun_api3/shotgun.py

Lines changed: 21 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,13 @@ def ensure_include_archived_projects(self):
171171
'label': 'include_archived_projects parameter'
172172
})
173173

174+
def ensure_per_project_customization(self):
175+
"""Wrapper for ensure_support"""
176+
return self._ensure_support({
177+
'version': (5, 4, 4),
178+
'label': 'project parameter'
179+
}, True)
180+
174181

175182
def __str__(self):
176183
return "ServerCapabilities: host %s, version %s, is_dev %s"\
@@ -643,6 +650,15 @@ def _construct_read_parameters(self,
643650
params['sorts'] = sort_list
644651
return params
645652

653+
654+
def _add_project_param(self, params, project_entity):
655+
656+
if project_entity and self.server_caps.ensure_per_project_customization():
657+
params["project"] = project_entity
658+
659+
return params
660+
661+
646662
def summarize(self,
647663
entity_type,
648664
filters,
@@ -1021,8 +1037,7 @@ def schema_entity_read(self, project_entity=None):
10211037

10221038
params = {}
10231039

1024-
if project_entity:
1025-
params["project"] = project_entity
1040+
params = self._add_project_param(params, project_entity)
10261041

10271042
if params:
10281043
return self._call_rpc("schema_entity_read", params)
@@ -1041,8 +1056,7 @@ def schema_read(self, project_entity=None):
10411056

10421057
params = {}
10431058

1044-
if project_entity:
1045-
params["project"] = project_entity
1059+
params = self._add_project_param(params, project_entity)
10461060

10471061
if params:
10481062
return self._call_rpc("schema_read", params)
@@ -1070,10 +1084,11 @@ def schema_field_read(self, entity_type, field_name=None, project_entity=None):
10701084
params = {
10711085
"type": entity_type,
10721086
}
1087+
10731088
if field_name:
10741089
params["field_name"] = field_name
1075-
if project_entity:
1076-
params["project"] = project_entity
1090+
1091+
params = self._add_project_param(params, project_entity)
10771092

10781093
return self._call_rpc("schema_field_read", params)
10791094

tests/test_api.py

Lines changed: 42 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1567,57 +1567,63 @@ class TestSessionTokenAuth(base.SessionTokenAuthLiveTestBase):
15671567
"""
15681568
Testing the session token based authentication method
15691569
"""
1570-
1570+
15711571
def test_humanuser_find(self):
15721572
"""Called find, find_one for known entities as session token based user"""
1573-
filters = []
1574-
filters.append(['project', 'is', self.project])
1575-
filters.append(['id', 'is', self.version['id']])
15761573

1577-
fields = ['id']
1574+
if self.sg.server_caps.version >= (5, 4, 1):
15781575

1579-
versions = self.sg.find("Version", filters, fields=fields)
1576+
filters = []
1577+
filters.append(['project', 'is', self.project])
1578+
filters.append(['id', 'is', self.version['id']])
15801579

1581-
self.assertTrue(isinstance(versions, list))
1582-
version = versions[0]
1583-
self.assertEqual("Version", version["type"])
1584-
self.assertEqual(self.version['id'], version["id"])
1580+
fields = ['id']
15851581

1586-
version = self.sg.find_one("Version", filters, fields=fields)
1587-
self.assertEqual("Version", version["type"])
1588-
self.assertEqual(self.version['id'], version["id"])
1582+
versions = self.sg.find("Version", filters, fields=fields)
1583+
1584+
self.assertTrue(isinstance(versions, list))
1585+
version = versions[0]
1586+
self.assertEqual("Version", version["type"])
1587+
self.assertEqual(self.version['id'], version["id"])
1588+
1589+
version = self.sg.find_one("Version", filters, fields=fields)
1590+
self.assertEqual("Version", version["type"])
1591+
self.assertEqual(self.version['id'], version["id"])
15891592

15901593
def test_humanuser_upload_thumbnail_for_version(self):
15911594
"""simple upload thumbnail for version test as session based token user."""
1592-
this_dir, _ = os.path.split(__file__)
1593-
path = os.path.abspath(os.path.expanduser(
1594-
os.path.join(this_dir,"sg_logo.jpg")))
1595-
size = os.stat(path).st_size
15961595

1597-
# upload thumbnail
1598-
thumb_id = self.sg.upload_thumbnail("Version",
1599-
self.version['id'], path)
1600-
self.assertTrue(isinstance(thumb_id, int))
1596+
if self.sg.server_caps.version >= (5, 4, 1):
16011597

1602-
# check result on version
1603-
version_with_thumbnail = self.sg.find_one('Version',
1604-
[['id', 'is', self.version['id']]],
1605-
fields=['image'])
1598+
this_dir, _ = os.path.split(__file__)
1599+
path = os.path.abspath(os.path.expanduser(
1600+
os.path.join(this_dir,"sg_logo.jpg")))
1601+
size = os.stat(path).st_size
16061602

1607-
self.assertEqual(version_with_thumbnail.get('type'), 'Version')
1608-
self.assertEqual(version_with_thumbnail.get('id'), self.version['id'])
1603+
# upload thumbnail
1604+
thumb_id = self.sg.upload_thumbnail("Version",
1605+
self.version['id'], path)
1606+
self.assertTrue(isinstance(thumb_id, int))
16091607

1608+
# check result on version
1609+
version_with_thumbnail = self.sg.find_one('Version',
1610+
[['id', 'is', self.version['id']]],
1611+
fields=['image'])
16101612

1611-
h = Http(".cache")
1612-
thumb_resp, content = h.request(version_with_thumbnail.get('image'), "GET")
1613-
self.assertEqual(thumb_resp['status'], '200')
1614-
self.assertEqual(thumb_resp['content-type'], 'image/jpeg')
1613+
self.assertEqual(version_with_thumbnail.get('type'), 'Version')
1614+
self.assertEqual(version_with_thumbnail.get('id'), self.version['id'])
16151615

1616-
# clear thumbnail
1617-
response_clear_thumbnail = self.sg.update("Version",
1618-
self.version['id'], {'image':None})
1619-
expected_clear_thumbnail = {'id': self.version['id'], 'image': None, 'type': 'Version'}
1620-
self.assertEqual(expected_clear_thumbnail, response_clear_thumbnail)
1616+
1617+
h = Http(".cache")
1618+
thumb_resp, content = h.request(version_with_thumbnail.get('image'), "GET")
1619+
self.assertEqual(thumb_resp['status'], '200')
1620+
self.assertEqual(thumb_resp['content-type'], 'image/jpeg')
1621+
1622+
# clear thumbnail
1623+
response_clear_thumbnail = self.sg.update("Version",
1624+
self.version['id'], {'image':None})
1625+
expected_clear_thumbnail = {'id': self.version['id'], 'image': None, 'type': 'Version'}
1626+
self.assertEqual(expected_clear_thumbnail, response_clear_thumbnail)
16211627

16221628

16231629
class TestProjectLastAccessedByCurrentUser(base.LiveTestBase):

tests/test_api_long.py

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import base
77
import random
88

9+
from shotgun_api3 import *
910

1011
class TestShotgunApiLong(base.LiveTestBase):
1112

@@ -98,32 +99,39 @@ def test_schema(self):
9899
self.assertTrue(ret_val)
99100

100101
def test_schema_with_project(self):
101-
"""Called schema functions"""
102+
"""Called schema functions with project"""
102103

103104
project_entity = {'type': 'Project', 'id': 0}
104-
schema = self.sg.schema_entity_read(project_entity)
105-
self.assertTrue(schema, dict)
106-
self.assertTrue(len(schema) > 0)
107-
self.assertTrue('Project' in schema)
108-
self.assertTrue('visible' in schema['Project'])
109105

110-
schema = self.sg.schema_read(project_entity)
111-
self.assertTrue(schema, dict)
112-
self.assertTrue(len(schema) > 0)
113-
self.assertTrue('Version' in schema)
114-
self.assertFalse('visible' in schema.keys())
106+
if self.sg.server_caps.version < (5, 4, 4):
115107

116-
schema = self.sg.schema_field_read('Version', project_entity=project_entity)
117-
self.assertTrue(schema, dict)
118-
self.assertTrue(len(schema) > 0)
119-
self.assertTrue('user' in schema)
120-
self.assertTrue('visible' in schema['user'])
108+
self.assertRaises(ShotgunError, self.sg.schema_entity_read, project_entity)
121109

122-
schema = self.sg.schema_field_read('Version', 'user', project_entity)
123-
self.assertTrue(schema, dict)
124-
self.assertTrue(len(schema) > 0)
125-
self.assertTrue('user' in schema)
126-
self.assertTrue('visible' in schema['user'])
110+
else:
111+
112+
schema = self.sg.schema_entity_read(project_entity)
113+
self.assertTrue(schema, dict)
114+
self.assertTrue(len(schema) > 0)
115+
self.assertTrue('Project' in schema)
116+
self.assertTrue('visible' in schema['Project'])
117+
118+
schema = self.sg.schema_read(project_entity)
119+
self.assertTrue(schema, dict)
120+
self.assertTrue(len(schema) > 0)
121+
self.assertTrue('Version' in schema)
122+
self.assertFalse('visible' in schema.keys())
123+
124+
schema = self.sg.schema_field_read('Version', project_entity=project_entity)
125+
self.assertTrue(schema, dict)
126+
self.assertTrue(len(schema) > 0)
127+
self.assertTrue('user' in schema)
128+
self.assertTrue('visible' in schema['user'])
129+
130+
schema = self.sg.schema_field_read('Version', 'user', project_entity)
131+
self.assertTrue(schema, dict)
132+
self.assertTrue(len(schema) > 0)
133+
self.assertTrue('user' in schema)
134+
self.assertTrue('visible' in schema['user'])
127135

128136

129137
if __name__ == '__main__':

0 commit comments

Comments
 (0)