remove duplicate code
This commit is contained in:
parent
43931d7ac8
commit
7a0092c0f4
|
@ -14,6 +14,7 @@ mongo = PyMongo(app)
|
||||||
|
|
||||||
active_connectors = {}
|
active_connectors = {}
|
||||||
|
|
||||||
|
|
||||||
class Root(restful.Resource):
|
class Root(restful.Resource):
|
||||||
def get(self):
|
def get(self):
|
||||||
return {
|
return {
|
||||||
|
@ -25,7 +26,6 @@ class Root(restful.Resource):
|
||||||
class Job(restful.Resource):
|
class Job(restful.Resource):
|
||||||
def get(self, **kw):
|
def get(self, **kw):
|
||||||
id = request.args.get('id')
|
id = request.args.get('id')
|
||||||
timestamp = request.args.get('timestamp')
|
|
||||||
action = request.args.get('action')
|
action = request.args.get('action')
|
||||||
|
|
||||||
if action == "log":
|
if action == "log":
|
||||||
|
@ -33,7 +33,7 @@ class Job(restful.Resource):
|
||||||
|
|
||||||
result = {}
|
result = {}
|
||||||
|
|
||||||
if (id):
|
if id:
|
||||||
return mongo.db.job.find_one_or_404({"_id": id})
|
return mongo.db.job.find_one_or_404({"_id": id})
|
||||||
else:
|
else:
|
||||||
result['timestamp'] = datetime.now().isoformat()
|
result['timestamp'] = datetime.now().isoformat()
|
||||||
|
@ -63,35 +63,13 @@ class Job(restful.Resource):
|
||||||
|
|
||||||
|
|
||||||
class Connector(restful.Resource):
|
class Connector(restful.Resource):
|
||||||
def _build_prop_dict(self, properties, job_obj=None):
|
|
||||||
res = dict()
|
|
||||||
for prop in properties:
|
|
||||||
res[prop] = dict({})
|
|
||||||
res[prop]["default"] = properties[prop]
|
|
||||||
if type(properties[prop]) is int:
|
|
||||||
res[prop]["type"] = "number"
|
|
||||||
elif type(properties[prop]) is bool:
|
|
||||||
res[prop]["type"] = "boolean"
|
|
||||||
elif type(properties[prop]) is dict:
|
|
||||||
res[prop]["type"] = "object"
|
|
||||||
res[prop]["properties"] = self._build_prop_dict(properties[prop], job_obj)
|
|
||||||
else:
|
|
||||||
res[prop]["type"] = "string"
|
|
||||||
|
|
||||||
if job_obj:
|
|
||||||
enum = job_obj.get_property_function(prop)
|
|
||||||
if enum:
|
|
||||||
properties[prop]["enum"] = list(
|
|
||||||
active_connectors[job_obj.connector_type.__name__].__getattribute__(enum)())
|
|
||||||
return res
|
|
||||||
|
|
||||||
def get(self, **kw):
|
def get(self, **kw):
|
||||||
contype = request.args.get('type')
|
contype = request.args.get('type')
|
||||||
|
|
||||||
# if no type given - return list of types
|
# if no type given - return list of types
|
||||||
if not contype:
|
if not contype:
|
||||||
conlist = []
|
conlist = []
|
||||||
checked_con = [] # used for easy checking for reoccurring connectors
|
checked_con = [] # used for easy checking for reoccurring connectors
|
||||||
for jobclass in available_jobs:
|
for jobclass in available_jobs:
|
||||||
if jobclass.connector_type.__name__ not in checked_con:
|
if jobclass.connector_type.__name__ not in checked_con:
|
||||||
checked_con.append(jobclass.connector_type.__name__)
|
checked_con.append(jobclass.connector_type.__name__)
|
||||||
|
@ -107,7 +85,7 @@ class Connector(restful.Resource):
|
||||||
con_prop = con.get_properties()
|
con_prop = con.get_properties()
|
||||||
con_prop["password"] = "" # for better security, don't expose password
|
con_prop["password"] = "" # for better security, don't expose password
|
||||||
|
|
||||||
properties = self._build_prop_dict(con_prop)
|
properties = _build_prop_dict(con_prop)
|
||||||
properties["type"] = {
|
properties["type"] = {
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"enum": [contype],
|
"enum": [contype],
|
||||||
|
@ -172,34 +150,22 @@ class JobCreation(restful.Resource):
|
||||||
return {'status': 'bad state'}
|
return {'status': 'bad state'}
|
||||||
|
|
||||||
if job and job.connector_type.__name__ in active_connectors.keys():
|
if job and job.connector_type.__name__ in active_connectors.keys():
|
||||||
properties = {
|
job_prop = job.get_job_properties()
|
||||||
"type": {
|
properties = _build_prop_dict(job_prop, job)
|
||||||
|
|
||||||
|
properties["type"] = {
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"enum": [job.__class__.__name__],
|
"enum": [job.__class__.__name__],
|
||||||
"options": {"hidden": True}
|
"options": {"hidden": True}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
if (jobid):
|
if jobid:
|
||||||
properties["_id"] = {
|
properties["_id"] = {
|
||||||
"type": "enum",
|
"type": "enum",
|
||||||
"enum": [jobid],
|
"enum": [jobid],
|
||||||
"name": "ID",
|
"name": "ID",
|
||||||
}
|
}
|
||||||
|
|
||||||
job_prop = job.get_job_properties()
|
|
||||||
for prop in job_prop:
|
|
||||||
properties[prop] = dict({})
|
|
||||||
properties[prop]["default"] = job_prop[prop]
|
|
||||||
if type(job_prop[prop]) is int:
|
|
||||||
properties[prop]["type"] = "number"
|
|
||||||
elif type(job_prop[prop]) is bool:
|
|
||||||
properties[prop]["type"] = "boolean"
|
|
||||||
else:
|
|
||||||
properties[prop]["type"] = "string"
|
|
||||||
enum = job.get_property_function(prop)
|
|
||||||
if enum:
|
|
||||||
properties[prop]["enum"] = list(active_connectors[job.connector_type.__name__].__getattribute__(enum)())
|
|
||||||
|
|
||||||
res = dict({
|
res = dict({
|
||||||
"title": "%s Job" % jobtype,
|
"title": "%s Job" % jobtype,
|
||||||
"type": "object",
|
"type": "object",
|
||||||
|
@ -272,6 +238,29 @@ def normalize_obj(obj):
|
||||||
return obj
|
return obj
|
||||||
|
|
||||||
|
|
||||||
|
def _build_prop_dict(properties, job_obj=None):
|
||||||
|
res = dict()
|
||||||
|
for prop in properties:
|
||||||
|
res[prop] = dict({})
|
||||||
|
res[prop]["default"] = properties[prop]
|
||||||
|
if type(properties[prop]) is int:
|
||||||
|
res[prop]["type"] = "number"
|
||||||
|
elif type(properties[prop]) is bool:
|
||||||
|
res[prop]["type"] = "boolean"
|
||||||
|
elif type(properties[prop]) is dict:
|
||||||
|
res[prop]["type"] = "object"
|
||||||
|
res[prop]["properties"] = _build_prop_dict(properties[prop], job_obj)
|
||||||
|
else:
|
||||||
|
res[prop]["type"] = "string"
|
||||||
|
|
||||||
|
if job_obj:
|
||||||
|
enum = job_obj.get_property_function(prop)
|
||||||
|
if enum:
|
||||||
|
res[prop]["enum"] = list(
|
||||||
|
active_connectors[job_obj.connector_type.__name__].__getattribute__(enum)())
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
def output_json(obj, code, headers=None):
|
def output_json(obj, code, headers=None):
|
||||||
obj = normalize_obj(obj)
|
obj = normalize_obj(obj)
|
||||||
resp = make_response(bson.json_util.dumps(obj), code)
|
resp = make_response(bson.json_util.dumps(obj), code)
|
||||||
|
|
Loading…
Reference in New Issue