Changeset 6524


Ignore:
Timestamp:
Dec 30, 2008, 11:01:23 PM (16 years ago)
Author:
RIck van der Zwet
Message:
  • As requested during exodus presentation, CSV exports of nodes and interfaces
Location:
trunk/exodus
Files:
3 edited
1 copied

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/exodus/templates/exodus-template.html

    r6441 r6524  
    1818          &nbsp;&nbsp;<A class="menu" href="{% url advanced_admin exodus %}">Admin</a><br>
    1919          &nbsp;&nbsp;<A class="menu" href="{% url exodus.views.viewNodelist %}">Node List</a><br>
     20          &nbsp;&nbsp;<A class="menu" href="{% url csvIndex %}">CSV Exports</a><br>
    2021          </div>
    2122        </td>
  • TabularUnified trunk/exodus/templates/viewCSVlist.html

    • Property svn:mergeinfo set to
    r6521 r6524  
    33{% block content %}
    44
    5 <P class="blue"> Node List </P>
    6 
    7 {% if nodes %}
     5<P class="blue"> CSV Export List </P>
    86        <table border="3" cellpadding="1">
    9         {% for node in nodes %}
    107                <tr>
    11                         <td class="list" ><a class="list"href="{% url exodus.views.viewNode node.name %}">{{ node.name }}</a></td>
    12                         {% for configFile in configFiles %}
    13                                 <td><a href="{% url exodus.views.configFile "freebsd-5.0" node.name configFile %}">{{ configFile }}</a></td>
    14                         {% endfor %}
     8                        <td class="list" ><a class="list" href="{% url exodus.views.viewNodesCSVlist %}">nodes.csv</a></td>
    159                </tr>
    16 
    17     {% endfor %}
     10                <tr>
     11                        <td class="list" ><a class="list" href="{% url exodus.views.viewInterfacesCSVlist %}">interfaces.csv</a></td>
     12                </tr>
    1813        </table>
    19 {% else %}
    20     <p class="blue"> No nodes are available </p>
    21 {% endif %}
    22 
    2314{% endblock %}
    2415
  • TabularUnified trunk/exodus/urls.py

    r6522 r6524  
    1515    (r'^view/node/(?P<node>.+)/$', 'exodus.views.viewNode'),
    1616    (r'^nagios/$', 'exodus.views.nagios'),
     17
     18    # CSV 'export' views
     19    url(r'^view/csv/$', 'exodus.urls.direct_to_template', {'template': 'viewCSVlist.html'}, "csvIndex"),
     20    (r'^view/csv/nodes.csv$', 'exodus.views.viewNodesCSVlist'),
     21    (r'^view/csv/interfaces.csv$', 'exodus.views.viewInterfacesCSVlist'),
    1722
    1823    # config urls
  • TabularUnified trunk/exodus/views.py

    r6522 r6524  
    11# (c) Roland van Laar 2006
    22
     3import csv
     4from django.http import HttpResponse
    35from django.shortcuts import render_to_response
    46from django.template import RequestContext
    57from socket import gethostname
     8
    69
    710from exodus.models import Node
     
    2225        'resolv.conf' )
    2326    return render_to_response('viewNodelist.html', {'nodes' : nodes,
    24             'configFiles' : configFiles})
     27            'configFiles' : configFiles})
     28
     29def viewNodesCSVlist(request):
     30    response = HttpResponse(mimetype='text/csv')
     31    response['Content-Disposition'] = 'attachment; filename=nodes.csv'
     32    nodes = Node.objects.all()
     33
     34    writer = csv.writer(response)
     35    writer.writerow(['name', 'location', 'longitude', 'latitude', 'masterip'])
     36    for node in nodes:
     37        writer.writerow([node.name, node.location.description, node.location.longitude, node.location.latitude, node.masterip])
     38
     39    return response
     40
     41
     42def viewInterfacesCSVlist(request):
     43    response = HttpResponse(mimetype='text/csv')
     44    response['Content-Disposition'] = 'attachment; filename=interfaces.csv'
     45    nodes = Node.objects.all()
     46
     47    writer = csv.writer(response)
     48    writer.writerow(["iface","node","type","ssid","channel","antenna","polar","direction","mode","ip","netmask","linknode", "linkiface"])
     49    for node in nodes:
     50        for nic in node.interface_set.all():
     51            if nic == nic.link:
     52                mode = 'master'
     53            else:
     54                mode = 'slave'
     55            writer.writerow([nic.iface, node.name, nic.type, nic.ssid, nic.channel,
     56                nic.antenna, nic.get_polar_display(), nic.get_direction_display(),
     57                mode, nic.ip, nic.netmask, nic.link.node, nic.link.iface])
     58    return response
    2559
    2660def configFile(request, version, node, file):
Note: See TracChangeset for help on using the changeset viewer.