def main():
    ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'),
                      'upload.log')
    logging.debug('ThisSelToCurrSel: entered...')
    ryw_view.print_header_logo()

    rfpath = get_file_path(allowNullSearchFile = True)
    if not rfpath:
        ryw.give_bad_news(
            'ThisSelToCurrSel: no selection file name found.',
            logging.error)
        DisplaySelection.exit_now(1)

    queueName = DeleteRepReq.get_queue_name()
    if not queueName:
        ryw.give_bad_news(
            'ThisSelToCurrSel: failed to get current selection file name.',
            logging.error)
        DisplaySelection.exit_now(1)

    try:
        shutil.copyfile(rfpath, queueName)
    except:
        ryw.give_bad_news('ThisSelToCurrSel: failed to overwrite: ' +
                          rfpath + ' -> ' + queueName,
                          logging.critical)
        DisplaySelection.exit_now(1)

    ryw.give_news(
        'This selection successfully loaded as the current selection.',
        logging.info)
    ryw.give_news('You may want to reload the page containing '+
                  'the affected current selection.', logging.info)
    ryw_view.print_footer()
Beispiel #2
0
def print_header():
    ryw_view.print_header_logo()
    print "<TITLE>Search the Repository</TITLE>"
    name = os.getenv("REMOTE_USER")
    #print '<P> Hello,', name
    #print '<BR>'
    return name
def main():
    name = ShowQueue.init_log()
    ryw_view.print_header_logo()

    queueName = DeleteRepReq.get_queue_name()
    if not queueName:
        ryw.give_bad_news(
            'DelQueueData.py: failed to get current selection file name.',
            logging.error)
        DisplaySelection.exit_now(1)

    queueSel = ProcessDownloadReq.get_reqs(queueName)
    if not queueSel or len(queueSel) == 0:
        ryw.give_bad_news(
            'DelQueueData.py: there is nothing in the selection.',
            logging.error)
        DisplaySelection.exit_now(1)

    success = DelSearchAll.delete_all(queueSel)
    if success:
        ryw.give_news('All these objects have been removed.', logging.info)
    else:
        ryw.give_bad_news('DelQueueData.py: an error occurred.',
                          logging.error)
        
    DisplaySelection.exit_now(0)
def main():
    ryw.check_logging(os.path.join(RepositoryRoot, "WWW", "logs"), "upload.log")
    logging.debug("SelectAll: entered...")

    ryw_view.print_header_logo()

    name = os.getenv("REMOTE_USER")

    if name == "" or name == None:
        ryw.give_bad_news("SelectAll: no user name given", logging.error)
        ryw_upload.quick_exit(1)

    queue = os.path.join(RepositoryRoot, "QUEUES", name)

    try:
        resources = su.parseKeyValueFile(os.path.join(RepositoryRoot, "Resources.txt"))
        searchFileName = resources["searchfile"]
    except:
        ryw.give_bad_news("SelectAll: failed to get search file name from resources.", logging.critical)
        ryw_upload.quick_exit(1)

    success, searchFile = ryw.open_search_file(
        "SelectAll:", os.path.join(RepositoryRoot, "WWW", "logs"), "upload.log", searchFileName, False
    )
    if not success:
        ryw.give_bad_news("SelectAll: failed to open search file.", logging.critical)
        ryw_upload.quick_exit(1)

    if not ProcessDownloadReq.add_all(queue, searchFile):
        ryw.give_bad_news("selectall: addAll failed.", logging.critical)
        ryw_upload.quick_exit(1)

    searchFile.done()
    ryw_upload.quick_exit(0)
