Example #1
0
def send_docs(display_bar, docs=[]):
    names = ()
    #-------------------------------------------------
    # Inicializace klienta
    #-------------------------------------------------
    epp = ClientSession()
    if not epp.load_config():
        return
    epp.join_missing_config_messages(options['verbose'])
    
    if len(options['verbose']):
        verbose = epp.set_verbose(options['verbose'])
    else:
        verbose = '1'

    #-------------------------------------------------
    # Apped docs from argv params
    #-------------------------------------------------
    for filepath in option_args:
        if os.path.isfile(filepath):
            docs.extend(split_docs(open(filepath).read()))
        else:
            docs.append((0,'File not found: %s'%filepath))
    #-------------------------------------------------
    # For every loaded document
    #-------------------------------------------------
    if display_bar:
        verbose = epp.set_verbose(0)
        sart_at = time.time()
        bar = None
        bar_pos = 0
        max = len(docs)
        bar_step = (100.0/max)*0.01
        bar_header = '%s: %d'%(_T('Send files'),max)
    epp.print_tag(BEGIN) # enclose leak messages into tag (comment)
    epp.display() # display errors or notes
    for code, xmldoc in docs:
        epp.reset_round()
        if code:
            # Returns command name from XML doc,
            # for check_* commands also grab list of names for sorting output
            command_name = epp.grab_command_name_from_xml(xmldoc)
            if len(command_name):
                if command_name in ('hello','login'):
                    epp.connect() # No problem call connect() if we are connected already.
                elif not epp.is_connected():
                    if not __auto_login__(epp, verbose): break
                if command_name == 'logout':
                    verbose = epp.set_verbose(0) # silent logout
                #-------------------------------------------------
                # when it is online send document
                #-------------------------------------------------
                if epp.is_online(command_name) and epp.is_connected():
                    # send document if only we are online
                    epp.send(xmldoc)          # send to server
                    xml_answer = epp.receive()     # receive answer
                    epp.process_answer(xml_answer) # process answer
                    epp.print_answer()
            epp.display() # display errors or notes
        else:
            if not display_bar:
                print epp.get_formated_message(xmldoc,1) # 0 - note, 1 - ERROR
        if display_bar:
            if bar is None: bar = terminal_controler.ProgressBar(colored_output,bar_header)
            bar.clear()
            bar.update(bar_pos, _T('sending...'))
            bar_pos += bar_step
    epp.print_tag(END) # end of enclosing leak messages
    if display_bar:
        # print final 100%
        note = "Ran test in %.3f sec"%(time.time() - sart_at)
        bar.clear()
        bar.update(1.0, note)

    #-------------------------------------------------
    # END of transmition - automatic logout
    #-------------------------------------------------
    if epp.is_connected():
        epp.set_verbose(0) # Very important! If is not set, it can overwrite outputed data.
        try:
            epp.api_command('logout') # automaticly logout
        except FredError, msg:
            pass # print 'ERROR:',msg