@@ -88,7 +88,10 @@ def _load_and_validate_datapackage(url=None, upload=None):
8888 try :
8989
9090 if _upload_attribute_is_valid (upload ):
91- dp = datapackage .DataPackage (upload .file )
91+ if toolkit .check_ckan_version (min_version = "2.9" ):
92+ dp = datapackage .DataPackage (upload )
93+ else :
94+ dp = datapackage .DataPackage (upload .file )
9295 else :
9396
9497 dp = datapackage .DataPackage (url )
@@ -180,16 +183,20 @@ def _create_and_upload_local_resource(context, resource):
180183def _create_and_upload_resource (context , resource , the_file ):
181184 resource ['url' ] = 'url'
182185 resource ['url_type' ] = 'upload'
183- resource ['upload' ] = FileStorage (the_file , the_file .name , the_file .name )
186+
187+ if toolkit .check_ckan_version (min_version = "2.9" ):
188+ resource ['upload' ] = FileStorage (the_file , the_file .name , the_file .name )
189+ else :
190+ resource ['upload' ] = _UploadLocalFileStorage (the_file )
184191
185192 toolkit .get_action ('resource_create' )(context , resource )
186193
187194
188195def _upload_attribute_is_valid (upload ):
189- return hasattr (upload , 'file' ) and hasattr (upload .file , 'read' )
190-
196+ return hasattr (upload , 'read' ) or hasattr (upload , 'file' ) and hasattr (upload .file , 'read' )
191197
192- class _UploadLocalFileStorage (FileStorage ):
198+ # Used only in CKAN < 2.9
199+ class _UploadLocalFileStorage (cgi .FieldStorage ):
193200 def __init__ (self , fp , * args , ** kwargs ):
194201 self .name = fp .name
195202 self .filename = fp .name
0 commit comments