-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrefs.py
More file actions
90 lines (73 loc) · 2.79 KB
/
refs.py
File metadata and controls
90 lines (73 loc) · 2.79 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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
"""refs.py
handles reference models
"""
from logging import getLogger
from json import dumps
import pandas as pd
from .dash_config import MOCK_EPMT_API
if MOCK_EPMT_API:
from . import epmt_query_mock as eq
else:
from epmt import epmt_query as eq
# We log how we want
# pylint: disable=invalid-name, logging-format-interpolation
logger = getLogger(__name__)
def get_refs():
"""
Returns list of references for displaying in table
"""
m = eq.get_refmodels()
return [[nm['id'], nm['name'], nm['created_at'], nm['tags'], nm['jobs'],
['duration', 'cpu_time', 'num_procs'], nm['enabled']] for nm in m]
def make_refs(name='', jobs=None, tags=None, active=True):
"""trash, duplicate unnecissary
"""
# eq.create_refmodel(jobs=['625133','693118','696085'],
# name='Sample', tag={'exp_name':'ESM4_historical_D151','exp_component': 'atmos_cmip'})
nm = eq.create_refmodel(jobs=jobs, name=name, tag=tags, enabled=active)
# logger.error("Create model failed {}".format(e))
# return None
return [[nm['id'], nm['name'], nm['created_at'], nm['tags'], nm['jobs'],
['duration', 'cpu_time', 'num_procs'], nm['enabled']]]
class ref_gen:
"""Generate a list of sample references
ref_gen does data cleanup and conversions for displaying reference models"""
def __init__(self):
# references = make_refs(2)
self.df = pd.DataFrame(get_refs(), columns=['id',
'name', 'date created', 'tags', 'jobs',
'features', 'active'])
# self.df['active'] = np.where(self.df['active'], 'Yes', 'No')
# Reorder
self.df = self.df[['id', 'name', 'active',
'date created', 'tags', 'jobs', 'features']]
def get_references():
"""
Grabs sample reference models
formats them
return: formatted dataframe
"""
models = ref_gen().df
# Ref model initialization data
models['tags'] = models['tags'].apply(dumps) # Dumps stringify's dictionaries
models['jobs'] = models['jobs'].apply(dumps) # Dumps stringify's lists
models['features'] = models['features'].apply(
dumps) # Dumps stringify's lists
return models
def edit_model(model_name, new_jobs, del_original=True):
"""
Accepts primary key model_name and new jobs
Deletes original model then creates new one
Returns ID of new model
"""
orig_model = eq.get_refmodels(model_name)[0]
mname = orig_model['name']
mid = orig_model['id']
mtags = orig_model['tags']
menabled = orig_model['enabled']
mjobs = new_jobs
if del_original:
eq.delete_refmodels(mid)
ret = make_refs(name=mname, jobs=mjobs, tags=mtags, active=menabled)
return ret[0][0]
ref_df = get_references()