from taskinit import mstool, tbtool, casalog, write_history

def oldstatwt(vis, dorms, byantenna, sepacs, fitspw, fitcorr, combine,
           timebin, minsamp, field, spw, antenna, timerange, scan, intent,
           array, correlation, obs, datacolumn):
    """
    Sets WEIGHT and SIGMA using the scatter of the visibilities.
    """
    casalog.origin('oldstatwt')
    retval = True
    try:
        casalog.post("The oldstatwt task is deprecated in CASA version 5.8 and is not present in CASA 6.2.  Please use task statwt instead.",'WARN')
        myms = mstool()
        mytb = tbtool()
        
        # parameter check for those not fully implemeted
        # (should be taken out once implemented)
        if byantenna:
          raise ValueError("byantenna=True is not supported yet")
        if fitcorr !='':
          raise ValueError("fitcorr is not supported yet")
        if timebin !='0s' and timebin !='-1s':
          raise ValueError("timebin is not supported yet")
                     
        datacol = 'DATA'
        mytb.open(vis)
        colnames  = mytb.colnames()
        mytb.close()


        for datacol in ['CORRECTED_DATA', 'DATA', 'junk']:
            if datacol in colnames:
                break
        if datacol == 'junk':
            raise ValueError(vis + " does not have a data column")        

        if datacolumn == 'float_data':
           raise ValueError("float_data is not yet supported") 

        if datacolumn == 'corrected' and datacol == 'DATA': # no CORRECTED_DATA case (fall back to DATA)
           casalog.post("No %s column found, using %s column" % (datacolumn.upper()+'_DATA', datacol),'WARN')
           datacolumn = datacol
        else:
           if datacolumn=='corrected':
               datacolumn_name=datacolumn.upper()+'_DATA'
           else:
               datacolumn_name=datacolumn.upper()
           casalog.post("Using %s column to determine visibility scatter" % datacolumn_name)
       
        if ':' in spw:
            casalog.post('The channel selection part of spw will be ignored.', 'WARN')
        
        if len(correlation)>0:
            correlation=''
            casalog.post('Correlation selection in oldstatwt has been disabled as of CASA v4.5', 'WARN')

        myms.open(vis, nomodify=False)
        retval = myms.oldstatwt(dorms, byantenna, sepacs, fitspw, fitcorr, combine,
                             timebin, minsamp, field, spw, antenna, timerange, scan, intent,
                             array, correlation, obs, datacolumn)
        myms.close()
    except Exception, e:
        casalog.post("Error setting WEIGHT and SIGMA for %s:" % vis, 'SEVERE')
        casalog.post("%s" % e, 'SEVERE')
        if False:  # Set True for debugging.
            for p in oldstatwt.func_code.co_varnames[:statwt.func_code.co_argcount]:
                v = eval(p)
                print p, "=", v, ", type =", type(v)
        retval = False

    if retval:
        try:
            param_names = oldstatwt.func_code.co_varnames[:oldstatwt.func_code.co_argcount]
            param_vals = [eval(p) for p in param_names]
            retval &= write_history(myms, vis, 'oldstatwt', param_names, param_vals,
                                    casalog)
        except Exception, instance:
            casalog.post("*** Error \'%s\' updating HISTORY" % (instance),
                         'WARN')        
    return retval