def main():
    ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'),
                      'upload.log')
    logging.debug('ThisSelAddedToCurrSel: entered...')
    ryw_view.print_header_logo()

    rfpath = ThisSelToCurrSel.get_file_path(allowNullSearchFile=True)
    if not rfpath:
        ryw.give_bad_news(
            'ThisSelAddedToCurrSel: no selection file name found.',
            logging.error)
        DisplaySelection.exit_now(1)

    savedSel = ProcessDownloadReq.get_reqs(rfpath)
    if (not savedSel) or (len(savedSel) == 0):
        ryw.give_news('ThisSelAddedToCurrSel: this selection is empty.',
                      logging.error)
        DisplaySelection.exit_now(1)

    queueName = DeleteRepReq.get_queue_name()
    if not queueName:
        ryw.give_bad_news(
            'ThisSelToCurrSel: failed to get current selection file name.',
            logging.error)
        DisplaySelection.exit_now(1)

    queueSel = ProcessDownloadReq.get_reqs(queueName)

    AddSearchAll.union_and_write(queueSel, savedSel, queueName)
    ryw.give_news('You may want to reload the page containing '+
                  'the affected current selection.', logging.info)
    DisplaySelection.exit_now(0)
def main():
    name = init_log()
    ryw_view.print_header_logo()
    print '<TITLE>Browsing Selection</TITLE>'

    offsetResult = get_offset()
    success,isAll,offsetNum = offsetResult
    if not success:
        DisplaySelection.exit_now(1)
    
    print_header(name)
    rfpath = os.path.join(RepositoryRoot, 'QUEUES', name)
    reqList = read_list(rfpath)
    if not reqList:
        ryw.give_news('no object selected.', logging.info)
        DisplaySelection.exit_now(0)


    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists(
        'ShowQueue.main:')

    if not success:
        DisplaySelection.exit_now(0)

    if go_through_list(reqList, offResult = offsetResult,
                       searchFile = searchFile, reverseLists = reverseLists):
        print_buttons(name)
        
    ryw_view.print_footer()
    searchFile.done()
    reverseLists.done()
def main():
    name = ShowQueue.init_log()
    ryw_view.print_header_logo()

    rfpath = ThisSelToCurrSel.get_file_path(allowNullSearchFile=True)
    if not rfpath:
        ryw.give_bad_news(
            'DelSelData.py: no selection file name found.', logging.error)
        DisplaySelection.exit_now(1)
    
    selection = ProcessDownloadReq.get_reqs(rfpath)
    if not selection or len(selection) == 0:
        ryw.give_bad_news(
            'DelSelData.py: there is nothing in the selection.',
            logging.error)
        DisplaySelection.exit_now(1)

    success = DelSearchAll.delete_all(selection)
    if success:
        ryw.give_news('All these objects have been removed.', logging.info)
    else:
        ryw.give_bad_news('DelSelData.py: an error occurred.',
                          logging.error)
        
    DisplaySelection.exit_now(0)
def print_header():
    name = os.getenv("REMOTE_USER")
    ryw_view.print_header_logo()

    print "<TITLE>Edit Result</TITLE>"
    resultStr = """
<P><FONT SIZE=3><B>Edit result</B></FONT>:
"""
    print resultStr
def print_header():
    name = os.getenv("REMOTE_USER")
    ryw_view.print_header_logo()

    print "<TITLE>Clone Version Result</TITLE>"
    greetStr = """
<P><FONT SIZE=3><B>Clone version result:</B></FONT>
"""
    print greetStr

    return name
