def METHOD_NAME(fname,basedir=None,force=False):
    # check database
    if basedir is None:
        print('No basedir supplied, working in current directory...')
        basedir='.'
    workdir=basedir+'/'+fname
    with SurveysDB() as sdb:
        result=sdb.get_observation(fname)
        if result is None:
            print('Observation',fname,'does not exist in the database')
            sys.exit(1)
        if result['status']!='Archived':
            print('Observation',fname,'has status',result['status'])
            if not force:
                return False
        # get the ids of the observations
        sdb.cur.execute('select * from observations where id=%s and (status="DI_processed" or status="Archived")',(fname,))
        obs=sdb.cur.fetchall()
        if len(obs)==0:
            print('No downloadable observations for this field')
            sys.exit(3)
    # now do the download for each field
    overall_success=True
    rclone_works=True
    print(obs)
    for o in obs:
        obsname='L'+str(o['id'])
        print('Downloading observation ID',obsname)
        success=False
        # first try rclone
        for macaroon in ['maca_sksp_tape_spiderlinc.conf','maca_sksp_tape_spiderpref.conf']:
            try:
                rc=RClone(macaroon,debug=True)
            except RuntimeError as e:
                print('rclone setup failed, probably RCLONE_CONFIG_DIR not set:',e)
                rclone_works=False
            if rclone_works:
                try:
                    remote_obs=rc.get_dirs()
                except OSError as e:
                    print('rclone command failed, probably rclone not installed or RCLONE_COMMAND not set:',e)
                    rclone_works=False
            if rclone_works and obsname in remote_obs:
                print('Data available in rclone repository, downloading!')
                d=rc.execute_live(['-P','copy',rc.remote+'/'+obsname,workdir])
                if d['err'] or d['code']!=0:
                    print('rclone found data but download failed')
                else:
                    print('rclone download succeeded')
                    success=True
                    break # out of rclone loop
        if not success:
            # revert to download method
            for prefix in ['','prefactor_v1.0/','prefactor_v3.0/']:
                success=download_dataset('https://lofar-webdav.grid.sara.nl:2880','/SKSP/'+prefix+obsname+'/',workdir=workdir)
                if success:
                    break
                else:
                    print('URL failed, trying alternative')
            if not success:
                print('Download failed')
        overall_success=overall_success and success
    return overall_success