Skip to content

Commit c7a3ae7

Browse files
committed
For #27860, added server version checks.
1 parent f632d00 commit c7a3ae7

2 files changed

Lines changed: 50 additions & 29 deletions

File tree

shotgun_api3/shotgun.py

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1006,7 +1006,11 @@ def schema_entity_read(self, project_entity=None):
10061006
params = {}
10071007

10081008
if project_entity:
1009-
params["project"] = project_entity
1009+
if not self.server_caps.version or self.server_caps.version < (5, 4, 4):
1010+
raise ShotgunError("Per project schema operations require server "\
1011+
"version 5.4.4 or higher, server is %s" % (self.server_caps.version,))
1012+
else:
1013+
params["project"] = project_entity
10101014

10111015
if params:
10121016
return self._call_rpc("schema_entity_read", params)
@@ -1026,8 +1030,12 @@ def schema_read(self, project_entity=None):
10261030
params = {}
10271031

10281032
if project_entity:
1029-
params["project"] = project_entity
1030-
1033+
if not self.server_caps.version or self.server_caps.version < (5, 4, 4):
1034+
raise ShotgunError("Per project schema operations require server "\
1035+
"version 5.4.4 or higher, server is %s" % (self.server_caps.version,))
1036+
else:
1037+
params["project"] = project_entity
1038+
10311039
if params:
10321040
return self._call_rpc("schema_read", params)
10331041
else:
@@ -1056,8 +1064,13 @@ def schema_field_read(self, entity_type, field_name=None, project_entity=None):
10561064
}
10571065
if field_name:
10581066
params["field_name"] = field_name
1059-
if project_entity:
1060-
params["project"] = project_entity
1067+
1068+
if project_entity:
1069+
if not self.server_caps.version or self.server_caps.version < (5, 4, 4):
1070+
raise ShotgunError("Per project schema operations require server "\
1071+
"version 5.4.4 or higher, server is %s" % (self.server_caps.version,))
1072+
else:
1073+
params["project"] = project_entity
10611074

10621075
return self._call_rpc("schema_field_read", params)
10631076

tests/test_api_long.py

Lines changed: 32 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -100,30 +100,38 @@ def test_schema(self):
100100
def test_schema_with_project(self):
101101
"""Called schema functions"""
102102

103-
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'])
109-
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())
115-
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'])
121-
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'])
103+
if not self.sg.server_caps.version or self.sg.server_caps.version < (5, 4, 4):
104+
# server does not support this!
105+
self.assertRaises(shotgun_api3.ShotgunError, self.sg.schema_entity_read, {'type': 'Project', 'id': 0})
106+
self.assertRaises(shotgun_api3.ShotgunError, self.sg.schema_read, {'type': 'Project', 'id': 0})
107+
self.assertRaises(shotgun_api3.ShotgunError, self.sg.schema_field_read, 'Version', None, {'type': 'Project', 'id': 0})
108+
self.assertRaises(shotgun_api3.ShotgunError, self.sg.schema_field_read, 'Version', 'user', {'type': 'Project', 'id': 0})
109+
110+
else:
111+
project_entity = {'type': 'Project', 'id': 0}
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)