def main():
    ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'),
                      'upload.log')
    logging.debug('CurrSelAddedToThisSel: entered...')
    ryw_view.print_header_logo()


    success,objID,version = ryw.get_obj_str()
    if not success:
        ryw.give_bad_news('CurrSelToThisSel: failed to get objstr.',
                          logging.critical)
        DisplaySelection.exit_now(1)
    
    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists('CurrSelAddedToThisSel:')
    if not success:
        ryw.give_bad_news('CurrSelAddedToThisSel: ' +
                          'open_searchfile_reverselists failed.',
                          logging.critical)
        DisplaySelection.exit_now(1)
    

    rfpath = DisplaySelection.get_file_path(
        objID, version, searchFile = searchFile)
    if not rfpath:
        ryw.give_bad_news(
            'CurrSelAddedToThisSel: no selection file name found.',
            logging.error)
        DisplaySelection.exit_now(1)

    queueName = DeleteRepReq.get_queue_name()
    if not queueName:
        ryw.give_bad_news(
            'CurrSelToThisSel: failed to get current selection file name.',
            logging.error)
        DisplaySelection.exit_now(1)

    queueSel = ProcessDownloadReq.get_reqs(queueName)
    savedSel = ProcessDownloadReq.get_reqs(rfpath)
    newContainees = list(queueSel)

    AddSearchAll.union_and_write(savedSel, queueSel, rfpath)
    ryw.give_news('You may want to reload the page containing '+
                  'this selection.', logging.info)


    success = reverseLists.add(objID+'#'+str(version), newContainees)
    if not success:
        ryw.give_bad_news('CurrSelAddedToThisSel: reverseLists.add failed.',
                          logging.critical)

    reverseLists.done()
    searchFile.done()
    DisplaySelection.exit_now(0)
def print_header():
    name = os.getenv("REMOTE_USER")
    ryw_view.print_header_logo()

    print "<TITLE>Upload Result</TITLE>"
    greetStr = """
<P><FONT SIZE=3><B>Upload result</B></FONT> (by %(user)s):
"""
    dict = {}
    dict["user"] = name
    print greetStr % dict

    return name
def main():
    name = ShowQueue.init_log()
    ryw_view.print_header_logo()
    
    currSel,queueName = get_curr_sel(name)

    searchSel = get_search_result()
    if not searchSel:
        ryw.give_bad_news(
            'AddSearchAll: failed to load current search result.',
            logging.error)
        DisplaySelection.exit_now(1)

    union_and_write(currSel, searchSel, queueName)
    DisplaySelection.exit_now(0)
def main():
    init_log()
    ryw_view.print_header_logo()
    print '<TITLE>Test ReverseLists</TITLE>'

    success,reverseLists = ReverseLists.open_reverse_lists(
        'TestReverseLists:',
        os.path.join(RepositoryRoot, 'WWW', 'logs'),
        'upload.log',
        os.path.join(RepositoryRoot, 'ReverseLists'),
        False,
        allowNullSearchFile = True)
    if success:
        reverseLists.printme()
        reverseLists.done()
    ryw_view.print_footer()
def main():
    name = ShowQueue.init_log()
    ryw_view.print_header_logo()
    
    searchSel = AddSearchAll.get_search_result()
    if not searchSel:
        ryw.give_bad_news(
            'DelSearchAll: failed to load current search result.',
            logging.error)
        DisplaySelection.exit_now(1)

    success = delete_all(searchSel)
    if success:
        ryw.give_news('All these objects have been removed.', logging.info)
    else:
        ryw.give_bad_news('DelSearchAll.py: an error occurred.',
                          logging.error)
        
    DisplaySelection.exit_now(0)
def main():
    ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'),
                      'upload.log')
    logging.debug('DisplayObject: entered...')
    ryw_view.print_header_logo()

    print "<TITLE>Displaying an Object</TITLE>"

    success,objID,version = ryw.get_obj_str()
    if not success:
        ryw.give_bad_news('DisplayObject: failed to get objstr.',
                          logging.error)
        DisplaySelection.exit_now(1)

    if do_show(objID, version):
        pass
	#sys.stdout.write("True")
        #ryw.give_good_news('Delete object: apparent success', logging.info)

    DisplaySelection.exit_now(0)
