Skip to content
Snippets Groups Projects
Commit 5cd767a9 authored by Alex Diebold's avatar Alex Diebold
Browse files

_sync() now filters by site as well. 'n/a' experiment is made upon _create()...

_sync() now filters by site as well. 'n/a' experiment is made upon _create() and can be used when an experiment is needed but there is no specific one for whatever needs it. start_time is now required when using _add(). end_time is optional and will default to start_time + filetype.period
parent e880c8e6
Branches
No related tags found
No related merge requests found
......@@ -240,8 +240,25 @@ class File(Base):
def __repr__(self):
return '{} - {} - {} - {} - {} - {}'.format(self.instrument.name, self.experiment.name, self.filetype.name, self.relative_path, self.start_time, self.end_time)
def _parse_data(date_string):
return 0
'''given a string, parse out the date and return a datetime
raise ValueError if string format does not follow supported format structures
'''
def _parse_datetime(date_string):
#check if date follows first format
try:
dt = datetime.strptime(date_string, '%Y-%m-%dT%H:%H:%S')
except ValueError:
#doesn't follow first format, check second format
try:
dt = datetime.strptime(date_string, '%Y-%m-%d')
#doesn't follow second format, raise error
except ValueError:
raise(ValueError('DATE format incorrect'))
#follows one of the two formats, return
return(dt)
'''creates very basic outline of database
......@@ -419,6 +436,12 @@ def _create(args):
Session = sessionmaker(bind=engine)
session = Session()
#make n/a experiment
na_exp = Experiment(name='n/a')
na_exp.experiment_id = 1
session.add(na_exp)
session.commit()
#read from yaml
stream = open('config.yaml')
docs = yaml.load(stream)
......@@ -989,7 +1012,8 @@ def _add(args):
Session = sessionmaker(bind=engine)
session = Session()
inst = session.query(Instrument).filter(Instrument.name == args.instrument).all()
inst = session.query(Instrument).filter(Instrument.name == args.instrument)
inst = inst.filter(Instrument.site.has(name = args.site)).all()
if len(inst) == 0:
raise ValueError('INSTRUMENT does not exist in database')
else:
......@@ -1001,15 +1025,22 @@ def _add(args):
else:
exp = exp[0]
else:
exp = Experiment(name='')
exp = session.query(Experiment).filter(Experiment.name == 'n/a').all()[0]
print(OUTPUT.FILE.value)
i = 0
for f in args.file:
i = i + 1
for ft in inst.filetype:
if glob.fnmatch.fnmatch(f, ft.glob_pattern):
if not args.endtime:
if ft.period == 'Daily':
end_time = args.start_time + timedelta(hours=24)
elif ft.period == 'Half-Daily':
end_time = args.start_time + timedelta(hours=12)
else:
end_time = args.end_time
path = 'data/' + inst.site.name + '/' + inst.name + '/' + f
new_file = File(instrument=inst, experiment=exp, filetype=ft, relative_path=path)
new_file = File(instrument=inst, experiment=exp, filetype=ft, relative_path=path, start_time=args.start_time, end_time=end_time)
print('{} - {}'.format(i, new_file))
session.add(new_file)
break
......@@ -1179,6 +1210,8 @@ def main():
parser_add.set_defaults(func=_add)
parser_add.add_argument('-i', '--instrument', required=True, help='specify instrument')
parser_add.add_argument('-s', '--site', required=True, help='specify site')
parser_add.add_argument('-S', '--start_time', required=True, type=_parse_datetime, help='format as YYYY-mm-dd or YYYY-mm-ddTHH:MM:SS')
parser_add.add_argument('-E', '--end_time', type=_parse_datetime, help='defaults to start_time + period')
parser_add.add_argument('-e', '--experiment', help='specify experiment -- optional')
parser_add.add_argument('-f', '--file', nargs='+', required=True, help='specify files')
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment