def put(self, node_id): node = None nodes = Node.query.all() # @UndefinedVariable for x in nodes: if x.id == node_id: node = x if node: args = self.reqparse.parse_args() data = args['jps'] #print "JumpPoints: " + data jp_data = json.loads(data) node_jumppoints = node.jumppoints for node_jp in node.jumppoints: db.session.delete(node_jp) for jp in jp_data: new_jp = JumpPoint() lat = float(jp['lat']) lon = float(jp['lng']) location = Location(lat=lat, lon=lon) db.session.add(location) # @UndefinedVariable new_jp.location = location new_jp.position = len(node.jumppoints) + 1 node.jumppoints.append(new_jp) db.session.commit() publish_events(reqType="nodeJumpPoints", rid=node_id) return { 'result': { 'node': node.name, 'nid': node.id, 'id': node.rid, 'msg': 'Test' } }
def addEditNode(node_id): node = None # get choices for node leaders leader_choices = [(0, 'Self')] for x in Node.query.filter_by(leader_id=0): # @UndefinedVariable leader_choices.append((x.id,x.name)) form = NodeForm() form.leader.choices = leader_choices form.leader.default = 0 if node_id is not None: node = Node.query.get(node_id) # @UndefinedVariable if request.method == 'GET': if node is None: form.new.data = True else: form.new.data = False form.id.data = node.id form.name.data = node.name form.rid.data = node.rid form.ip.data = node.ip form.location.lat.data = node.location.lat form.location.lon.data = node.location.lon form.leader.data = node.leader_id jumppoints = [] for jp in node.jumppoints: form.jumppoints.append_entry({"jp_id": jp.id, "lat": jp.location.lat, "lon":jp.location.lon }) goals = [] for goal in node.goals: form.goals.append_entry({"goal_id": goal.id, "lat": goal.location.lat, "lon":goal.location.lon }) elif request.method == 'POST' and form.validate(): # @UndefinedVariable if node is None: #new node has passed validation, add to db location = Location(lat=form.location.lat.data, lon=form.location.lon.data) db.session.add(location) # @UndefinedVariable node = Node(name=form.name.data, leader_id=form.leader.data, location=location, rid=form.rid.data, ip=form.ip.data) db.session.add(node) # @UndefinedVariable db.session.commit() # @UndefinedVariable for index, point in enumerate(form.jumppoints.data): jp = JumpPoint() location = Location(lat=point['lat'], lon=point['lon']) db.session.add(location) # @UndefinedVariable jp.location = location jp.position = int(point['pos']) + 1 db.session.add(jp) node.jumppoints.append(jp) for index, point in enumerate(form.goals.data): goal = Goal() location = Location(lat=point['lat'], lon=point['lon']) db.session.add(location) # @UndefinedVariable goal.location = location goal.position = int(point['pos']) + 1 db.session.add(goal) node.goals.append(goal) db.session.commit() # @UndefinedVariable flash("Node has been created") else: #node has been updated. save updates node.name = form.name.data node.rid = form.rid.data node.ip = form.ip.data location = Location.query.get(node.loc_id) # @UndefinedVariable location.lat = form.location.lat.data location.lon = form.location.lon.data node.location = location node.leader_id = form.leader.data # create a list of all points already included on this path. will be used to determine if # any points were deleted from the list. deleteList = [] for jp in node.jumppoints: deleteList.append(jp.id) for index, jp in enumerate(form.jumppoints.data): if int(jp['jp_id']) == 0: newjp = JumpPoint() location = Location(lat=jp['lat'], lon=jp['lon']) db.session.add(location) # @UndefinedVariable newjp.location = location newjp.position = int(jp['pos']) + 1 db.session.add(newjp) node.jumppoints.append(newjp) else: # found existing point. update and remove from delete list savedjp = JumpPoint.query.get(jp['jp_id']) # @UndefinedVariable savedjp.position = int(jp['pos']) + 1 savedLoc = Location.query.get(savedjp.loc_id) # @UndefinedVariable savedLoc.lat = jp['lat'] savedLoc.lon = jp['lon'] deleteList.remove(int(jp['jp_id'])) for id in deleteList: jp= JumpPoint.query.get(id) # @UndefinedVariable db.session.delete(jp) deleteList = [] for goal in node.goals: deleteList.append(goal.id) for index, goal in enumerate(form.goals.data): if int(goal['goal_id']) == 0: newgoal = Goal() location = Location(lat=goal['lat'], lon=goal['lon']) db.session.add(location) # @UndefinedVariable newgoal.location = location newgoal.position = int(goal['pos']) + 1 db.session.add(newgoal) node.goals.append(newgoal) else: # found existing point. update and remove from delete list savedGoal = Goal.query.get(goal['goal_id']) # @UndefinedVariable savedGoal.position = int(goal['pos']) + 1 savedLoc = Location.query.get(savedGoal.loc_id) # @UndefinedVariable savedLoc.lat = goal['lat'] savedLoc.lon = goal['lon'] deleteList.remove(int(goal['goal_id'])) for id in deleteList: goal= Goal.query.get(id) # @UndefinedVariable db.session.delete(goal) db.session.commit() flash("Node has been updated") # after creating the new state, redirect them back to dce config page return redirect(url_for("nodePage")) return render_template("nodeForm.html", form=form)