def init_vals():
    ryw_view.print_header_logo()
    
    form = cgi.FieldStorage()
    tmpdir = form.getfirst('tmpdir', '')
    jobfile = form.getfirst('jobfile', '')
    autorunMerge = form.getfirst('autorun','')
    overwrite = form.getfirst('overwrite', '')
    
    if not tmpdir or not jobfile:
        ryw.give_bad_news(
            'ProcessDiscs.init_vals: bad input: tmpdir, jobfile: ' +
            tmpdir + ' ' + jobfile, logging.error)
        cgi.print_form(form)
        return (False, None, None, None, None)

    overWrite = False
    if overwrite == 'true' or overwrite == 'True':
        overWrite = True

    return (True, tmpdir, jobfile,autorunMerge, overWrite)
def main():
    ryw.check_logging(os.path.join(RepositoryRoot, "WWW", "logs"), "upload.log")
    logging.info("ClearTmp: entered...")

    ryw_view.print_header_logo()

    try:
        resources = su.parseKeyValueFile(os.path.join(RepositoryRoot, "Resources.txt"))
        resTmpin = resources["tmpin"]
        resTmpOut = resources["tmpout"]
        robotDir = resources["robotsjobdir"]
    except:
        ryw.give_bad_news("failed to parse resource file.", logging.critical)
        sys.exit(1)

    ryw.empty_tmp_dir(resTmpin, chmodFirst=True)
    ryw.empty_tmp_dir(resTmpOut)
    ryw.empty_tmp_dir(robotDir, skipList=["Status", "Log"])

    ryw_view.print_footer()
    sys.exit(0)
def main():
	ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'),
                      'upload.log')
	logging.debug('eraseDisc.py: attempted...')
	robotJobsDir = get_resources()

	ryw_view.print_header_logo()
	
	if not robotJobsDir:
		ryw_upload.quick_exit(1)
	
	if not find_scsi_string_for_eraser(robotJobsDir):
		ryw_upload.quick_exit(1)
		
	count = 100
	filename = write_job_file(count, robotJobsDir)
	if not filename:
		ryw_upload.quick_exit(1)
	
	do_erase(filename, count, robotJobsDir)
	wait_to_end_and_cleanup(filename, count, robotJobsDir)
	
	ryw_view.print_footer()
def main():
    init_log()
    ryw_view.print_header_logo()
    print '<TITLE>Rebuild ReverseLists</TITLE>'

    success,newReverseListsFile,objectStoreRoot = decide_path()
    if not success:
        sys.exit(1)

    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists(
            'RebuildReverseLists:',
            newReverseListsFileName = newReverseListsFile)
    if not success:
        sys.exit(1)
    else:
        ryw.give_news2('<BR>new ReverseLists generated at: ' +
                       newReverseListsFile + '<BR>', logging.info)

    go_through_object_store(objectStoreRoot, reverseLists)

    if reverseLists:
        reverseLists.done()
    ryw_view.print_footer()
def main():
    """modeled after ShowQueue.py."""

    name = ShowQueue.init_log()
    ryw_view.print_header_logo()
    print "<TITLE>Prepare for Automated Hindi Translation</TITLE>"

    rfpath = os.path.join(RepositoryRoot, "QUEUES", name)
    reqList = ShowQueue.read_list(rfpath)
    if not reqList:
        ryw.give_news("SelectText.py: no object selected.", logging.info)
        DisplaySelection.exit_now(0)

    success, searchFile, reverseLists = ReverseLists.open_searchfile_reverselists("SelectTexts.main:")

    if not success:
        DisplaySelection.exit_now(0)

    extract_texts(reqList, searchFile)

    ryw.give_news("done.", logging.info)
    ryw_view.print_footer()
    searchFile.done()
    reverseLists.done()
