Commit 89f61bb226e079d459098473dee3e486d58c0a3f
1 parent
a1a624db
Exists in
rhitier-dev
New get_default_sta_sto()
Showing
3 changed files
with
51 additions
and
24 deletions
Show diff stats
config.yml
@@ -52,6 +52,8 @@ amda: "http://amda.irap.omp.eu/DDService/getDataUrl.php?dataSet={dataSet}&StartT | @@ -52,6 +52,8 @@ amda: "http://amda.irap.omp.eu/DDService/getDataUrl.php?dataSet={dataSet}&StartT | ||
52 | 52 | ||
53 | defaults: | 53 | defaults: |
54 | input_slug: 'om' | 54 | input_slug: 'om' |
55 | + relative_before: 1 | ||
56 | + relative_after: 1 | ||
55 | 57 | ||
56 | # Data files are in data/catalog/ | 58 | # Data files are in data/catalog/ |
57 | # Constraints are joined by an outer OR and an inner AND | 59 | # Constraints are joined by an outer OR and an inner AND |
web/hp_cmd.py
1 | import sys | 1 | import sys |
2 | 2 | ||
3 | -from run import generate_csv_file_if_needed, init_console_logger, config | 3 | +from run import generate_csv_file_if_needed, init_console_logger, config, get_default_sta_sto |
4 | from datetime import datetime | 4 | from datetime import datetime |
5 | import argparse | 5 | import argparse |
6 | 6 | ||
@@ -27,9 +27,9 @@ if __name__ == "__main__": | @@ -27,9 +27,9 @@ if __name__ == "__main__": | ||
27 | _logger = init_console_logger() | 27 | _logger = init_console_logger() |
28 | 28 | ||
29 | if args.hpcmd_name == 'csv_gen': | 29 | if args.hpcmd_name == 'csv_gen': |
30 | - # todo: build default dates in not -b or -e | ||
31 | - start_date = datetime.strptime(args.begin, '%Y%m%d') | ||
32 | - stop_date = datetime.strptime(args.end, '%Y%m%d') | 30 | + # build default dates in not -b or not -e |
31 | + sta, sto = get_default_sta_sto( args.begin, args.end) | ||
32 | + | ||
33 | if args.all: | 33 | if args.all: |
34 | # build the {target_slug: [input list]} dictionnary from config.yaml | 34 | # build the {target_slug: [input list]} dictionnary from config.yaml |
35 | targets = {t['slug']: list(t['models'].keys()) for t in config['targets']} | 35 | targets = {t['slug']: list(t['models'].keys()) for t in config['targets']} |
@@ -43,4 +43,4 @@ if __name__ == "__main__": | @@ -43,4 +43,4 @@ if __name__ == "__main__": | ||
43 | print(f"generating csv for {_t}/ {_i}") | 43 | print(f"generating csv for {_t}/ {_i}") |
44 | if args.dry_run: | 44 | if args.dry_run: |
45 | continue | 45 | continue |
46 | - generate_csv_file_if_needed(_t, _i, start_date, stop_date) | 46 | + generate_csv_file_if_needed(_t, _i, sta, sto) |
web/run.py
@@ -1082,26 +1082,51 @@ def get_input_slug_from_query(inp=None): | @@ -1082,26 +1082,51 @@ def get_input_slug_from_query(inp=None): | ||
1082 | return input_slug | 1082 | return input_slug |
1083 | 1083 | ||
1084 | 1084 | ||
1085 | -def get_interval_from_query(): | 1085 | +def get_default_sta_sto(sta=None, sto=None): |
1086 | + | ||
1087 | + # TODO : maybe get from configuration | ||
1088 | + relative_after = config['defaults']['relative_after'] | ||
1089 | + relative_before = config['defaults']['relative_before'] | ||
1090 | + before = relativedelta(months=relative_before) | ||
1091 | + after = relativedelta(months=relative_after) | ||
1092 | + | ||
1093 | + if sta is None and sto is None: | ||
1094 | + today = datetime.datetime.now().replace(hour=0, minute=0, second=0) | ||
1095 | + sta_date = today - before | ||
1096 | + sto_date = today + after | ||
1097 | + | ||
1098 | + if sta is None and sto is not None: | ||
1099 | + sto_date = dateparser.isoparse(sto) | ||
1100 | + sta_date = sto_date - before | ||
1101 | + | ||
1102 | + if sta is not None and sto is None: | ||
1103 | + sta_date = dateparser.isoparse(sta) | ||
1104 | + sto_date = sta_date + after | ||
1105 | + | ||
1106 | + return sta_date, sto_date | ||
1107 | + | ||
1108 | + | ||
1109 | +def get_interval_from_query(_req=None): | ||
1086 | """ | 1110 | """ |
1087 | - Get the interval from the query, or from defaults. | 1111 | + Get the interval from the query as flask.request, or from defaults. |
1088 | Returns ISO date strings. | 1112 | Returns ISO date strings. |
1089 | """ | 1113 | """ |
1090 | - before = relativedelta(months=1) | ||
1091 | - after = relativedelta(months=1) | ||
1092 | - today = datetime.datetime.now().replace(hour=0, minute=0, second=0) | ||
1093 | - started_at = today - before | ||
1094 | - stopped_at = today + after | ||
1095 | - default_started_at = started_at.strftime(FILE_DATE_FMT) | ||
1096 | - default_stopped_at = stopped_at.strftime(FILE_DATE_FMT) | ||
1097 | - | ||
1098 | - started_at = request.args.get('started_at', default_started_at) | ||
1099 | - stopped_at = request.args.get('stopped_at', default_stopped_at) | ||
1100 | - | ||
1101 | - d_started_at = dateparser.isoparse(started_at) | ||
1102 | - d_stopped_at = dateparser.isoparse(stopped_at) | ||
1103 | - started_at = d_started_at.strftime(FILE_DATE_FMT) | ||
1104 | - stopped_at = d_stopped_at.strftime(FILE_DATE_FMT) | 1114 | + |
1115 | + sta_default, sto_default = get_default_sta_sto() | ||
1116 | + | ||
1117 | + # convert to string | ||
1118 | + started_at_default = sta_default.strftime(FILE_DATE_FMT) | ||
1119 | + stopped_at_default = sto_default.strftime(FILE_DATE_FMT) | ||
1120 | + | ||
1121 | + if _req is not None and 'Request' == _req.__class__.__name__: | ||
1122 | + started_at_str = _req.args.get('started_at', started_at_default) | ||
1123 | + stopped_at_str = _req.args.get('stopped_at', stopped_at_default) | ||
1124 | + | ||
1125 | + # convert back to proper format | ||
1126 | + started_at_date = dateparser.isoparse(started_at_str) | ||
1127 | + stopped_at_date = dateparser.isoparse(stopped_at_str) | ||
1128 | + started_at = started_at_date.strftime(FILE_DATE_FMT) | ||
1129 | + stopped_at = stopped_at_date.strftime(FILE_DATE_FMT) | ||
1105 | 1130 | ||
1106 | return started_at, stopped_at | 1131 | return started_at, stopped_at |
1107 | 1132 | ||
@@ -1266,7 +1291,7 @@ def home(): | @@ -1266,7 +1291,7 @@ def home(): | ||
1266 | parameters = sorted(parameters, key=lambda x: x['position']) | 1291 | parameters = sorted(parameters, key=lambda x: x['position']) |
1267 | input_slug = get_input_slug_from_query() | 1292 | input_slug = get_input_slug_from_query() |
1268 | targets = [t for t in config['targets'] if not t['locked']] | 1293 | targets = [t for t in config['targets'] if not t['locked']] |
1269 | - started_at, stopped_at = get_interval_from_query() | 1294 | + started_at, stopped_at = get_interval_from_query(request) |
1270 | for i, target in enumerate(targets): | 1295 | for i, target in enumerate(targets): |
1271 | targets[i]['catalog_layers'] = get_catalog_layers( | 1296 | targets[i]['catalog_layers'] = get_catalog_layers( |
1272 | input_slug, target['slug'], started_at, stopped_at | 1297 | input_slug, target['slug'], started_at, stopped_at |
@@ -1771,7 +1796,7 @@ def cache_warmup(): | @@ -1771,7 +1796,7 @@ def cache_warmup(): | ||
1771 | Warms up the cache for the current day. | 1796 | Warms up the cache for the current day. |
1772 | """ | 1797 | """ |
1773 | warmup_started_at = datetime.datetime.now() | 1798 | warmup_started_at = datetime.datetime.now() |
1774 | - sta, sto = get_interval_from_query() | 1799 | + sta, sto = get_interval_from_query(request) |
1775 | inp = config['defaults']['input_slug'] # default input, maybe warm them all up ? | 1800 | inp = config['defaults']['input_slug'] # default input, maybe warm them all up ? |
1776 | 1801 | ||
1777 | targets = get_active_targets() | 1802 | targets = get_active_targets() |