Exemplo n.º 1
0
def get_filtered_objects(name):
    filter = get_obj(Filter, name=name)
    objects = filter.filter_objects()
    return jsonify(objects)
Exemplo n.º 2
0
def delete_object(obj_type, name):
    cls = Node if obj_type == 'node' else Link
    obj = get_obj(cls, name=name)
    db.session.delete(obj)
    db.session.commit()
    return jsonify({})
Exemplo n.º 3
0
def delete_user(name):
    user = get_obj(User, name=name)
    db.session.delete(user)
    db.session.commit()
    return jsonify({})
Exemplo n.º 4
0
def get_filter(name):
    return jsonify(get_obj(Filter, name=name).get_properties())
Exemplo n.º 5
0
def view(view_type):
    add_node_form = AddNode(request.form)
    add_link_form = AddLink(request.form)
    view_options_form = ViewOptionsForm(request.form)
    google_earth_form = GoogleEarthForm(request.form)
    scheduling_form = SchedulingForm(request.form)
    scheduling_form.scripts.choices = Script.choices()
    scheduling_form.workflows.choices = Workflow.choices()
    labels = {'node': 'name', 'link': 'name'}
    if 'script' in request.form:
        data = dict(request.form)
        selection = map(int, session['selection'])
        scripts = request.form.getlist('scripts')
        workflows = request.form.getlist('workflows')
        data['scripts'] = [get_obj(Script, name=name) for name in scripts]
        data['workflows'] = [
            get_obj(Workflow, name=name) for name in workflows
        ]
        data['nodes'] = [get_obj(Node, id=id) for id in selection]
        data['user'] = current_user
        task = Task(**data)
        db.session.add(task)
        db.session.commit()
        return redirect(url_for('tasks_blueprint.task_management'))
    elif 'view_options' in request.form:
        # update labels
        labels = {
            'node': request.form['node_label'],
            'link': request.form['link_label']
        }
    elif 'google earth' in request.form:
        kml_file = Kml()
        for node in Node.query.all():
            point = kml_file.newpoint(name=node.name)
            point.coords = [(node.longitude, node.latitude)]
            point.style = styles[node.subtype]
            point.style.labelstyle.scale = request.form['label_size']

        for link in Link.query.all():
            line = kml_file.newlinestring(name=link.name)
            line.coords = [(link.source.longitude, link.source.latitude),
                           (link.destination.longitude,
                            link.destination.latitude)]
            line.style = styles[link.type]
            line.style.linestyle.width = request.form['line_width']
        filepath = join(current_app.ge_path, request.form['name'] + '.kmz')
        kml_file.save(filepath)
    # for the sake of better performances, the view defaults to markercluster
    # if there are more than 2000 nodes
    view = 'leaflet' if len(Node.query.all()) < 2000 else 'markercluster'
    if 'view' in request.form:
        view = request.form['view']
    # we clean the session's selected nodes
    session['selection'] = []
    # name to id
    name_to_id = {node.name: id for id, node in enumerate(Node.query.all())}
    return render_template(
        '{}_view.html'.format(view_type),
        filters=Filter.query.all(),
        view=view,
        scheduling_form=scheduling_form,
        view_options_form=view_options_form,
        google_earth_form=google_earth_form,
        add_node_form=add_node_form,
        add_link_form=add_link_form,
        labels=labels,
        names=pretty_names,
        subtypes=node_subtypes,
        name_to_id=name_to_id,
        node_table={
            obj:
            OrderedDict([(property, getattr(obj, property))
                         for property in type_to_public_properties[obj.type]])
            for obj in Node.query.all()
        },
        link_table={
            obj:
            OrderedDict([(property, getattr(obj, property))
                         for property in type_to_public_properties[obj.type]])
            for obj in Link.query.all()
        })
Exemplo n.º 6
0
def get_logs(name):
    node = get_obj(Node, name=name)
    node_logs = [
        l.content for l in Log.query.all() if l.source == node.ip_address
    ]
    return jsonify('\n'.join(node_logs))
Exemplo n.º 7
0
def show_logs(name):
    task = get_obj(Task, name=name)
    return jsonify(str_dict(task.logs))
Exemplo n.º 8
0
def delete_object(name):
    script = get_obj(Script, name=name)
    db.session.delete(script)
    db.session.commit()
    return jsonify({})
Exemplo n.º 9
0
def filter_pool_objects(name):
    pool = get_obj(Pool, name=name)
    objects = pool.filter_objects()
    return jsonify(objects)
Exemplo n.º 10
0
def delete_pool(name):
    pool = get_obj(Pool, name=name)
    db.session.delete(pool)
    db.session.commit()
    return jsonify({})
Exemplo n.º 11
0
def get_pool_objects(name):
    pool = get_obj(Pool, name=name)
    nodes = str(pool.nodes).replace(', ', ',')[1:-1].split(',')
    links = str(pool.links).replace(', ', ',')[1:-1].split(',')
    return jsonify({'nodes': nodes, 'links': links})
Exemplo n.º 12
0
def get_pool(name):
    return jsonify(get_obj(Pool, name=name).get_properties())
Exemplo n.º 13
0
def delete_log(log_id):
    log = get_obj(Log, id=log_id)
    db.session.delete(log)
    db.session.commit()
    return jsonify({})
Exemplo n.º 14
0
def get_compare(name, v1, v2, n1, n2, s1, s2):
    task = get_obj(Task, name=name)
    res1 = str_dict(task.logs[v1][s1][n1]).splitlines()
    res2 = str_dict(task.logs[v2][s2][n2]).splitlines()
    return jsonify('\n'.join(ndiff(res1, res2)),
                   '\n'.join(unified_diff(res1, res2)))
Exemplo n.º 15
0
def delete_workflow(name):
    workflow = get_obj(Workflow, name=name)
    db.session.delete(workflow)
    db.session.commit()
    return jsonify({})