def main():
    ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'),
                      'upload.log')
    logging.debug('CurrSelToThisSel: entered...')
    ryw_view.print_header_logo()


    success,objID,version = ryw.get_obj_str()
    if not success:
        ryw.give_bad_news('CurrSelToThisSel: failed to get objstr.',
                          logging.critical)
        DisplaySelection.exit_now(1)
    
    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists('CurrSelToThisSel:')
    if not success:
        ryw.give_bad_news('CurrSelToThisSel: ' +
                          'open_searchfile_reverselists failed.',
                          logging.critical)
        DisplaySelection.exit_now(1)
    

    rfpath = DisplaySelection.get_file_path(
        objID, version, searchFile = searchFile)
    if not rfpath:
        ryw.give_bad_news(
            'CurrSelToThisSel: no selection file name found.',
            logging.error)
        DisplaySelection.exit_now(1)
    oldContainees = ShowQueue.read_list(rfpath)

    queueName = DeleteRepReq.get_queue_name()
    if not queueName:
        ryw.give_bad_news(
            'CurrSelToThisSel: failed to get current selection file name.',
            logging.error)
        DisplaySelection.exit_now(1)
    newContainees = ShowQueue.read_list(queueName)

    try:
        shutil.copyfile(queueName, rfpath)
    except:
        ryw.give_bad_news('CurrSelToThisSel: failed to overwrite: ' +
                          queueName + ' -> ' + rfpath,
                          logging.critical)
        DisplaySelection.exit_now(1)

    ryw.give_news(
        'The current selection successfully loaded as this selection.',
        logging.info)
    ryw.give_news('You may want to reload the page containing '+
                  'this selection.', logging.info)

    success = reverseLists.redefine_container(
        objID+'#'+str(version), oldContainees, newContainees)
    if not success:
        ryw.give_bad_news('CurrSelToThisSel: ' +
                          'reverseLists.redefine_container failed.',
                          logging.critical)

    reverseLists.done()
    searchFile.done()
    ryw_view.print_footer()
def main():

    name = ShowQueue.init_log('DisplayVersions')
    ryw_view.print_header_logo()
    print '<TITLE>Display All Versions</TITLE>'

    form = cgi.FieldStorage()
    objID = form.getfirst('objid', '')

    if not objID:
        ryw.give_bad_news(
            'DisplayVersions: no objID given.', logging.error)
        exit_now(1)
    else:
        ryw.db_print_info_browser('DisplayVersions: objID = ' + objID, 32)

    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists(
        'DisplaySelection.main:')
    if not success:
        exit_now(1)

    print_title()

    success,allVersions = searchFile.get_all_version_meta(objID)
    if not success:
        ryw.give_bad_news(
            'DisplayVersion: searchFile.get_all_version_meta failed: ' +
            objID, logging.error)
        exit_now(1)    

    numVers = len(allVersions)

    if numVers < 1:
        ryw.give_bad_news(
            'DisplayVersions: no version found.', logging.error)
        exit_now(1)
    
    metaList = allVersions.values()
    ryw.db_print_info_browser('DisplayVersions: ' + repr(metaList), 32)
    metaList = ryw.sortmeta(metaList)

    displayObject = ryw_view.DisplayObject(
        RepositoryRoot,
        calledByVillageSide = False,
        missingFileFunc = Browse.reqDownloadFunc,
        searchFile = searchFile,
        reverseLists = reverseLists)

    print "<BR><B><FONT SIZE=2>Displaying " + str(numVers) + \
          " version(s) of the object.</FONT></B>"

    displayObject.begin_print()
    for meta in metaList:
        displayObject.show_an_object_compact(meta)
    displayObject.end_print()

    ryw_view.print_footer()

    reverseLists.done()
    searchFile.done()
