def main(): name = print_header() form = cgi.FieldStorage() WebUpload_ryw.setup_logging() # # get objstr. # success,objID,version = ryw.get_obj_str2(form) if not success: ryw.give_bad_news('CloneVersion: failed to get objstr.', logging.critical) ryw_upload.quick_exit(1) message = 'CloneVersion: ' + objID + '#' + str(version) logging.info(message) ryw.db_print2("<BR>" + message + "<BR>", 23); # # open search file. # success,searchFile = ryw.open_search_file( 'CloneVerson', os.path.join(RepositoryRoot, 'WWW', 'logs'), 'upload.log', os.path.join(RepositoryRoot, 'SearchFile'), False) if not success: if searchFile: searchFile.done() ryw.give_bad_news('CloneVersion: ' + 'open search file failed. ', logging.critical) ryw_upload.quick_exit(1) else: ryw.db_print2("search file opened." + "<BR>", 23); # # get meta and paths. # success,paths,meta = DisplaySelection.get_all_paths( objID, version, skipLock=False, searchFile=searchFile, allowNullSearchFile=False) if success: ryw.db_print_info_browser('CloneVersion: paths: ' + repr(paths), 24) ryw.db_print_info_browser('CloneVersion: meta: ' + repr(meta), 29) else: ryw_upload.quick_exit(1) if (searchFile): searchFile.done() # # we do want to clone the data if it were a list. # isList = ryw_meta.isList(meta) if isList: dataPath = paths[0] selName = DisplaySelection.get_sel_name(dataPath) if not selName: ryw.give_bad_news( 'CloneVersion: isList but failed to get selection name.', logging.error) ryw_upload.quick_exit(1) selPath = os.path.join(dataPath, selName) else: selPath,selName = None,None # # change meta. # meta = change_meta(meta, name) # # deal with auxi dir. # originalAuxiDir = paths[2] newAuxiDir = None tmpdir = None if os.path.exists(originalAuxiDir): tmpdir = WebUpload_ryw.attempt_make_tmpdir() if not tmpdir: ryw_upload.quick_exit(1) newAuxiDir = os.path.join(tmpdir, '_AUXI') message = 'CloneVersion: shutil.copytree(): ' + \ originalAuxiDir + ' -> ' + newAuxiDir try: shutil.copytree(originalAuxiDir, newAuxiDir) except: ryw.give_bad_news('failed: ' + message, logging.critical) ryw_upload.cleanup_and_exit(tmpdir, None, None, 1) ryw.db_print_info_browser(message, 29) # # Now try to put a new object in the repository. # note that the version number will be incremented. # # "selPath" used to be just None. # when I added cloning list, I'm just using this to pass in the # path name of the selection file. # if not WebUpload_ryw.try_upload_object(meta, selPath, newAuxiDir, cloneVersion=True): ryw_upload.cleanup_and_exit(tmpdir, None, None, 1) searchFile = WebUpload_ryw.show_one_server_object(meta) searchFile.done() ryw_upload.cleanup_and_exit(tmpdir, None, None, 0, successMessage = 'clone version completed.')
def main(): # initialization. print_header() form = cgi.FieldStorage() setup_logging() # cgi.print_form(form) success,objID,version = ryw.get_obj_str2(form) if not success: ryw_upload.quick_exit(1) logging.debug('EditObject: ' + objID + '#' + str(version)) if not ryw_meta.check_required_fields(form): ryw_upload.quick_exit(1) success,meta,objroot = ryw_meta.get_meta2(RepositoryRoot, objID, version) if not success: ryw_upload.quick_exit(1) reext = re_extract_or_not(form) if reext: paths = ryw_meta.get_paths(objroot, objID, version, meta, RepositoryRoot) if not paths: ryw.give_bad_news('EditObject: failed to get paths.', logging.critical) ryw_upload.quick_exit(1) dataPath = paths[0] fileName = get_file_name(dataPath) if not fileName: reext = False success = ryw_meta.process_error_fields(form, meta) if not success: ryw_upload.quick_exit(1) ryw_meta.process_fields(form, meta) logging.debug('EditObjects: ' + repr(meta)) meta = ryw_upload.get_change_date_time(meta) #ryw.give_news(repr(meta), logging.info) if reext: re_extract(dataPath, fileName, meta) success,searchFile = do_update_metadata(objroot, objID, version, meta) if not success: ryw_upload.quick_exit(1) show_one_server_object(meta, searchFile) ryw.give_good_news('edit completed.', logging.info) ryw_view.print_footer() if searchFile: searchFile.done() sys.exit(0)