def get(self): agent = find_agent(self.request) if agent is None: # get 'em all wf_list = { "workflows" : [build_uri(self, key.id()) for key in Workflow.query().iter(keys_only=True)] } else: # just those for agent wf_list = { "workflows" : [build_uri(self, key_id) for key_id in agent.workflows] } self.response.headers['Content-Type'] = 'application/json' self.response.write(json.encode(wf_list))
def post(self): workflow = Workflow(**json.decode(self.request.body)) versions = Workflow.query(Workflow.name == workflow.name).order(-Workflow.version).fetch(1) if any(versions): # bump version to one greater that last known one workflow.version = versions[0].version + 1 new_key = workflow.put() logging.info("Create/update: %s", new_key.id()) if any(versions): # replace earlier with this version in relevant agent workflow sets old_id = versions[0].key.id() for agent in Agent.query(Agent.trackVersion == True, Agent.workflows == old_id): agent.workflows.remove(old_id) agent.workflows.append(new_key.id()) self.redirect('/workflows')