def main():
    """modeled after ChapterListForm.py.
    This is for displaying a form that allows editing the chapter list."""

    name = ShowQueue.init_log()
    ryw_view.print_header_logo()
    print '<TITLE>Processing the Chapter List</TITLE>'

    ryw.db_print2('<BR>ChapterListFormHandle.py: entered... <BR>', 39)

    form = cgi.FieldStorage()

    success,objID,version = ryw.get_obj_str(form = form)
    if not success:
        ryw.give_bad_news('ChapterListFormHandle: failed to get objstr.',
                          logging.critical)
        DisplaySelection.exit_now(1)

    ryw.db_print2('ChapterListFormHandle: objstr is: ' +
                  objID + '#' + str(version), 40)

    chapterList = ChapterList.ChapterList(objID + '#' + str(version))
    success,formEntries = chapterList.process_form(form)
    
    if not success:
        ryw.give_bad_news('ChapterListFormHandle: process_form() failed.',
                          logging.error)
        DisplaySelection.exit_now(1)
    
    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists(
        'DisplaySelection.main:')
    if not success:
        DisplaySelection.exit_now(1)

    success = DisplaySelection.print_title(objID, version, name, searchFile)
    if not success:
        DisplaySelection.exit_now(1)

    ryw.db_print2('<BR>ChapterListFormHandle.py entered.<BR>', 41)

    nameTriple = DisplaySelection.get_file_paths2(
        objID, version, searchFile = searchFile)
    if not nameTriple:
        DisplaySelection.exit_now(1)
    rfpath,chapterListPath,chapterListFullName = nameTriple
    if not rfpath:
        DisplaySelection.exit_now(1)

    ryw.db_print2('ChapterListFormHandle: chapter list file is: ' +
                  chapterListFullName, 41)

    reqList = ShowQueue.read_list(rfpath)
    if not reqList:
        ryw.give_news('This selection is empty.<BR>', logging.info)
        print '<BR>'
        print_links(objID, version, name)
        DisplaySelection.exit_now(0)

    ryw.db_print2('ChapterListForm.py: gotten selection list.', 41)

    success = chapterList.initialize_with_meta_list(
        reqList, searchFile, reverseLists)

    if not success:
        ryw.give_bad_news('ChapterListFormHandle: ' +
                          'initialize_with_meta_list failed.',
                          logging.error)
        DisplaySelection.exit_now(1)

    chapterList.compare_form_entries_against_meta()
    if not chapterList.write_file(chapterListFullName):
        ryw.give_bad_news('ChapterListFormHandle: write_file() failed.',
                          logging.error)
        DisplaySelection.exit_now(1)

    ryw.give_news('chapter list saved.', logging.info)
                              
    ryw_view.print_footer()

    reverseLists.done()
    searchFile.done()
import types
import os.path
import ryw
import logging
import ryw_view



#ObjectStoreRoot = '\\Postmanet\\repository\\WWW\\ObjectStore'
#OriginalSearchFile = "\\Postmanet\\repository\\SearchFile"



ryw.check_logging(os.path.join(RepositoryRoot, 'WWW', 'logs'), 'upload.log')
logging.debug('rebuildSearchFile: entered...')
ryw_view.print_header_logo()
print '<TITLE>Rebuild Search File</TITLE>'

resourcesPath = os.path.join(RepositoryRoot, 'Resources.txt')

try:
    resources = ryw.get_resources(resourcesPath)
    tmpOutDir = ryw.get_resource_str(resources, 'tmpout')
    ObjectStoreRoot = ryw.get_resource_str(resources, 'objectstore')
    OriginalSearchFile = ryw.get_resource_str(resources, 'searchfile')
    if not tmpOutDir or not ObjectStoreRoot or not OriginalSearchFile:
        raise NameError('rebuildSearchFile: failed to get resources.')
except:
    ryw.give_bad_news('rebuildSearchFile: failed to get resources.',
                      logging.error)
    sys.exit(1)
