-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathempty_obs.py
More file actions
executable file
·60 lines (45 loc) · 1.97 KB
/
empty_obs.py
File metadata and controls
executable file
·60 lines (45 loc) · 1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#!/usr/bin/env python
from config import ConfigClass as cc
from database import DatabaseClass as dc
from obs import ObsClass as oc
import global_functions as gf
def empty_obs( stations, sources ):
for loc in stations:
db_loc_path = obs.get_station_db_path(loc)
db_loc = dc(db_loc_path)
sql = "DELETE from obs"
if mode == "final" and bad_obs:
sql += ";\nDELETE from obs_bad"
if sources:
sql += f" WHERE dataset {dc.sql_equal_or_in(sources)}"
db_loc.exescr(sql)
db_loc.close(commit=True)
return
if __name__ == "__main__":
# define program info message (--help, -h)
info = "Empty all observations according to operation mode and stage"
script_name = gf.get_script_name(__file__)
flags = ("l","v","C","m","M","o","O","d","t","P","S","B")
cf = cc(script_name, pos=["source"], flags=flags, info=info, clusters=True)
log_level = cf.script["log_level"]
log = gf.get_logger(script_name, log_level=log_level)
started_str, start_time = gf.get_started_str_time(script_name)
log.info(started_str)
# define some shorthands from script config
verbose = cf.script["verbose"]
debug = cf.script["debug"]
traceback = cf.script["traceback"]
timeout = cf.script["timeout"]
max_retries = cf.script["max_retries"]
mode = cf.script["mode"]
stage = cf.script["stage"]
output = cf.script["output"]
clusters = cf.script["clusters"]
stations = cf.script["stations"]
bad_obs = cf.script["bad_obs"]
sources = cf.args.source
obs = oc( cf, mode=mode, stage=stage, verbose=verbose )
db = dc( config=cf.database, ro=1 )
stations = db.get_stations( clusters )
db.close(commit=False)
empty_obs( stations, sources )