Commit 88f16353 authored by Gao, Shang's avatar Gao, Shang
Browse files

code is now approx 80 max char per line

parent 6af73512
Loading
Loading
Loading
Loading
+29 −18
Original line number Diff line number Diff line
@@ -50,8 +50,8 @@ class crossbowBase(object):

        return metadata

    def create_package(self,package,owner_org,title=None,description=None,author=None,author_email=None,
        maintainer=None,maintainer_email=None,version=None,tags=[]):
    def create_package(self,package,owner_org,title=None,description=None,author=None,
        author_email=None,maintainer=None,maintainer_email=None,version=None,tags=[]):
        '''
        creates a new package (dataset)

@@ -79,9 +79,9 @@ class crossbowBase(object):
        '''
        if " " in package or any(x.isupper() for x in package):
            raise Exception('package must be lowercase and without spaces')
        self.ckan.action.package_create(name=package,owner_org=owner_org,title=title,author=author,
            author_email=author_email,maintainer=maintainer,maintainer_email=maintainer_email,
            notes=description,version=version,tags=tags)
        self.ckan.action.package_create(name=package,owner_org=owner_org,title=title,
            author=author,author_email=author_email,maintainer=maintainer,
            maintainer_email=maintainer_email,notes=description,version=version,tags=tags)

    def edit_package(self,package,*args,**kwargs):
        '''
@@ -93,7 +93,8 @@ class crossbowBase(object):
          see create_package() function for additional parameters
        '''
        #add args to kwargs dic
        keywords = ['owner_org','title','notes','author','author_email','maintainer','maintainer_email','version','tags']
        keywords = ['owner_org','title','notes','author','author_email','maintainer',\
            'maintainer_email','version','tags']
        for idx,arg in enumerate(args):
            kwargs[keywords[idx]] = arg
        
@@ -138,7 +139,8 @@ class crossbowBase(object):
            names of available resources in package
        '''
        metadata = self.ckan.action.package_show(id=package)
        resources = [resource['name'] for resource in metadata['resources'] if resource['url'][-4:]==".dcd"]
        resources = [resource['name'] for resource in metadata['resources'] \
            if resource['url'][-4:]==".dcd"]
        return resources

    def list_non_dcd_resources(self,package):
@@ -153,7 +155,8 @@ class crossbowBase(object):
            names of available resources in package
        '''
        metadata = self.ckan.action.package_show(id=package)
        resources = [resource['name'] for resource in metadata['resources'] if resource['url'][-4:]!=".dcd"]
        resources = [resource['name'] for resource in metadata['resources'] \
            if resource['url'][-4:]!=".dcd"]
        return resources

    def get_resource_details(self,package,resource):
@@ -170,7 +173,8 @@ class crossbowBase(object):
            metadata for specific resource
        '''
        pkg_metadata = self.ckan.action.package_show(id=package)
        rsc_metadata = [metadata for metadata in pkg_metadata['resources'] if metadata['name']==resource][0]
        rsc_metadata = [metadata for metadata in pkg_metadata['resources'] \
            if metadata['name']==resource][0]
        print "package name: %s" % package
        print "resource name: %s" % resource
        print "resource description: %s" % rsc_metadata['description']
@@ -208,8 +212,8 @@ class crossbowMount(crossbowBase):
      - get_package_details(package)
        prints and returns details for a specific package

      - create_package(package,owner_org,title=None,description=None,author=None,author_email=None,
            maintainer=None,maintainer_email=None,version=None,tags=[])
      - create_package(package,owner_org,title=None,description=None,author=None,
            author_email=None,maintainer=None,maintainer_email=None,version=None,tags=[])
        creates a new package (dataset)

      - edit_package(package,*args,**kwargs)
@@ -305,7 +309,8 @@ class crossbowMount(crossbowBase):

        #copy file to crossbow NFS
        prog = ProgressBar(widgets=[Percentage(), Bar()], maxval=100).start()
        self._copy_with_progress(resource_path, nfs_path, lambda pos, total: prog.update(100*pos/float(total)))
        self._copy_with_progress(resource_path, nfs_path, 
            lambda pos, total: prog.update(100*pos/float(total)))
        print ''

        #add file to CKAN
@@ -328,7 +333,8 @@ class crossbowMount(crossbowBase):
        '''
        #get current metadata
        pkg_metadata = self.ckan.action.package_show(id=package)
        rsc_metadata = [metadata for metadata in pkg_metadata['resources'] if metadata['name']==resource][0]
        rsc_metadata = [metadata for metadata in pkg_metadata['resources'] \
            if metadata['name']==resource][0]

        #update metadata with new edits
        if new_name:
@@ -350,7 +356,8 @@ class crossbowMount(crossbowBase):
             NFS file URI path to resource (e.g. "/data/file.csv")
         '''
         pkg_metadata = self.ckan.action.package_show(id=package)
         resource_path = [metadata['url'] for metadata in pkg_metadata['resources'] if metadata['name']==resource][0]
         resource_path = [metadata['url'] for metadata in pkg_metadata['resources'] \
            if metadata['name']==resource][0]
         resource_path = resource_path.replace("file://CROSSBOW_NFS/", self.NFS_path)
         return resource_path

@@ -367,13 +374,15 @@ class crossbowMount(crossbowBase):
            directory to copy resource into
        '''
        pkg_metadata = self.ckan.action.package_show(id=package)
        resource_path = [metadata['url'] for metadata in pkg_metadata['resources'] if metadata['name']==resource][0]
        resource_path = [metadata['url'] for metadata in pkg_metadata['resources'] \
            if metadata['name']==resource][0]
        resource_path = resource_path.replace("file://CROSSBOW_NFS/", self.NFS_path)
        dest_path = destination + os.path.basename(resource_path)
        
        #copy file to local drive
        prog = ProgressBar(widgets=[Percentage(), Bar()], maxval=100).start()
        self._copy_with_progress(resource_path, dest_path, lambda pos, total: prog.update(100*pos/float(total)))
        self._copy_with_progress(resource_path, dest_path, 
            lambda pos, total: prog.update(100*pos/float(total)))
        print ''

    def delete_resource(self,package,resource):
@@ -390,13 +399,15 @@ class crossbowMount(crossbowBase):
            if True, also delete the resource file from NFS
        '''
        pkg_metadata = self.ckan.action.package_show(id=package)
        resource_id = [metadata['id'] for metadata in pkg_metadata['resources'] if metadata['name']==resource][0]
        resource_id = [metadata['id'] for metadata in pkg_metadata['resources'] \
            if metadata['name']==resource][0]

        #delete from ckan
        self.ckan.action.resource_delete(id=resource_id)

        #delete from nfs
        resource_path = [metadata['url'] for metadata in pkg_metadata['resources'] if metadata['name']==resource][0]
        resource_path = [metadata['url'] for metadata in pkg_metadata['resources'] \
            if metadata['name']==resource][0]
        resource_path = resource_path.replace("file://CROSSBOW_NFS/", self.NFS_path)
        os.remove(resource_path)