def am_installcollection(annroot, userhome, options): """ Install software-defined collection data annalist_manager installcollection coll_id Copies data from an existing collection to a new collection. annroot is the root directory for the Annalist software installation. userhome is the home directory for the host system user issuing the command. options contains options parsed from the command line. returns 0 if all is well, or a non-zero status code. This value is intended to be used as an exit status code for the calling program. """ status, settings, site = get_settings_site(annroot, userhome, options) if status != am_errors.AM_SUCCESS: return status if len(options.args) > 1: print( "Unexpected arguments for %s: (%s)"% (options.command, " ".join(options.args)), file=sys.stderr ) return am_errors.AM_UNEXPECTEDARGS # Check collection Id coll_id = getargvalue(getarg(options.args, 0), "Collection Id to install: ") if coll_id in installable_collections: src_dir_name = installable_collections[coll_id]['data_dir'] else: print("Collection name to install not known: %s"%(coll_id), file=sys.stderr) print("Available collection Ids are: %s"%(",".join(installable_collections.keys()))) return am_errors.AM_NOCOLLECTION # Check if ciollection already exists coll = Collection.load(site, coll_id) if (coll and coll.get_values()): if options.force: print("Existing collection %s will be removed ('--force' specified)"%(coll_id), file=sys.stderr) Collection.remove(site, coll_id) else: print("Collection already exists: %s"%(coll_id), file=sys.stderr) return am_errors.AM_COLLECTIONEXISTS # Install collection now src_dir = os.path.join(annroot, "annalist/data", src_dir_name) print("Installing collection '%s' from data directory '%s'"%(coll_id, src_dir)) coll_metadata = installable_collections[coll_id]['coll_meta'] date_time_now = datetime.datetime.now().replace(microsecond=0) coll_metadata[ANNAL.CURIE.comment] = ( "Initialized at %s by `annalist-manager installcollection`"% date_time_now.isoformat() ) coll = site.add_collection(coll_id, coll_metadata) msgs = initialize_coll_data(src_dir, coll) if msgs: for msg in msgs: print(msg) status = am_errors.AM_INSTALLCOLLFAIL return status
def remove_collection(self, coll_id): """ Remove a collection from the site data. coll_id identifier for the collection to remove. Returns a non-False status code if the collection is not removed. """ log.debug("remove_collection: %s" % (coll_id)) return Collection.remove(self, coll_id)
def remove_collection(self, coll_id): """ Remove a collection from the site data. coll_id identifier for the collection to remove. Returns a non-False status code if the collection is not removed. """ log.debug("remove_collection: %s"%(coll_id)) if coll_id == layout.SITEDATA_ID: raise ValueError("Attempt to remove site data collection (%s)"%coll_id) return Collection.remove(self, coll_id)
def remove_collection(self, coll_id): """ Remove a collection from the site data. coll_id identifier for the collection to remove. Returns a non-False status code if the collection is not removed. """ log.debug("remove_collection: %s" % (coll_id)) if coll_id == layout.SITEDATA_ID: raise ValueError("Attempt to remove site data collection (%s)" % coll_id) return Collection.remove(self, coll_id)