46 lines
1.1 KiB
Python
46 lines
1.1 KiB
Python
import cherrypy
|
|
from photoapp.dbutils import create_db_sessionmaker, cursorwrap
|
|
from photoapp.types import Job, JobTargetType, JobTarget
|
|
|
|
|
|
class JobSubscriber(object):
|
|
"""
|
|
adapter between cherrypy bus and JobsClient
|
|
"""
|
|
def __init__(self, client):
|
|
self.client = client
|
|
cherrypy.engine.subscribe("job-create", self.client.create_job) # TODO make "job-create" a const somewhere?
|
|
|
|
|
|
class JobsClient(object):
|
|
def __init__(self, dbengine):
|
|
self.engine = dbengine
|
|
self.session = create_db_sessionmaker(self.engine)
|
|
|
|
@cursorwrap
|
|
def create_job(self, db, name, targets):
|
|
"""
|
|
targets: list of dict(
|
|
type=JobTargetType.TYPE,
|
|
targets=[1, 2, 3]
|
|
)
|
|
"""
|
|
job_targets = []
|
|
|
|
for target in targets:
|
|
for target_id in target["targets"]:
|
|
job_targets.append(
|
|
JobTarget(target_type=target["type"],
|
|
target=target_id)
|
|
)
|
|
|
|
j = Job(
|
|
job_name=name,
|
|
targets=job_targets,
|
|
)
|
|
|
|
db.add(j)
|
|
db.commit()
|
|
|
|
return j.uuid
|