def main():
    """modeled after DisplaySelection.py.
    This is for displaying a form that allows editing the chapter list."""

    name = ShowQueue.init_log()
    ryw_view.print_header_logo()
    print '<TITLE>Edit the Chapter List</TITLE>'

    success,objID,version = ryw.get_obj_str()
    if not success:
        ryw.give_bad_news('ChapterListForm: failed to get objstr.',
                          logging.critical)
        DisplaySelection.exit_now(1)

    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists(
        'DisplaySelection.main:')
    if not success:
        DisplaySelection.exit_now(1)

    print '<BR><B>Edit chapter names for this selection:</B><BR><BR>'

    success = DisplaySelection.print_title(objID, version, name, searchFile)
    if not success:
        DisplaySelection.exit_now(1)

    ryw.db_print2('<BR>ChapterListForm.py entered.<BR>', 38)
    
    nameTriple = DisplaySelection.get_file_paths2(
        objID, version, searchFile = searchFile)
    if not nameTriple:
        DisplaySelection.exit_now(1)
    rfpath,chapterListPath,chapterFullName = nameTriple
    if not rfpath:
        DisplaySelection.exit_now(1)

    reqList = ShowQueue.read_list(rfpath)
    if not reqList:
        ryw.give_news('This selection is empty.<BR>', logging.info)
        print '<BR>'
        print_links(objID, version, name)
        DisplaySelection.exit_now(0)

    ryw.db_print2('ChapterListForm.py: gotten selection list.', 38)

    success,chapterList = ChapterList.create_and_initialize(
        objID + '#' + str(version),
        reqList, searchFile, reverseLists,
        chapterFullName)
    if not success:
        ryw.give_bad_news('ChapterList.create_and_initialize failed: ' +
                          objID + '#' + str(version), logging.error)
        DisplaySelection.exit_now(1)

    page = chapterList.make_form_string()
    print page
    
    ryw_view.print_footer()

    reverseLists.done()
    searchFile.done()
def main():

    name = ShowQueue.init_log()
    ryw_view.print_header_logo()
    print '<TITLE>Browsing Saved Selection</TITLE>'

    success,objID,version = ryw.get_obj_str()
    if not success:
        ryw.give_bad_news('DisplaySelection: failed to get objstr.',
                          logging.critical)
        exit_now(1)

    offsetResult = ShowQueue.get_offset()
    success,isAll,offsetNum = offsetResult
    if not success:
        exit_now(1)

    success,searchFile,reverseLists = \
        ReverseLists.open_searchfile_reverselists(
        'DisplaySelection.main:')
    if not success:
        sys.exit(1)

    success = print_title(objID, version, name, searchFile)
    if not success:
        exit_now(1)

    nameTriple = get_file_paths2(objID, version, searchFile = searchFile)
    if not nameTriple:
        exit_now(1)
    rfpath,chapterListPath,chapterFullName = nameTriple
    if not rfpath:
        exit_now(1)

    reqList = ShowQueue.read_list(rfpath)
    if not reqList:
        ryw.give_news('This selection is empty.<BR>', logging.info)
        print '<BR>'
        print_links(objID, version, name)
        exit_now(0)

    #
    # do this before displaying so that the ReverseLists is
    # properly reflected before we hit the display code.
    #
    result = reverseLists.add(objID + '#' + str(version), reqList)

    #
    # process the chapter list. 10/24/08.
    #
    success,chapterList = ChapterList.create_and_initialize(
        objID + '#' + str(version),
        reqList, searchFile, reverseLists,
        chapterFullName)
    if not success:
        ryw.give_bad_news('ChapterList.create_and_initialize failed: ' +
                          objID + '#' + str(version), logging.error)
        exit_now(1)

    scriptName = '/cgi-bin/DisplaySelection.py?objstr=' + \
                 objID + '%23' + str(version)
    
    success = \
            ShowQueue.go_through_list(reqList,
                                      callBackFunc = delOneSelFunc, 
                                      cBackArg = objID + '#' + str(version),
                                      offResult = offsetResult,
                                      cgiScript = scriptName,
                                      scriptConnectChar = '&',
                                      searchFile = searchFile,
                                      reverseLists = reverseLists,
                                      chapterList = chapterList)

    if success:
        print_links(objID, version, name)
        
    ryw_view.print_footer()

    reverseLists.done()
    searchFile.done()